3

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

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

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

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

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

任何帮助将不胜感激。

4

3 回答 3

4

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

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

于 2013-02-07T21:39:56.637 回答
0

为什么要以这种方式解决它?如果用户不想听到背景音频,只需在应用程序进入后台时关闭音乐......无论如何,您可能不应该在运行时修改应用程序 plist..

于 2013-02-07T20:30:52.290 回答
0

如果用户不希望后台运行,您不能在您的应用程序进入后台时停止音频吗?此外,如果您希望您的应用程序在用户不希望后台运行时在后台完全退出,则调用 exit(...) 函数。

但是在回答您的问题时,不,您不能在运行时更改背景模式(或 info.plist 中的任何内容)。

于 2013-02-07T20:31:46.797 回答