2017-04-24 15 views
0

私は非常に奇妙な問題があります。Androidでは、API呼び出しには300〜500ミリ秒、iOSでは1.5〜2.5秒かかります。私はサーバ、デバイス固有の問題、インターネット接続などの依存関係を取り除いています。私はサンプルURLにヒットする非常に簡単なサンプルコードを持っています。私にとっては、シミュレータ上でさえ約2秒かかります。ネットワークコールはAndroidよりもiOSで多くの時間がかかります

dispatch_async(dispatch_get_global_queue(0, 0), ^{ 
    NSLog(@"start"); 

    // 1 
    NSURL *url = [NSURL URLWithString:@"https://httpbin.org/get"]; 
    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; 

    // 2 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
    [request setValue:@"" forHTTPHeaderField:@"Accept-Encoding"]; 
    request.HTTPMethod = @"GET"; 

    [[session dataTaskWithRequest:request 
       completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
        // Handle response here 
        NSLog(@"end - %ld", (long)[(NSHTTPURLResponse*)response statusCode]); 
       }] resume]; 
}); 

AFNetworkingライブラリとASSIHTTPライブラリも使用してみましたが、違いはありません。私もヘッダーをチェックしており、AndroidとiOSの両方で同じです。私はここで何か何か間違っているのですか?

+0

こんにちはためNSURLSessionのインスタンスを作成する必要はありません、私は単一のAPIを使用してコードを試してみましたが、それはまだそれだけで500ミリ秒を示し、サーバでの応答時間をチェック、1.62秒かかります。どんな解決策ですか? –

答えて

0

私はあなたの問題は、ネットワーク内ではないと思いますが、この行に: dispatch_async(dispatch_get_global_queue(0, 0), ^{

あなたはそれを削除して、再度確認することができますか?

データタスクは非同期なので、別の非同期ブロックでラップする必要はありません。

また、あなたはすべての要求

+0

応答時間を改善したのは、同じNSURLSessionオブジェクトを使用していることだけです。複数の同時呼び出しに同じNSURLSessionを再利用することはできますか?私はそれが許されないことを疑う。 –

+0

はい、できます。同じホストにリクエストを行うまでは、セッションを再利用することは大丈夫です。言い換えれば、1つのセッション1つのホスト。 – sage444

+0

これは問題だと思われますが、NSURLSessionをすべての呼び出しで再利用する必要がありました。ありがとう。 –

0

リクエストを生成、送信、コールバックして解析する際に、タイムスタンプ(NSLogは既に行ったもの)をログアウトすることができます。

0

サーバーサイドコードは「user-agent」に基づいて処理を行いますか? iOSのサファリとアプリ内でURLを開くと時間差はありますか?

postman(またはfirefox RESTClientなどの別のREST APIテストツール)からapiを呼び出して、iOS値(http://www.enterpriseios.com/wiki/UserAgent)を使用するようにユーザーエージェントを上書きできます。時差が同じであれば、この遅れを修正するためにモバイルコードで何もできません。

P.S. 郵便配達1.オーバーライドユーザエージェントは、いくつかの調整を必要とします:https://github.com/postmanlabs/postman-app-support/wiki/Postman-Proxy

関連する問題