我正在尝试做类似于Tile.app的事情。当它显示通知时,会播放声音。这似乎很简单--使用UILocalNotification
并包括声音文件名。但是本地通知将声音限制在不超过30秒,而Tile的声音持续时间远远超过了这个时间。我猜想它是循环播放的,并且一直持续到我无法忍受噪音为止。
即使手机静音,声音也会播放,这在本地通知中不会发生。因此,UILocalNotification
看起来不适用。
我认为我可以发布一个仅文字的本地通知,并让我的应用程序播放声音。但是使用AVAudioPlayer
,play
方法返回NO
,声音没有播放。
其他问题表明这是有意设计的,即应用程序不能从后台播放声音--只能继续播放已经播放的声音。我会接受那种说法,但Tile却可以做到这一点,所以显然是可能的。一个建议的解决方法以一种我相信Apple现在会检查的方式违反了苹果的指导方针。
一些可能相关的细节:
- 我在Info.plist中使用了
audio
背景模式 - 我在音频会话中使用
AVAudioSessionCategoryPlayback
,而且会话应该处于活动状态(至少setActive:error:
声称成功)。 - 此应用程序使用蓝牙,但目前不使用
bluetooth-central
背景模式。