Flutterでローカル通知を利用したアラーム系のアプリを作成する場合、flutter_local_notificationsを使うことで簡単に実装することができる。
しかし一点気にすべき点として、スマホアプリの場合電池消費を含む色々な観点から、バックグラウンドでアプリを動作させることについては色々と制限があるっぽい。flutter_local_notificationsについては一応そういったことを考慮し、問題ない形で通知を行うことができる機能を利用して実装されている。
そのため基本的には問題ないのだが、Androidの場合はそれでも問題がある場合がある。通知を行う時間が来ても、アイドル状態だと無視してしまう場合があるとのこと。(参考:Doze とアプリ スタンバイ用に最適化する)
ではどうすればいいかというと、一応flutter_local_notificationsにはそれを考慮してくれるっぽいオプションがある。androidAllowWhileIdleというオプションで、具体的には下記のように使う。
await flutterLocalNotificationsPlugin.schedule(
0,
'scheduled title',
'scheduled body',
scheduledNotificationDateTime,
platformChannelSpecifics,
androidAllowWhileIdle: true,
);
一応flutter_local_notificationsのREADMEにもちらっと書かれてはいるけど、日本にもそれ以外の情報がぜんぜん無いし、実際に使ってみてどうかという声も見当たらなかった。
なので一応使ってみた感じをメモしておくと、今のところはもれなく通知が来ているような気がする。朝起きたときも通知が来ているし(充電しているから判断出来ないのかもしれないが)、日中もスマホを放置している時に通知が来ている気がする。
とはいえあくまで主観なので実際どうかはわからないが。Dozeも浅いDozeや深いDozeがあったりして色々複雑らしいので。(ちなみにiOS側も問題なく来てはいるが、そこまで確認はできていない)
……ということで、通知系アプリはちょっと本当にちゃんと通知されるのかを気にしながら作成はしたほうが良さそう。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント