タイトル通り、今回はアプリ(というより、アプリが実行されている端末?)がオフラインになったことを検知する方法についてです。
現在開発中のアプリは、当然ながらデータ通信が行われているので、アプリ利用時は常にオンラインである必要があるのですが、何らかの原因でオフラインになったときに、それを通知して、ネットワーク環境の確認を促すようにしたかったためです。
今回は、下記のCordovaのページを参考にしました。
オフライン – Apache Cordova
https://cordova.apache.org/docs/ja/3.1.0/cordova/events/events.offline.html
実装方法はとても簡単で、プラグインの追加なども不要!
私の環境では、index.js ファイル内に、下記のコードを追加するだけでした。
document.addEventListener("offline", onOffline, false); function onOffline() { // オフラインの時に実行したい処理 }
サンプルコードを見ると、追加ファイルは index.html である場合もあるようです。
こちらは、開発環境に合わせて変更してください。
あとは、onOffline()
内に実行したい処理を記述すればOKです。
私は、Toast でエラーメッセージを表示しています。
なお、iOS の初回起動時、最初の オフラインイベントは少なくとも起動に 1秒かかりますとのこと。
こちらは仕様のようなので、諦めて受け入れるのが良さそうです。
また、Android や iOS は問題ありませんが、Windows Phone 7 など、端末によっては、オフラインが検知できないこともあるようなので、対応しているか十分注意してください。
…Android と iOS が対応していたら、ほぼほぼ大丈夫だとは思いますけどね。
以上、アプリがオフラインになったことを検知する方法でした。
プラグインも不要なので、実装しておいても良いと思います。