我有一个播放音乐的应用,我想启用后台模式。我的音频类别设置为kAudioSessionCategory_MediaPlayback,如果我在info.plist文件中的 UIBackgroundModes 中添加音频字符串,它会继续播放音频。到目前为止一切都很好。
现在我想向用户提供此选项,以选择音频是否在后台播放。我尝试获取文件并删除密钥,但到目前为止没有任何反应。我做的是(在由UIButton处理的选择器中):
-(void) disableBackgroundAudio:(UIButton*)button{
NSDictionary *plistDict = [[NSBundle mainBundle] infoDictionary];
[plistDict setValue:@"" forKey:@"UIBackgroundModes"];
}
如果我在控制台中打印此值,之前和之后,我可以看到它之前有“音频”,在调用之后,我得到一个空白字符串。但是,如果我按下主页按钮,无论是否禁用音频,音频都会一直播放。
我的猜测是,这可能不是更新的方式(虽然我不确定它是否可能)info.plist文件。这有可能吗?毕竟我认为给用户一个选择对我的特定应用程序更好,我已经看到其他应用程序正在做它。
非常感谢任何帮助。
答案 0 :(得分:3)
Info.plist
是应用程序捆绑包的一部分。 此捆绑包中的所有文件都是不可变的。
将audio
值保留在那里,只需在应用程序进入后台时暂停音乐(如果用户关闭了该选项)。
答案 1 :(得分:0)
为什么要这样解决?如果用户不想听到背景音频,只需在应用程序进入后台时关闭音乐......你可能不应该在运行时修改应用程序plist ..
答案 2 :(得分:0)
如果用户不想让后台运行,那么当你的应用程序进入后台时,你不能停止音频吗?此外,如果您希望应用程序在用户不希望后台运行时完全退出,请调用exit(...)函数。
但是在回答你的问题时,你不能在运行时改变背景模式(或info.plist中的任何内容)。