启动AVAudioSession&后台的AVAudioPlayer使用didReceiveRemoteNotification:fetchCompletionHandler:

时间:2015-12-17 07:30:50

标签: ios apple-push-notifications avaudioplayer alarm avaudiosession

我可以使用静音推送通知在应用程序处于后台时播放AVAudioPlayer吗?

我目前的实施是这样的:

  1. 发送无声推送通知
  2. didReceiveRemoteNotification:fetchCompletionHandler:被触发 然后创建会话然后从那里播放mp3。
  3. 问题是,当您的应用在相当长的时间内没有活动时(例如一晚),会话似乎被取消,如果您从后台模式请求它,则不会发出AVAudioSession,因此{{ 1}}不会播放mp3。

    我正在为紧急事情开发一个警报应用程序,因此即使手机静音并锁定,应用程序也需要发出可听见的声音。

    是否有人遇到任何类似的实施?

1 个答案:

答案 0 :(得分:0)

您的案例中的解决方案是使用UIBackgroundModes键中的“audio”设置,这有效地告诉系统应用程序的主要目的是在后台播放音乐:“应用程序向用户播放可听内容或记录在后台播放音频“。有关详细信息,请参阅此处:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

然而,苹果似乎拒绝使用这种方法的“警报应用程序”,因为警报不能持续播放并且不符合“音频应用”的条件。请参阅此答案:Why did my app get rejected because "Multitasking apps may only use background"?

你可以尝试在大多数时间“玩”沉默,但他们也会拒绝它。

总而言之,您可以通过使用静默推送通知和UIBackgroundModes键在技术上实现此警报应用程序,但此方法违反Apple审核策略。

相关问题