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