はじめに
業務中にビジネスチームから
「ローカルプッシュ通知だとアプリがキルされていてもプッシュ通知って届くんだっけ?」
「ローカルプッシュ通知を使いたいのだけど、リモートプッシュ通知と比べて制約やデメリットはあるか?」
「ローカルプッシュ通知を使ってもこれって実現できる?」
みたいな雑な質問を受けることはないでしょうか?
これらの質問に対して、毎回調査したり時には検証アプリを作ったりするのですが、
毎回1から調べるとしんどいので、これは主に自分向けのメモ・ナレッジになります。
調査・検証メモ
ローカルプッシュ通知だとアプリがキルされていてもプッシュ通知って届くんだっけ?
結論:「届く」
iOS: iOS16以上あたりなら特に労せずいけそう。サンプルコードに忠実に書けばいける。
この辺りのパラメータの設定は必要。
presentAlert: true,
presentBadge: true,
presentBanner: true,
presentSound: true,
android: WorkManagerなどのコンポーネントを使う必要がある、正確な時間の起動が必要な場合、AlarmManagerが良いが、こちらは制約が厳しい。
ローカルプッシュ通知を使いたいのだけど、リモートプッシュ通知と比べて制約やデメリットはあるか?
ios: (今回の検証範囲ではなし)
android:
- AlarmManagerを使う場合、審査が厳しくなる(スケジュールアプリなどでないといけない)
- Dozeモード時の考慮が必要
- バックグラウンド通知はネイティブの場合、実装が大変そう
ローカルプッシュ通知を使ってもこれって実現できる?
これは個別要件、作ってみて検証するしかないですね。
今回はFlutterのアプリだったので、以下のライブラリを使って検証を行いました。
(なので、上の2つの質問もFlutterの検証をベースにしています。とはいえ、ローカルプッシュ通知はネイティブアプリの要素が強いので、
Flutterかどうかに限った話ではないので)
(flutter_local_notifications)[https://pub.dev/packages/flutter_local_notifications]
まとめ
コードもないので、かなりざっくり、フワッとした記載になってしまいましたが、
完全に自分の備忘録になります。。