2012-05-02 12 views
2

アプリがバックグラウンドモードに入ると、私のアプリはJSONオブジェクトをダウンロードしています。アプリケーションはそれらをコアデータエンティティに変換します。私が実行している問題は、これらのコアデータエンティティの管理対象オブジェクトコンテキストをメインの管理対象オブジェクトコンテキストにマージする必要があることです。iPhone iOSはバックグラウンドで実行中のアプリで通知を生成して処理しますか?

これらの変更をマージする方法は、通知することです:バックグラウンドで実行されている間、私のコードは、これらの通知を受信しないいくつかの理由

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextHasChanged:) name:NSManagedObjectContextDidSaveNotification object:nil]; 


- (void)contextHasChanged:(NSNotification*)notification 
{ 

    NSLog(@"received notification with object: %@",[[notification object] description]); 
    if ([notification object] == [AppUser managedObjectContext]) return; 

    if (![NSThread isMainThread]) { 
     [self performSelectorOnMainThread:@selector(contextHasChanged:) withObject:notification waitUntilDone:YES]; 
     return; 
    } 

    [[AppUser managedObjectContext] mergeChangesFromContextDidSaveNotification:notification]; 
} 

アプリはバックグラウンドモードで実行中に通知を生成し続けますか?それは間違った通知のためにどこに登録すればいいですか?

ありがとうございます!

答えて

2

アプリは、メインまたはバックグラウンドで通知を送信し続けます。 を監視する必要があります。オブザーバーを追加して通知するときにオブザーバーを解放しないでください。私はimplementaionでいくつかのmistakは、[ホーム]ボタンを押すと、お使いのアプリがサスペンドモードになり、この

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/NSManagedObjectContext.html

+0

おかげでセクションまで、私は私のコードは、バックグラウンドにいる間、通知ベースのコードを処理し続けることが確認されましたモード! (私のためにこれを行うことができるクラスが見つかりました)。 –

+0

私の親愛なる歓迎 – Saad

2

が読むことができるthnk。上記の通知は、アイコンをタップして "目を覚ます"まで処理されません。

アプリが引き続きタスクを実行するためには、バックグラウンドタスクの完了をリクエストする必要があります。 OSは、あなたのアプリケーションが中断する前に何をしているのかを完了するのに最大600秒(10分)を与えます。

あなたはここでそれについての詳細を読むことができます:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

具体的には、上記のリンクにある「バックグラウンド実行とマルチタスク」を探してください。

1

バックグラウンドで受信できる通知の種類には制限があります。また、通知の送信は、バックグラウンドに入る前にスケジュールするものです。

アプリがバックグラウンドに入るときに作業を続ける必要がある場合は、beginBackgroundTaskWithExpirationHandlerも呼び出す必要があります。

主なドキュメントはここにある:

http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

スクロールバックグラウンド実行とマルチタスク

関連する問題