0

デバイスのロックに問題があります。アプリが実行されていてデバイスがロックされている場合、アプリも機能していません。デバイスがロックされていてもアプリを動作させたい。私のコードは次のとおりです。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
 [[UIApplication sharedApplication] setIdleTimerDisabled:NO];

 background = YES;

 UIApplication  *app = [UIApplication sharedApplication];

 bgTask  = [app beginBackgroundTaskWithExpirationHandler:^{
  [app endBackgroundTask:bgTask];
  bgTask = UIBackgroundTaskInvalid;
 }];

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  if (background) {
   StressFreeAlarmViewController *alarmController=[[StressFreeAlarmViewController alloc] initWithNibName:@"StressFreeAlarmViewController" bundle:nil];

   [alarmController setTimer:[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updatingApp) userInfo:nil repeats:YES]];

   background=NO;
  }
 });

}


- (void)applicationDidBecomeActive:(UIApplication *)application
{
 // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
 background = NO;
}
4

3 に答える 3

1

この行にコメントする

 [app endBackgroundTask:bgTask];
 bgTask = UIBackgroundTaskInvalid;


here


 UIApplication  *app = [UIApplication sharedApplication];

 bgTask  = [app beginBackgroundTaskWithExpirationHandler:^{
  //[app endBackgroundTask:bgTask];
  //bgTask = UIBackgroundTaskInvalid;
 }];
于 2012-08-27T12:09:00.633 に答える
1

デバイスがロックされていると、アプリをインストールできません。ただし、アプリがすでにデバイスにある場合は、上記の投稿のように、preventSleepTimerフレームワークを介してロックを防ぐことができます

デバイスがロックされている場合、エラーメッセージは次のようになります:エラー:起動に失敗しました'/Users/venkateswarlun/Library/Developer/Xcode/DerivedData/XXXXXX-celefkdlufzfpexcvbngfwhpwosr/Build/Products/Debug-iphoneos/XXXXXX.app/XXXXXX' --deviceロックされています

于 2012-09-04T08:25:46.750 に答える
0

そのためには、ここでそのための画面ロックを防ぐ必要があります次のコードが使用されます

- (void)startPreventSleep {
    // We need to play a sound at least every 10 seconds to keep the iPhone awake.
    // We create a new repeating timer, that begins firing now and then every ten seconds.
    // Every time it fires, it calls -playPreventSleepSound
    self.preventSleepTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:0]
                                                  interval:10.0
                                                target:self
                                                  selector:@selector(playPreventSleepSound)
                                                  userInfo:nil
                                                   repeats:YES];
    // We add this timer to the current run loop
    NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
    [runLoop addTimer:self.preventSleepTimer forMode:NSDefaultRunLoopMode];
}

stopPreventSleepは睡眠防止を停止します。

- (void)stopPreventSleep {
    [self.preventSleepTimer invalidate];
    self.preventSleepTimer = nil;
}

詳細については、こちらのリンクを参照してください。

于 2012-08-27T12:07:59.467 に答える