当它在后台运行时,警报在3分钟后没有响铃

时间:2014-04-24 09:07:39

标签: ios

我正在处理警报应用程序。我在过去两周遇到了一个问题。我的问题是:我的应用程序在后台运行。第一次安装应用程序并设置警报&关闭应用程序。如果闹钟时间超过当前时间3分钟,那么3分钟后不振铃意味着在后台进程中没有响铃。如果应用程序已启用,则警报正在运行。

这是我的代码:

   self->bgTask = 0;
   NSAssert(self->bgTask == UIBackgroundTaskInvalid, nil);

   bgTask = [application beginBackgroundTaskWithExpirationHandler: ^
   {
       NSLog(@"beginBackgroundTaskWithExpirat");
       dispatch_async(dispatch_get_main_queue(), ^
       {
           NSLog(@"dispatch_async");
           [application endBackgroundTask:self->bgTask];
           self->bgTask = UIBackgroundTaskInvalid;
       });
   }];

   dispatch_async(dispatch_get_main_queue(), ^
   {
       NSLog(@"dispatch_get_main_queue");
       //Start BG Timer
    [self Start_Update_Timer];
       self->bgTask = UIBackgroundTaskInvalid;
   });

// This is my timer for background running ..
 -(void) Start_Update_Timer
  {
        //If timer is already running, stop the timer
       if(self.callTimer)
       {
          [self.callTimer invalidate];
          self.callTimer=nil;
       }

   //call the timer for every one sec
   self.callTimer =[NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(update_Alarm_List) userInfo:nil repeats:YES];
      [[NSRunLoop mainRunLoop] addTimer:self.callTimer forMode:NSRunLoopCommonModes];
   }

1 个答案:

答案 0 :(得分:2)

因为应用程序不应该像这样工作。如果您希望您的应用程序在后台持续播放声音,则应将其注册为专门执行此操作的应用程序。喜欢音乐播放器。如果您的应用只发送警报,那么您必须使用本地通知来触发"触发"你的应用程序的声音。通知可以播放30秒的声音,并以特定间隔重播。您的应用程序将在3分钟后播放,因为您的背景"执行时间已过期。这是苹果允许您的应用在后台运行的时间,以便在用户关闭您的应用程序后执行您必须执行的操作。

这适用于您希望在后台播放声音的情况。请注意,如果播放停止,您的应用将停止。

https://developer.apple.com/library/ios/qa/qa1668/_index.html#//apple_ref/doc/uid/DTS40010209

如果您想使用声音通知(最多30秒),请参阅此处:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html