アプリケーションがバックグラウンドに送信されようとしているときに、通知を使用して MPMoviePlayerViewController を「クリーンアップ」することになりました。これにより、アプリ デリゲート以外のクラスからアプリがバックグラウンドに送られようとしている時期を検出できます。
そのため、ムービー プレーヤーを作成するときに、アプリケーションがバックグラウンドに移行したときに "クリーンアップ" 関数を呼び出すオブザーバーを追加します。
(サイドノート - ビデオが終了した後にムービービューが自動的に閉じないようにするオブザーバーも使用します。そのようにして、ユーザーは「完了」ボタンを押す必要があります。そのボタンはmoviePlayerCleanupメソッドも呼び出します。これにより、オブザーバーが常に適当に削除)
- (IBAction)buttonVideo:(id)sender {
// Register Movie Player for UIApplicationWillResignActiveNotification
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(moviePlayerCleanup) name: UIApplicationWillResignActiveNotification object: nil];
/*...set video URL, options, add to subview, etc etc here....*/
}
-(void)moviePlayerCleanup{
// Remove the movie player view controller from the ApplicationWillResign notification observers
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];
//Dismiss view
[self dismissMoviePlayerViewControllerAnimated];
}