如何在您的应用程序与 iWatch 应用程序同步本地数据时延长 iPhone 应用程序的后台过期时间?

how to extend background expiration time of iPhone app while your app is sync local data with iWatch app?

当 iphone 应用程序进入后台模式时,ios 会在 180 秒后自动终止应用程序。如果我们需要在 iphone 应用程序与 iwatch 应用程序之间持续进行数据同步。在这种情况下我们能做什么?

当 iphone 应用程序处于后台且时间已过时,如何在 iphone 和 iwatch 之间持续启用数据同步。

让我们查看更多详细信息。

在这种情况下,我们可以编写以下代码在后台持续执行我们的应用程序。

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];
        }

    });
}

希望对您有所帮助。