ios - 在运行时更改 UIBackgroundModes 音频

标签 ios info.plist

我有一个播放音乐的应用程序,我想启用背景模式。我的音频类别设置为 kAudioSessionCategory_MediaPlayback,如果我在 info.plist 文件内的 UIBackgroundModes 中添加 audio 字符串,它会继续播放音频。到目前为止一切顺利。

现在我想为我的用户提供这个选项,让他们选择是否在后台播放音频。我尝试获取文件并删除 key ,但到目前为止没有任何反应。我所做的是(在由 UIButton 处理的选择器中):

    -(void) disableBackgroundAudio:(UIButton*)button{
        NSDictionary *plistDict = [[NSBundle mainBundle] infoDictionary];
        [plistDict setValue:@"" forKey:@"UIBackgroundModes"];
    }

如果我在控制台之前和之后打印这个值,我可以看到它之前有“音频”,在调用它之后,我得到一个空字符串。但是,如果我随后按下主页按钮,无论我是否禁用音频,音频都会一直播放。

我的猜测是,这可能不是更新 info.plist 文件的方法(尽管我不确定它是否可行)。这可能吗?毕竟我认为让用户选择对我的特定应用来说更好,而且我已经看到其他应用这样做了。

如有任何帮助,我们将不胜感激。

最佳答案

Info.plist 是您应用程序包的一部分。 此 bundle 中的所有文件都是不可变的。

保留 audio 值并在应用程序进入后台时暂停音乐(以防用户关闭该选项)。

关于ios - 在运行时更改 UIBackgroundModes 音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760370/

相关文章:

ios - 在 Swift 3 中的字符串函数外部分配一个变量

ios - swift 中的 UIView viewwithtag 方法

ios - Info.plist : The data couldn’t be read because it isn’t in the correct format

c# - Visual Studio 2017 Info.plist 在选项卡更改后丢失分发目标

ios - 从链接打开应用程序

ios - 无法从 NSString 创建 NSUrl 总是得到 nil

ios - 如何在没有干净构建的情况下创建 XCode 存档

ios - NSKeyedUnArchiver 崩溃

ios - Info.plist |修改版本字符串

ios - xcodebuild 将使用 Xcode 6 和备用包 ID 进行协同签名,但不会使用 Xcode 7