3

バックグラウンドで音楽を再生できる音楽プレーヤーアプリケーションを開発しています。音楽が再生されている限り、アプリケーションは終了しませんが、再生が停止され、アプリケーションがバックグラウンドにある場合は、アプリケーションが終了する可能性があります。アプリケーションをよりユーザーフレンドリーにするために、再生キューと、アプリがシステムによって終了されるときの状態を保存したいので、アプリデリゲートに次の行を実装しました。

- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
    /*
     Archive the current queue controller to be able to continue the playback like the app never has been terminated
     when user is launching it again.
     */
    SMKQueueController *queueController = [[UIApplication sharedApplication] queueController];
    [coder encodeObject:queueController forKey:@"queueController"];
    return YES;
}

- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
    /*
     Restore the recently used queue controller to be able to continue the playback like the app never has been
     terminated when use is launching it again.
     */
    SMKQueueController *queueController = [coder decodeObjectForKey:@"queueController"];
    [[UIApplication sharedApplication] setQueueController:queueController];
    return YES;
}

時々(特にダブルタップホームボタンメニューを介して手動で強制終了した場合)、期待どおりに機能することがあります。ただし、アプリケーションの終了時にこのメソッドが呼び出されない場合があります。

だから私の質問は:私はメソッドがどのように機能するのか、またはそれらが何のためにあるのかを誤解しましたか?または、そのような機能を実装するためのより良い場所はありますか?

4

1 に答える 1

2

私はこれがどのように行われるべきかを正確に説明するWWDC2012セッションに参加しました。登録済みのApple開発者の場合は、セッションからビデオにアクセスできます。これは「iOSでのアプリケーション状態の保存と復元」というタイトルです。これは、このトピックに関する非常に有益なセッションであることがわかりました。

于 2013-02-26T00:42:39.403 に答える