我想在应用程序转到后台10秒后执行操作,并且在此期间用户未返回应用程序。用户在iOS上关闭应用程序后执行操作
为了这样做,我使用这个代码:
-(void)applicationDidEnterBackground:(UIApplication *)application{
UIBackgroundTaskIdentifier __block bgTask = 0;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self checkSession];
});
}
-(void)checkSession{
sleep(10);
if([[UIApplication sharedApplication] applicationState] != UIApplicationStateActive) {
NSLog(@"Do action after 10 seconds");
}
else{
NSLog(@"Do nothing after 10 seconds");
}
}
的问题是,如果用户终止应用程序同时在后台(通过刷卡,并关闭它),但是之前的10秒钟过去了,该行动将不会被执行,我会看到这篇日志:
<AppDelegate: 0x15557890> ending background task 5
任何想法如何执行这种情况下的行动?
您不能在用户关闭应用程序的情况。 10秒后你试图采取的行动是什么? – Wain
我正在处理用户会话。我将发送一个事件给服务器。我只想在用户未超过10秒的时间内使用该应用时才结束会话。 – Yossi