目标操作系统:iOS 6+ 设备:仅限手机
我正在创建一个相当简单的定位媒体应用程序。我遇到的一个技术困难是我是否可以用背景音频做我想做的事情。
我在后台成功接收 GPS 位置更新,但我想使用这些更新来触发区域输入时的音频。该应用不会在前台持续播放音频,仅在进入这些围栏时播放音频。
“播放静音”技巧是否仍然可以保持 Audio Session ,Apple 会容忍这种应用程序的使用吗?如果是这样,有人可以提供最近的功能代码吗?
最佳答案
如果您将应用程序设置为还启用背景音频,请在 application:didFinishLaunching:
中如下所示:
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
并在应用程序的 plist 文件中添加音频
作为后台模式
,您的应用程序将继续在后台运行,并在需要时播放声音(例如,当某个位置变化已经发生)。但是,我认为您必须在播放声音时关闭应用程序。
但是,这可能存在问题,因为背景音频适用于实际在后台运行轨道/流的应用程序。我可以想象苹果可能会因为你的应用程序以非预期的方式使用他们的 API 而拒绝你的应用程序。所以这就是玩沉默技巧的问题。
此外,另一个问题可能是,如果用户退出您的应用程序,然后开始通过音乐或任何其他有权访问背景音频、您的应用程序音频的音乐应用程序(Spotify、广播应用程序等)播放音乐权限将被禁用(您的应用程序将无法再通过音频框架播放声音,因为另一个应用程序已经控制了背景音频)。
我推荐的一个选项:当用户更改位置时,用您自己的声音发出本地通知:
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.soundName = @"your-sound-file-name";
关于ios - 由背景位置触发的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529473/