我一直在倾向于关于在iOS中播放音频的背景状态和权限的所有文档,我无法弄清楚特定应用程序在未来的某个特定时间看起来如何唤醒自己并且非捆绑播放声音。我正在研究这个问题,因为我想将这个功能(就像我见过的许多其他功能)添加到我正在构建的应用程序中。
有问题的应用程序是“Alarmy” - 以前“睡觉,如果可以的话”。这是一个闹钟。与应用程序商店中的大多数其他闹钟不同,它可以播放iTunes歌曲作为闹钟声音而根本不在前台。它可以绕过响铃/静音开关,将音量增加到最大,并在看似(或应该)处于后台状态时从本地iTunes库播放预选的歌曲。
我不知道有什么方法可以调查Alarmy在等待闹钟时间时正在做什么,但我可以看到它确实启用了位置服务,启用了蜂窝数据并启用了后台刷新。然而,即使所有这些都在设置中关闭,警报仍然有效并播放iTunes歌曲!我必须假设Alarmy在闹钟时间之前没有播放静音,因为它不会已经通过Apple的提交过程(或者他们可能错过了这个,现在的竞争环境完全不平衡)。
它确实有一个看似有点不合适的功能 - 应用程序显示天气信息。这不一定是完整的毛茸茸 - 我可以看到报警应用程序的一些价值 - 但是它们是否有可能在足够短的时间间隔内查询某些天气API以使应用程序在后台保持清醒直到闹钟时间?如果是,那会是什么样子?此外,天气API可以免费使用一定数量的查询,但它们有很多下载,我承担了很多查询。对于没有IAP的固定价格付费应用程序,这似乎不是一个很好的商业模式。
所以,要结束,恕我直言,这个功能不能来自任何背景音频权限,因为应用程序在进入后台时没有主动播放音频(除非它的沉默,他们只是幸运并通过提交处理);它可能来自于在后台持续刷新应用程序以获取位置/天气服务(然后通过简单的计时器倒计时到闹钟点火时间),但是当警报禁用后台刷新和位置服务时,该功能仍然有效。可能是权限存在,所以即使不允许应用访问位置信息,iOS仍然允许它在后台处于活动状态?
最后一个想法:是否有静音推送技术,他们可能会在事件发生时向应用程序发送通知,并检查是否有时间播放警报音?在黑暗中拍摄......
对此事的任何见解都会有所帮助!我把头发拉出来!我可以编辑这篇文章并添加更多信息 - 即我已经看过哪些资源 - 如果你愿意,但我相当确定我已经查看了所有可能的资源。再次,非常感谢任何帮助。
答案 0 :(得分:5)
他们正在使用音频后台模式,它在info.plist中列出。 他们使用捆绑中的“NoSound.mp3”文件在后台播放静音。 他们还有一个“睡眠音乐”模式,让他们通过AppStore。
有关您可以使用的其他方式,请查看this article。
答案 1 :(得分:2)
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying)
{
NSLog(@"yes itune Player Sound is on");
}
else
{
NSLog(@"NO itune Player Sound is not on");
}