アプリを配信していたある日*「アプリの通知設定が変更できなくなった」*という事象が発生しました。
通知のON / OFFはできるものの、バイブレーションの切り替えなど詳細な変更ができなくなったとの事です。
対象はAndroid8系以上、通知チャンネルの機能を実装しているバージョンでした。
通知チャンネルとは(簡単な説明)
通知チャンネルはAndroid8から採用された端末で通知を行う際の機能です。
targetSdkVersionをOreoに上げた場合、通知チャンネルを作成して通知を行わないとアプリでの通知が行えなくなります。
■通知の概要
https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ja
この機能より前は、アプリで通知の設定変更画面などを準備し、通知の詳細を変更できるようするのが一般的でした。(しかも結構面倒)
しかしこの機能が登場し、通知チャンネルを作成することで端末の設定画面の各アプリから通知の詳細な設定が行えるようになりました。(アプリから直接設定画面へ遷移させることも可能)
便利だ!!
通知チャンネル自体はたくさんの記事があがっているので、割愛します。
バグの原因:通知チャンネルのID設定がよくなかった
通知の詳細変更ができなくなったというバグ。
原因は、通知チャンネルを生成する際に必要なGroupID
と ChannelID
が一緒だったことでした。
これらを一緒にすると、 通知チャンネルのグループは表示されるが、通知チャンネルの詳細が表示されなくなるらしいです。
解決方法
GroupIDとChannelIDを一緒にしない
当たり前といえば当たり前ですね...元々の実装がよくなかっただけではありますが、こんな落とし穴があるとは...
今回は管理の都合上、GroupIDとChannelIDを全くの一意のものにするのは面倒なので、プレフィックスをつけるなどして解決しました。
皆さんもお気をつけください。
おまけ
通知チャンネルは更新が行えない(一度作った通知チャンネルに再度IDなどをセットしても何も起こらない)ので、一度削除して再度作り直す必要がありました。
この場合、通知設定画面に「〇〇件のカテゴリが削除されました」のように残ります。また、チャンネルの設定は基本的に引き継げるものの、「重要な通知設定」という項目は引き継げないのでご注意ください。(これらの表記は端末によってかなり異なります。)