我正在编写一个应用程序,需要发出声音作为对用户位置变化的反应。
当应用程序在主焦点(而不是在后台)运行时,一切正常并且使用AVAudioPlayer正确播放声音。
如果我让应用程序转到后台(通过按主页按钮)声音继续播放(我已更改info.plist文件并使用 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 使这成为可能)。
我的问题是,如果GPS事件发生时,应用程序已经在后台,声音永远不会播放(即使应用程序返回主焦点也是如此)尽管我可以在控制台中看到GPS事件被捕获,当我使用断点调试时,我可以看到应该播放音乐的代码已经执行,但仍然没有播放音乐。
我的问题是:当应用程序不在主要焦点(它在后台)时,如何让应用程序开始播放声音?
答案 0 :(得分:0)
我认为你不能这样做,因为激活你应用程序的唯一方法是通过通知,这些是按时间进行的,而不是由动作引发的。也许,有一种方法可以使用后台线程,但无论如何都会被Apple拒绝,因此没有任何意义。 HTH, 马库斯
答案 1 :(得分:0)
我认为您只需要将您的应用程序声明为音频应用程序。您可以通过在info.plist文件中添加带有值音频的UIBackgroundMode键来完成此操作。