UILocalNotification如果应用程序在后台,如何调用某些方法

时间:2012-02-04 13:03:32

标签: ios uilocalnotification mode

我正在创建播放器应用程序,它通过互联网播放音频流。我想在我的应用程序中添加闹钟功能 - 特别是我的播放器开始播放音频流的时候,我正在尝试使用UILocalNotification机制。但是当我的应用程序处于后台模式时,我无法使用它,我无法调用“播放”方法,当收到通知时(不能没有用户交互)。可能是不可能的?

但是我买了这个应用程序: http://itunes.apple.com/us/app/radio-alarm-clock-mp3-radio/id380271167?mt=8 当接收到本地通知时,似乎无线电可以开始播放。当我的应用处于后台模式时,闹钟可以开始播放收音机。 早些时候我试图使用NSTimer,但是当我的应用程序进入后台时,计时器停止。如果我使用beginBackgroundTaskWithExpirationHandler:它只能工作10分钟。我的应用程序在plist中有特殊标志,什么是音频应用程序,并且可以在后台播放音乐。在这种情况下,计时器正在工作。但如果我停止播放并转到后台,则计时器无效。 当我使用\ Radio Alarm Clock'应用程序时,我听到来自dinamic的'白噪声',当音乐没有播放时。可能是这个应用程序的秘密? 你能解决我的问题吗?感谢。

2 个答案:

答案 0 :(得分:2)

也许为时已晚。
我查看了你在http://itunes.apple.com/us/app/radio-alarm-clock-mp3-radio/id380271167?mt=8提到的应用程序,是的,我认为你是绝对正确的,实现应用程序保持活动状态的唯一方法是在后台播放假声音苹果应该禁止的背景

我也看到他们没有使用遥控器的iPod控制器,这看起来很奇怪。
最后我的意见是他们做了以下事情:

  
      
  • 避免调用beginReceivingRemoteControlEvents,允许在后台激活iPod控件(事实上他们没有)#CI>   
  • 这样,状态栏不会显示播放图标   该应用播放音频
  •   
  • 当应用程序进入后台时,它可能会定期播放没有声音(例如每10秒播放一次),这样应用就会保持活动状态
  •   
  • 我看到他们也避免了管理中断,例如,如果另一个应用程序在前台并播放音乐。由于这个原因,Apple应该再次拒绝该应用程序,因为它违反了在后台执行的规则,但也许他们在验收测试期间没有看到它。
  •   

所以我的解释是他们故意错过激活iPod控件,只是为了避免在后台显示状态栏中的播放图标。通过这种方式,用户不会意识到应用程序处于活动状态,并且在关闭应用程序后正在做一些奇怪的事情。

此外,您可以看到应用程序不会在另一个应用程序在前台播放声音或音频时中断,因为否则它们可能会导致应用程序在警报发生时不会按时重启。
这只是我对他们如何做到这一点的想法,我认为这是iOS上的音频应用程序在后台保持活动状态的唯一方法,并且应该暂停(好吧,如果Apple没有看到这个技巧) )。

答案 1 :(得分:0)

您是否尝试将此添加到appdelegate.m

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    // Call your method in here.
}

如果你有可以为我们添加代码,看看你在做什么。