2017-10-04 15 views
1

iOS 11、iPhone 6 plusでアプリが遅くなる可能性があります。 (他のiOSが期待どおりに動作します)iOS 11でSecTrustEvaluate()が減速する

私はSecTrustEvaluate()メソッドがアプリケーションを遅くする理由だと知っています。 私はメインスレッドで約3秒かかります。だから私はバックグラウンドスレッドに移動するgcdを使用します。

- (void)URLSession:(NSURLSession *)session didReceiveChallenge(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
     BOOL allowConnect = //Server Trust Evaluation in here 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if (allowConnect) { 
       //completionHandler; 
      } else { 
       //cancel 
      } 
      }); 
     }); 
    } 
} 

次に、UIをブロックしませんが、サーバーの信頼性検証に20秒かかります。
誰かがこの問題を知ることができますか?私を助けてください。ありがとう。

答えて

0

私の問題を構成します。これはiOS 11には関係しません。それは私のせいです。

同じホスト上のセキュリティダウンロードイメージリクエストごとに1つのNSURLSessionを作成します。 TLSセッションは計算コストが高いので、私のアプリは遅くなります。 私のソリューションは、すべてのダウンロード要求に対して1つのセッションのみを作成します。 評価されたサーバー証明書の結果がキャッシュされ、次の要求(同じホスト、ポート上)で評価サーバーを信頼する必要はありません。

さらに詳しい情報: https://developer.apple.com/library/content/qa/qa1727/_index.html

Why is a HTTPS NSURLSession connection only challenged once per domain?

関連する問題