0

目标操作系统:iOS 6+ 设备:仅限手机

我正在创建一个相当简单的定位媒体应用程序。我遇到的一个技术难题是我是否可以用背景音频做我想做的事。

我在后台成功接收 GPS 位置更新,但我想使用这些在区域输入时触发音频。该应用程序不会在前台持续播放音频,只会在进入这些围栏时播放。

“播放静音”技巧是否仍然可以保持音频会话,这是 Apple 可以容忍使用它的应用程序吗?如果是这样,任何人都可以提供最近的功能代码吗?

4

1 回答 1

1

如果您将应用程序设置为也启用背景音频,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";
于 2013-08-30T10:18:36.080 回答