私のアプリのすべてのサーバー接続は同じように進みます:
- 2 番目のスレッドへの dispatch_async。
- sendSynchronousRequest
メインスレッドの失敗/成功ブロック。
以下は完全なコードではなく、概念のみです。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSURL *url = [NSURL URLWithString:@"someURL"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; NSURLResponse *response = nil; NSError *error; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; if (error) { dispatch_async(dispatch_get_main_queue(), ^{ _failureBlock(error); }); } else { dispatch_async(dispatch_get_main_queue(), ^{ _successBlock(data); }); });
さて、アプリはうまく機能します!何千ものサーバー接続に使用でき、アプリの新しいロードを実行すると常に機能します。この問題は、次の場合に発生します。
- アプリを BG に送信します。
- しばらくお待ちください...
- アプリは iOS によって強制終了されます。
- もう一度開くと、iOS はアプリ全体を最初から読み込みます。(スプラッシュ画面に続いて最初の画面を参照してください。私が BG に残した画面ではありません..)
そのシナリオでは、NSURLConnectionErrors が発生します!! それらのすべての種類!Code 1003、Code 1009、Code 9...名前を付けてください。アプリのロード直後に開始されるすべてのサーバー接続でエラーが発生します。その後の他の接続は正常に機能します。失敗したもののリフレッシュも含めて!
サーバーに到達しようとしているのが速すぎる、または早すぎるように感じますが、接続を開始する前に到達可能性テストを確認して合格します。
ここで本当に助けが必要です。 前もって感謝します。
更新: 以下で提案されているように、sendAsynchronousRequestを使用しようとしました - まったく同じ動作が得られました。(エラー: 今回は 1001)。