はじめに
FCMの実装方法を調べていて、メッセージの受信権限をリクエストするメソッドであるrequestPermisson
について調べたので、記事にします。
実装方法
公式のドキュメントと同じですが載せておきます。
FirebaseMessaging messaging = FirebaseMessaging.instance;
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
print('User granted permission: ${settings.authorizationStatus}');
引数の説明
APIのドキュメントはこちら
以下に整理しましたが、基本デフォルト値で問題なさそうでした。
引数名 | 説明 |
---|---|
alert | デバイスにプッシュ通知が届いた際に、アラート(ポップアップやバナー)を表示するかどうか 基本はtrueになるはず |
announcement | iOSで使用する値で、SiriがAirPods経由で通知メッセージを自動的に読み上げるかどうか 基本はfalseでいいと思います |
badge | バッジ(アプリアイコンの右上に表示される数字)に未読の通知数を表示するかどうか 基本はtrueでいいと思います |
carPlay | iOSで使用する値で、CarPlayという機能を使用中に通知をするかどうか 基本はfalseでいいと思います |
criticalAlert | 特定の緊急時のアラートに使用し、音量やサイレントモードの設定を無視して通知するかどうか 基本はfalseになるはず |
provisional | iOSで使用する値で、通知を目立たないようにするかどうか(サイレント通知になり、画面に表示されなくなるみたいです) 基本はfalseになるはず |
sound | 通知とともにサウンドを再生するかどうか 基本はtrueでいいと思います |
requestPermissonの動作
iOS
- 初回実行時、許可するかどうかのダイアログが表示される
- 許可した場合: AuthorizationStatus.authorized
- 許可しなかった場合: AuthorizationStatus.denied
- 2回目以降は許可するかどうかのダイアログは表示されず、ステータスだけ取れる
初回で許可しなかった場合に、許可してもらうには設定画面から許可をしてもらう必要がある。
それを促す方法には工夫が必要。
例えば、requestPermissonで取得したステータスがAuthorizationStatus.deniedだったら、ダイアログを表示して、許可してもらうように促すとか?(毎回やるとユーザーがめんどくさがりそう)
Android
TODO