ios - 由背景位置触发的音频

标签 ios objective-c audio background-process geofencing

目标操作系统: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/

相关文章:

android - 获取存储在 android 的 res/raw 文件夹中的 .mp3 文件的 URI

ios - 无法从第二个 View Controller 接收回调

objective-c - 如何使用不同的主键属性更新 RestKit 中的已发布对象?

ios - 计算距离另一对纬度/经度坐标特定距离的纬度/经度坐标

objective-c - iOS:如何让一个小 View 在多个 View 中可见,而不在每个 View 中初始化它?

c++ - 提取 quicktime 文件中的每个音频 channel

android - 板球音频。在播放很多 CkSound 效果时,最好调用 destroy CkSound?

ios - Objective-c 如何从 UITableView 子类中进行 Segue

iphone - "Dirty"和 "Resident"与虚拟内存相关是什么意思?

ios - JWPlayer 中的总时间和耗时 - Objective-C