私は、プッシュ通知がデバイスに到着したときにサイレントプッシュ通知を使用しており、didReceiveRemoteNotification
を呼び出すことを管理しています。しかし、私はデリゲートが実行されたときに私のコードを実行することができません。以下のコードに基づいて、私はNSLog
の "Print progress 1"を見ることができますが、 "Print progress 2"は表示されません。didReceiveRemoteNotification内でコードを実行できませんfetchCompletionHandler
以下の使用法が不正確かどうかをアドバイスできますか?私はバックグラウンドで仕事の期間を延ばそうとしています。 beginBackgroundTaskWithExpirationHeader
を削除しようとしましたが、コードは実行されません。
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result)) handler {
NSLog(@"Print progress 1");
UIApplication *app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^ {
///..... Background thread codes....
NSLog(@"Print progress 2");
[app endBackgroundTask:bgTask];
handler(UIBackgroundFetchResultNoData);
}];
}