应用程序在后台执行任务(收到远程通知后),但未完成完成
问题描述:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
正在调用content-available = 1
。下载任务开始(显示NSLogs
),但它不会完成被调用的任务。只有在将应用程序切换回Foreground时,它才能完成先前调用的任务。应用程序在后台执行任务(收到远程通知后),但未完成完成
任何想法......如何发生这种情况?
答
你必须使用UIBackgroundTaskIdentifier来在后台执行api调用。
- (void)applicationDidEnterBackground:(UIApplication *)application {
isnotificationScreenopen = NO;
UIBackgroundTaskIdentifier bgTaskId =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTaskId];
NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining);
}];
NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining);
}
你也可以读这个链接也
objective c - Proper use of beginBackgroundTaskWithExpirationHandler
澄清你的疑问句,我没有得到..? – vaibhav
你的意思是你的api在后台没有响应? –
当应用程序在后台并且有一个远程推送通知进来时,调用Parse“getObjectsInBackGround”任务。当应用程序处于后台时此任务未完成,但在转换为前台后继续。 – JeeGee