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 に答える