如何在您的应用程序与 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];
}
});
}
希望对您有所帮助。
当 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];
}
});
}
希望对您有所帮助。