У меня есть следующий код, который делает звонок на сервер, прежде чем приложение вот-вот выйдет. Моя проблема в том, что код иногда работает, иногда нет. В основном нет. Вот код:backgroundTask не заканчивается в iOS
//Set the user as in-active if app is force closed
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
NSLog(@"called");
bgTask = [application beginBackgroundTaskWithName:@"setInActive" expirationHandler:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"disp called");
//If the app is about to exit make the user inactive
[[APIManager sharedInstance] setInActiveOnCompletion:^(BOOL finished){
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
});
}
Первый NSLog вызывается каждый раз. Однако второй - нет. Кажется, что приложение даже не входит в метод dispatch_async
.
EDIT: Так что в основном все, что мне нужно сделать, это сообщить серверу, что пользователь имеет силу выйти из приложения, в то время как этот пользователь был подписан. Как я мог это сделать?
Любые идеи?