2012-04-14 9 views
4

私はデバッグするのが非常に難しい問題があります。私のアプリがWiFiを使用していて、約30分間アイドル状態になると、私が目を覚ましたときに、NSURLConnectionは応答しなくなります。リクエストは送信されますが、返されることはありません。iPhoneアプリのインターネット接続が失われる(NSURLConnectionが返されない)

最初は、これはメモリのバグだと思っていました。インスタンスがあまりにも早くリリースされているため、応答が返されませんでした。しかし、私はバックグラウンドでアプリを置く場合は、3Gは排他的に使用されるように、インターネット接続は魔法のように生命に戻ってすべての保留中のすべての保留中のNSURLConnection秒戻り、完全に使用されるように、WiFiをオフに設定します。

明らかに、これはWiFiを使用している人にとっての問題です。これは実際にWiFiの問題ですか、それとも何か不足していますか? Safariのような別のアプリに行って、WiFiラジオを使って自分のアプリに戻っても問題は解決しない - 接続はまだ返ってこない。私はこれをXcodeでトレースしましたが、アイデアが不足しています。

また、 'Application Uses WiFi' Info.plistフラグがONに設定されています。これはファームウェア5.1です。 は「アプリケーションはWiFiを使用しています」はUIRequiresPersistentWiFiと同じですか?

更新:これはWifiフラグとは関係ありません.5分以内に死ぬことがあります。これまでのところ、私は自分のiPhone 4sで5.1ファームウェアでそれを複製することしかできませんでした。それは実際の解決策ではありませんが、私はそれが何らかの効果を持っているかどうかを確認するために、新しくインストールしてみるために電話を消去しています。私はNSURLConnectionが常にメインスレッドで呼び出され、ブレークポイントはconnection:failedWithError:connection:didReceiveResponse:に設定されていることを確認しました。接続が切断されると、WiFiを無効にして再び有効にしてから、すぐにすべて戻るまで、これらのいずれも戻りません。これはローカルサーバーでも発生し、Webブラウザーでpingを実行するとサーバーは返されます。

+1

あなたは 'UIRequiresPersistentWiFi'フラグを設定しようとしたことがありますか? – esqew

+0

私はそう考えています - 'アプリケーションはWiFiを使用します'はpListファイルにあります。 –

+0

あなたは誤ってメインスレッドをブロックしていますか?バックグラウンドスレッドで同期NSURLConnectionsを使用してみましたか? – magma

答えて

0

NSURLConnectionで実際にデータを送受信していますか?もしそうでなければ、あなたはTCPセッションタイムアウトを打つことが可能でしょうか?ローカルサーバーで問題が解決しなくても、ステートフルなファイアウォール/パケットインスペクターがTCP接続をキャストしている可能性がある場合はそうは思われません。この問題に実行している他のもののために

+0

サブクラス化しているので、NSURLConnectionを実際に提出していない可能性があると思っていました。私はそれを徹底的に調べます。サブクラス化せずにテストすると、それを修正する可能性があります。提案していただきありがとうございます。 –

関連する問題