在运行时更改UIBackgroundModes以支持音频。

3
我有一个播放音乐的应用程序,我想启用后台模式。我的音频类别设置为 kAudioSessionCategory_MediaPlayback ,如果我在 info.plist 文件中的 UIBackgroundModes 中添加“音频”字符串,它可以继续播放音频,一切都很好。
现在我希望能给我的用户选择是否在后台播放音频的选项。我尝试获取文件并删除密钥,但目前什么也没有发生。我所做的是(在由 UIButton 处理的选择器中):
    -(void) disableBackgroundAudio:(UIButton*)button{
        NSDictionary *plistDict = [[NSBundle mainBundle] infoDictionary];
        [plistDict setValue:@"" forKey:@"UIBackgroundModes"];
    }

如果我在控制台中打印此值,调用之前和之后,我可以看到它之前是“audio”,但在调用之后,我得到了一个空字符串。然而,如果我随后按下主页按钮,则音频始终播放,无论是否禁用了音频。
我的猜测是这可能不是更新 info.plist 文件的方法(尽管我不确定是否可能)。这种更新方式是否可行?毕竟,我认为向用户提供选择对于我的特定应用程序更好,并且我已经看到其他应用程序这样做。
希望能得到任何帮助。

你有找到其他的解决方法吗?除了被接受的答案以外。 - Jonny
3个回答

4

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

保留 audio 值,当应用程序进入后台时只需暂停音乐即可(以防用户关闭该选项)。


3
我选择这个答案,因为尽管你没有一百万的声望分数,但它基本上是相同的答案,没有态度。谢谢! - Andres Bucci

0
为什么你想要用这种方式来解决它?如果用户不想听背景音乐,只需在应用程序进入后台时关闭音乐即可...你可能不应该在运行时修改应用程序的plist文件。

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接