現在も引き続き開発中の Cordova アプリを iOS で実行した際、アプリがバックグラウンドになるとビーコンが受信できないという現象が発生していました。
ビーコン受信に使っているのは「cordova-plugin-ibeacon」というプラグインです。
で、どうしてもバックグラウンドで受信したい!との要望があったので、その対策に「cordova-plugin-background-mode」というプラグインをインストールしてみました。
GitHub のページはこちらから。
GitHub – katzer/cordova-plugin-background-mode: Keep app running in background
https://github.com/katzer/cordova-plugin-background-mode
なお、結論から言うと、問題なくバックグラウンドでのビーコン受信を行うことができました!
が、バックグラウンドでも実行しているため、当然ですがメモリの消費は増えます。
あまり重い処理を行うと、バッテリーの消費が早くなったり、端末が熱を持つ可能性もありますので、その点ご了承の上で、実装してください。
インストール方法は、まず下記のコマンドを実行します。
cordova plugin add cordova-plugin-background-mode
インストールが終わったら、deviceready
が発火した後、任意のタイミングでバックグラウンド処理を有効にする記述を追加します。
私はアプリが起動して、メイン画面が表示されるタイミングで実行しています。
そのコードはこちら。
// バックグラウンドを有効にする window.cordova.plugins.backgroundMode.enable(); // 下記の書き方でもOK window.cordova.plugins.backgroundMode.setEnabled(true);
バックグラウンド処理を無効にする時はこちらを実行します。
window.cordova.plugins.backgroundMode.disable(); // または window.cordova.plugins.backgroundMode.setEnabled(false);
バックグラウンド処理が有効かどうか調べたい場合は下記を実行します
const status = window.cordova.plugins.backgroundMode.isActive();
なお、返却される値は true/false
です。
基本的な関数は以上です。
他にも、バックグラウンドの ON/OFF を検知したタイミングで、任意の処理を実行したり、Android 限定ですが、プログラム側からアプリをバックグラウンド/フォアグラウンドに移動させたりすることもできます。
このあたりは、ドキュメントをご確認ください。
以上、Cordova アプリをバックグラウンドでも実行するためのプラグイン「cordova-plugin-background-mode」のご紹介でした。
是非ご活用ください。