2015-10-13 1 views
46

Xcode 7.0.1では、「シミュレートバックグラウンド」フェッチコマンドによってperformFetchWithCompletionHandlerが2回トリガされます。PerformFetchWithCompletionHandlerがXcodeでシミュレートするときに2回呼び出される

これはXcodeのデバッグエラーですか?これは、アプリケーションのリリースビルドを実行しているデバイスで発生する可能性があります。

更新 Xcode 7.1.1があり、まだperformFetchWithCompletionHandlerが2回呼び出されています。これが「野生の中で」起こっているかどうかわからないので、フェッチアクションが既に実行中の場合は状態を維持しています。

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler { 
    if (self.performingFetch) { 
     return completionHandler(UIBackgroundFetchResultNoData); 
    } 
    self.performingFetch = YES; 
    ... 
    self.performingFetch = NO; 
} 
+1

いったんバックグラウンドで実行するためにフェッチを取得するブール値を使用して'[application setMinimumBackgroundFetchInterval:]'が起動時に呼び出されるかどうかの確認)。 – Graham

+1

これに関する最新情報はありますか?私も同じことを経験する。 – Marcel

+1

こちらのものはこちら。 xcode 7とios 9 – user3687

答えて

1

私はアプリの委任の静的ブール値を宣言することでこの問題を回避得て、その後、私は関係なく、(同じことを経験してい

if (!runOnce) 
{ 
    [submission startSubmissionProcessWithCompletetionHandler:^(UIBackgroundFetchResult result){ 
     NSDate *fetchStart = [NSDate date]; 

     completionHandler(result); 

     NSDate *fetchEnd = [NSDate date]; 
     NSTimeInterval timeElapsed = [fetchEnd timeIntervalSinceDate:fetchStart]; 
     NSLog(@"Background Fetch Duration: %f seconds", timeElapsed); 
    }]; 
    runOnce = YES; 
} 
else 
{ 
    completionHandler(UIBackgroundFetchResultNoData); 
    runOnce = NO; 
}