2013-03-09 90 views
0

我正在尋找一種方法來處理iPhone應用程序中的定期維護。我們在我們的應用程序中使用Web服務(.Net/C#),最近我們增加了數量的服務器來維護網站上的交通。所以每當網站上傳網站時,他們正在展示網站正在進行定期維護。對於iPhone,我寫下面的代碼來同時處理超時。如何管理iOS應用程序中的計劃維護?

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 

它會在60.0秒後通知用戶。所以用戶正在抱怨凍結 iPhone應用程序。有沒有其他辦法來處理這個問題?或者在定期維護時是否有其他方式打開任何特定的屏幕?

任何幫助將不勝感激!謝謝。

+3

使您的服務器返回一個錯誤代碼,然後處理它。等待60秒是....誹謗 – CodaFi 2013-03-09 06:00:26

+0

如果您可以向普通Web用戶顯示特殊頁面,則可以設置您的服務器以將特殊結果返回給您的應用。正如CodaFi所說的那樣,處理代碼,讓您的應用程序能夠更快速地響應用戶併發送適當的消息。無論如何,請確保您在後臺執行所有Internet訪問。 – rmaddy 2013-03-09 06:09:53

回答

1

的iOS 7提示後臺通知可能會在這種情況下,爲你工作。

1

您需要在單獨的線程上執行此代碼。要做到這一點,最簡單的方法是使用大中央調度,是這樣的:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 

    NSURLResponse *response = nil; 
    NSError *error = nil; 
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 
    NSData *resultData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; 

    // Add code to handle returningResponse. 

    // Error handling 
    if (error != nil) { 
     NSLog(@"An error occured! %@", error); 
    } 
}); 
+1

或者使用'NSURLConnection'的異步版本(舊的委託方式或'sendAsynchronousRequest:queue:completionHandler:')。 – rmaddy 2013-03-09 06:10:31

+1

整潔!甚至沒有注意到......這只是一點點參與,而不是把所有東西都包裝到GCD中。 – 2013-03-09 06:12:07

相關問題