2015-03-13 104 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];