2016-04-27 3 views
-3

iphoneアプリがバックグラウンドモードに入ると、iosは180秒後に自動的にアプリを終了します。私たちがiphone appとiwatch appの間でデータ同期を継続する必要がある場合。このような状況で、私たちは何ができますか?あなたのアプリがiWatchアプリケーションとローカルデータを同期している間に、iPhoneアプリのバックグラウンド有効期限を延長する方法は?

iphoneアプリがバックグラウンドでタイムアウトしたときに、iphoneとiwatchの間で連続的にデータ同期を有効にする方法。

詳しくは、回答を参照してください。

+0

WOSessionのバックグラウンドメソッドを使用している場合、自動的にiPhoneアプリを起動させるため、iOSのバックグラウンド処理は必要ありません。 – Mrug

+0

あなたは正しいです。 iPhoneアプリをバックグラウンドに置くと180秒後にiphoneアプリにアクセスできなくなり、iwatchからiwatchにデータを表示するためにiwatchからリクエストを送信することはありません。 (私たちはiPhoneアプリケーションで使用しているローカルデータベースの場合) –

答えて

-2

私たちは、バックグラウンドで私たちのアプリを継続的に実行するためのコードを以下のように書くことができます。

AppDelegate.h

Bool *isBackground = NO; 
- (void)applicationDidEnterBackground:(UIApplication *)application { 

    NSLog(@"Enter Background"); 

    [self extendBackgroundRunningTime]; //Call function for upadte time 

    NSLog(@"Time Remaining: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]); 

    NSLog(@"%d",_isFromBackground); 
} 

機能

- (void)extendBackgroundRunningTime { 
    if (_isFromBackground != UIBackgroundTaskInvalid) { 
     return; 
    } 
    NSLog(@"Attempting to extend background running time"); 

    __block Boolean self_terminate = YES; 

    _isFromBackground = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"DummyTask" expirationHandler:^{ 
     NSLog(@"Background task expired by iOS"); 
     if (self_terminate) { 
      [[UIApplication sharedApplication] endBackgroundTask:_isFromBackground]; 
      _isFromBackground = UIBackgroundTaskInvalid; 
     } 
    }]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSLog(@"Background task started"); 

     while (true) { 
      NSLog(@"background time remaining: %8.2f", [UIApplication sharedApplication].backgroundTimeRemaining); 
      [NSThread sleepForTimeInterval:10]; 
     } 

    }); 
} 

が、これはあなたを助けることを願っています。

+0

Watch-iOS通信のコードはどこにありますか?あなたの質問が間違っているか、あなたの答えであるか、あなたが最初に決める方が良い。これはバックグラウンドの有効期限が延長され、あなたの質問はバックグラウンドの同期に関するものです。 – Mrug

関連する問題