0

選択したプレイリスト内で曲をシャッフルすることに非常に重点を置いたアプリを開発しています。アプリが起動すると、すべてのユーザーのプレイリストが一覧表示され、1 つを選択すると、それが音楽プレーヤー ビューに読み込まれ、開始されます。私はこれを処理するために MPMusicPlayerController iPodMusicPlayer を使用しています。これは、私が iOS 開発にかなり慣れていないためです。バックグラウンドで音楽を再生し続けたいし、アプリ内で変更した内容が iPod アプリにも反映されるのが気に入っています。しかし、私はユーザーが iPod アプリで何かを変更してから私のアプリに戻れるようにしたくありません。私のアプリはすべてシャッフルに関するものなので、ユーザーは簡単に iPod にアクセスしてシャッフルを無効にしてから、私のアプリに戻ってきて、エクスペリエンスが台無しになる可能性があります。私もしない

これを達成する方法を考えるのを手伝ってくれる人はいますか? 再生/一時停止/スキップ/前へ/音量は iPod 内からは問題ありませんが (可能にしたいのですが)、曲のキューを変更できるようにしたくありません。アプリがバックグラウンドにある間にユーザーが何かを変更したかどうかをキャッチするハンドラーをアプリに追加する方法はありますか (その場合は、音楽を停止してアプリを初期画面にリセットします)。提案をいただければ幸いです。AVPlayerQueue などを使用する前に、このようなことが可能になることを願っています (ちなみに、AVPlayerQueue で DRM ファイルを再生できますか?)。

4

1 に答える 1

0

私がすることは、バックグラウンドでブール値を設定することです。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setBool:YES forKey:@"BACKGROUNDED"];

MPMusicPlayerControllerNowPlayingItemDidChangeNotification次に、そのコントロールを使用できるように実装する必要があるのハンドラーで、次の手順を実行します。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([prefs boolForKey:@"BACKGROUNDED"]) {
    [prefs setBool:NO forKey:@"BACKGROUNDED"];
    exit(0);
}

このコードをいつチェックするか(プロジェクトでいつチェックするかはわかりません)によっては、突然すぎる可能性がありますが、それで目標を達成できるはずです。exit(0)例外をスローせずにアプリを終了する方法です。それは役に立ちましたか?

于 2011-06-16T07:55:38.330 に答える