2015-03-13 66 views
1

在我的应用程序中,我触发了许多GET/POST请求并处理响应。但是,如果我锁定了设备,然后在几秒钟后恢复应用程序,那么只要在启动请求后,响应就不会发生。是否有任何方法可以让请求在后台或设备锁定状态下处于活动状态,直到响应结束。我在iOS中查看了后台执行文档,但似乎在下载或在后台执行某些操作时使用该文档。未能满足我的方案。后台处理响应iOS

回答

0

温应用程序已关闭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

0

如果您注册一个后台任务为每个请求,您的应用程序将保持甚至当设备被锁定,只要请求仍然有效运行。该系统最多只允许4分钟,所以你的请求不会花太长时间。

当您启动一个GET/POST请求,这样做:

__block UIBackgroundTaskIdentifier bgTask = 0; 
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
    [[UIApplication sharedApplication] endBackgroundTask:bgTask]; 
}]; 

然后,存储bgTask某处的GET/POST请求相关。然后,当您的请求完成后,请执行以下操作:

[[UIApplication sharedApplication] endBackgroundTask:bgTask];