Cordova アプリで、サイレントモードかどうかを検知できるプラグイン「cordova-silent-mode」が正しく動作しない時の対処法です。
ちなみに、iOS のみ対応しています。
GitHub – khevamann/cordova-silent-mode: Simple mute/not mute checked for Cordova and iOS
https://github.com/khevamann/cordova-silent-mode
現在開発中のアプリでは、ページを開いたタイミングで通知音を鳴らすとき、もし端末がミュートだったらこの通知音を鳴らさないという処理を実装していました。
が、何故かミュート状態かどうかが取得できず…。
ただ、別のタイミングでも通知音は鳴らしているのですが、こちらは動いているんですよね。
ちなみに、コードは下記のような感じです。
SilentMode.init(); SilentMode.isMuted( function() { // ミュートの時の処理 }, function() { // ミュートではない時の処理 });
GitHub に記載されていたサンプルコードをそのまま使用しておりますので、間違いはないはず。
で、色々試してみたところ、ページを表示した時に音を鳴らすタイミングを約 1秒間遅延させたところ、問題なく動作しました!
どうやら、ページが開いた直後に実行していたのがよくなかったみたいです。
場合によっては使えない方法かもしれませんが、今回のアプリでは、遅延させても問題なさそうだったので、こちらの方法を使いました。
あまりスマートではありませんが…動いたので良しとしたいと思います。
以上、Cordova アプリで 端末がサイレントモードかどうかを取得できるプラグイン「cordova-silent-mode」が使えない時の対処法でした。
ご参考になれば幸いです。