目前我正在開發一個應用程序,需要多次調用後端服務器。 當在WiFi上的應用程序連接良好,並非常快速地下載數據,但是當3G上的連接看起來有點不穩定並且非常慢。iOS - 連接到後端API服務器時發生3G連接緩慢問題
所以我做了一些非常簡單的測試案例(你在下面找到)。而且NSURLConnection似乎沒有以相同的響應速度獲取數據。
(請注意,我已刪除我連接真實服務器的URL)
測試用例:
的服務器上放置下面的PHP腳本:
<?php echo 'hello world' ?>
搶下iPhone,關閉WiFi並確保它有適當的3G連接。
用下面的Objective-C代碼連接到服務器:
NSURL * url = [NSURL URLWithString:@" http://someserver.com/test.php "];
NSURLRequest * request = [NSURLRequest requestWithURL:url];
NSDate * startDate = [NSDate date];
NSLog(@"START");
NSURLConnection * connection = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"%3.2f", -[startDate timeIntervalSinceNow]);
這將返回在3G - 1.47秒。所以這可能是正常的,如果你第一次使用3G連接,因爲它需要初始化。但現在來了有趣的部分。若您重複調用幾次它返回下列信息:
1.47秒
2.33秒
1.1秒
我有這個使用兩種不同的iPhone和兩個不同的供應商進行測試:T-Mobile公司和KPN。我也嘗試使用NSURLConnection的異步版本,我通常使用它,但是這也會返回相同的結果。 (其他事情我也做過了:檢查Apple的Reachabilty.h,通過ip-number取代服務器url,使用其他服務器並使用了arc4random(),並嘗試使用[NSString alloc] initWithContentOfURL]。所有返回類似的結果,除了當使用iPhone瀏覽器:Safari,它立即作出響應。)
我也測試了類似的東西使用Android手機,但後來我得到一個快速響應500毫秒相同的供應商)。
以前有人遇到過這個嗎?如果是這樣,你是如何解決這個問題的,以及是什麼原因導致連接問題?
@ H2CO3我已經這樣做了:「我也嘗試過使用NSURLConnection的異步版本,我通常使用它,但是這也會返回相同的結果。」 – battleex