1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Flutter】FCMのrequestPermissonについて

Last updated at Posted at 2024-04-26

はじめに

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?