シンプル体重管理」のリマインダー機能で、バイブレーションのオン・オフがAndroid 8以降の端末で動かないことに気がつき、いろいろと調査したところ、通知チャンネルを作成して管理するとのことでした。


バイブレーションのオン・オフが動かない理由もわかりました。

通知チャネルを作成した後に、通知の動作を変更することはできません。その時点ではユーザーが完全にコントロールします。ただし、チャネルの名前と説明はデベロッパーが変更できます。

現状、cordova-plugin-local-notificationプラグインはいくつか問題があるので、改造にチャレンジしてみました。

「シンプル体重管理」の前バージョンはkatzer氏が開発したプラグインを使用していましたが、Android 8以降で実行すると「Default channel」という名称の通知チャンネルが作成されてしまいます。


それを解決するため、Steffaan氏が通知チャンネルの名称を設定できるように改造しましたが、こちらは初めて通知が発生した場合に通知チャンネルが登録される仕組みとなっており、これではユーザーが通知前にバイブレーションの設定を行うことができません。


改造点は以下のとおりです。

  1. Android 8以降の端末に登録された通知チャンネル「Default channel」を削除する。
  2. schedule()を実行するとき通知チャンネルを作成する。

※Android 7までの端末には影響ありません。

local-notification.js

LocalNotification.java

Manager.java

TriggerReceiver.java

シリコンパワー デスクトップPC用メモリ DDR4-2666(PC4-21300) オーバークロック 8GB×2枚 永久保証 SP016GXLZU266BDA

新品価格
¥9,991から
(2020/5/5 18:00時点)

【Cordova】cordova-plugin-local-notificationプラグインの問題点を解決する
Tagged on: