ジオフェンシングデリゲートメソッドdidExitRegionとすべてのアプリケーション状態(前景/背景/懸濁し、倒した状態)のために働いてdidEnterRegion殺さ/サスペンド状態からウェイクアップ後3つの同期のAPI。いずれかの領域が一度通過すると、アプリケーションは3つの相互依存するAPIを同期してヒットする必要があります。すべてがフォアグラウンド状態で正常に動作していますが、は中断/強制終了状態ではありません。この失敗の正確な理由を知らないでください。火災アプリケーションが
このような場合(kill/suspended状態)のすべてのタスクを実行するために、1つの理由が起床時間制限に制限される場合があります。私は試しましたbeginBackgroundTaskWithExpirationHandlerが、私を助けていません。
- (void) beginBackgroundUpdateTask{
_backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
- (void) endBackgroundUpdateTask{
[[UIApplication sharedApplication] endBackgroundTask:_backgroundTask];
_backgroundTask = UIBackgroundTaskInvalid;
}
- (void)locationManager:(CLLocationManager *)manager
didEnterRegion:(nonnull CLRegion *)region
{
[kSharedAppDelegate beginBackgroundUpdateTask];
NSString *locId = [region.identifier substringFromIndex:1];
Recipe *recipe = [Recipe getSelectedReturnRecipeForLocationId:locId];
if(recipe)
{
[self callAPIOne:^(NSDictionary *dictResponse) {
[self callAPITwo:params forAbc:NO];
} withFailed:^(NSDictionary *dictResponse) {
[kSharedAppDelegate endBackgroundUpdateTask];
} showLoader:NO];
}
else
[kSharedAppDelegate endBackgroundUpdateTask];
}
私がここで間違っていることについて助言をお持ちの方は、助けてください。先にありがとう
あなたが完了したら、 'アップデートのすべてをendBackgroundUpdateTask'を呼び出して、最終的な完成ハンドラからそれを呼び出す必要が – Paulw11
@ Paulw11はい、私は一度、すべてのタスクがcallAPITwo内に完了endBackgroundUpdateTask、呼ばれています: – Yogendra
あなたはアプリを入れて、pushkitを参照さ持っているがAppleからの事前の許可を得て特定のカテゴリであなたを許可します。 – Hasya