到達可能性ステータスが変化したときにのみメッセージを表示する到達可能性の例をたくさん見ます。
しかし最近、Foursquare アプリで、ユーザーがインターネット接続を必要とするアクションを実行しようとするたびにメッセージが表示されるのを見ました。
これは、インターネットなしでは何もできないことをユーザーに思い出させるための、より堅牢で優れた UX だと思います。主な理由は、ユーザーがアプリを切り替えたり、別のことをしたり、戻ってきたときに接続がないことを忘れたりできるからです。
また、接続が回復するとすぐに、インターネットからデータを取得して UI を更新していることがわかります。
私が本当に探しているのは、これを行うための最良の方法です。これはどのように行われますか?
接続が必要になるたびに到達可能性をチェックする一般的な UIViewController がありますか?
それとも、各インターネット リクエストの前に、リクエストをキャンセルしてメッセージを表示する一種のプロキシ クラスがありますか? 皆さんはどのように対処していますか?
ありがとう。
編集:
私が思いついた解決策は、ボックス内の到達可能性ステータスも提供する AFNetworking を使用することです。
基本的に、私は AFHTTPClient を作成し、それに到達可能性コールバック ブロックを設定して、ステータスの変化をリッスンしました。AFHTTPClient オブジェクトはアプリケーション全体です (一種のシングルトン)。(実際には、a.com、b.com に到達する必要があるホストごとに 1 つの AFHTTPClient があります ...)。
次に、リクエストを実行する必要がある場合は、新しい AFHTTPRequestOperation (私の場合は AFJSONRequestOperation) を作成し、それを AFHTTPClient オブジェクトのキューに入れます。networkReachabilityStatus
操作の失敗ブロックで、AFHTTPClientのプロパティを使用してホストに到達できるかどうかを確認します。到達できない場合は、ユーザーへのインターネット接続がないというメッセージを表示します。
操作を作成するたびにこれを行う必要がないようにまとめました。そのため、アプリでは、接続がないときにユーザーが何かをしようとするたびに、インターネットにアクセスできないことを思い出させるメッセージが表示されます。
また、接続が回復したら (または、接続を確立する必要がある場合)、到達可能性コールバックを使用して画面にデータをリロードします。
これがベスト プラクティスかどうかはわかりませんが、新しい接続が利用可能になるとすぐに、アプリが重要なデータを再読み込みしてくれることを知っておくとよいと思います。
誰かがサンプル コードに興味を持っている場合は、それを提供できます。