App“Alarmy”能够从背景状态播放iTunes歌曲…怎么样?

我一直在关于在iOS中播放audio的背景状态和权限的所有文档,我无法弄清楚特定的应用程序如何在未来的特定时间看似唤醒自己,并播放非捆绑的声音。 我正在研究这个问题,因为我想添加这个function(就像我见过的许多其他function)到我正在构build的应用程序。

有问题的应用程序是“Alarmy” – 以前是“如果可以,就睡觉”。 这是一个闹钟。 与应用程序商店中的其他大多数闹钟不同,它可以播放iTunes歌曲作为闹钟声,而不必处于前台。 它可以绕过戒指/无声开关,将音量提高到最大,并且在表面上(或应该)处于后台状态时,从本地iTunes库中播放预选歌曲。

我不知道有什么方法可以调查Alarmy在等待闹钟的时间里做了些什么,但是我可以看到它已经启用了定位服务,启用了蜂窝数据,并启用了后台刷新。 但是, 即使所有这些设置closures,闹钟仍然工作,并播放iTunes歌曲! 我不得不假设,在闹钟时间之前,Alarmy并没有沉默,因为它不会通过苹果的提交过程(或者他们错过了这一点,现在的游戏场地完全不平衡)。

它有一个function似乎有点不合适 – 应用程序显示天气信息。 这不一定是完整的绒毛 – 我可以看到一个报警应用程序的一些价值 – 但是有可能,他们正在查询一些天气API足够短的时间间隔,以保持应用程序清醒,直到闹钟时间? 如果是,那会是什么样子? 此外,天气API可以免费使用多达一定数量的查询,但是他们有很多的下载,我承担了很多的查询。 对于没有IAP的固定价格的应用程序,这似乎不是一个伟大的商业模式。

所以,总结,恕我直言,这个function不能来自任何背景audio权限,因为应用程序进入后台时不积极播放audio(除非它的沉默,他们只是幸运,溜过提交过程); 它可能来自不断刷新应用程序的位置/天气服务的背景(然后通过一个简单的计时器倒计时到报警火灾时间),但function仍然工作时,后台刷新和位置服务是禁用的报警。 难道是权限在那里,所以尽pipe应用程序不允许访问位置信息,iOS仍然允许它在后台处于活动状态?

最后一个想法是:是否有一种无声的推送技术,可以在事件发生时向应用程序发出通知,并检查是否应该播放闹钟铃声? 在黑暗中拍摄…

任何对这个问题的深入了解都会有帮助! 我把头发拉出来! 如果你喜欢,我可以编辑这篇文章并添加更多的信息 – 也就是我已经看过的资源,但是我相当肯定我已经查看了所有可能的资源。 再次,非常感谢任何帮助。

他们正在使用audio背景模式,它在info.plist中列出。 他们使用捆绑包中的“NoSound.mp3”文件在后台播放静音。 他们也有一个“睡眠音乐”模式让他们通过AppStore。

对于您可以使用的其他方式,请查看这篇文章 。

if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) { NSLog(@"yes itune Player Sound is on"); } else { NSLog(@"NO itune Player Sound is not on"); }