后台处理响应iOS
问题描述:
在我的应用程序中,我触发了许多GET/POST请求并处理响应。但是,如果我锁定了设备,然后在几秒钟后恢复应用程序,那么只要在启动请求后,响应就不会发生。是否有任何方法可以让请求在后台或设备锁定状态下处于活动状态,直到响应结束。我在iOS中查看了后台执行文档,但似乎在下载或在后台执行某些操作时使用该文档。未能满足我的方案。后台处理响应iOS
答
温应用程序已关闭applicationDidEnterBackground被调用,所以把这个后台任务代码。把计时器或校准功能你想要什么。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
0),
^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
//// just u call the method want ever u want example
[self notification];
// (or) timer
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(notification:)
userInfo:nil
repeats:YES];
}
我认为这是帮助FUL到u
答
如果您注册一个后台任务为每个请求,您的应用程序将保持甚至当设备被锁定,只要请求仍然有效运行。该系统最多只允许4分钟,所以你的请求不会花太长时间。
当您启动一个GET/POST请求,这样做:
__block UIBackgroundTaskIdentifier bgTask = 0;
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];
然后,存储bgTask某处的GET/POST请求相关。然后,当您的请求完成后,请执行以下操作:
[[UIApplication sharedApplication] endBackgroundTask:bgTask];