Open2

FCMメッセージのオブジェクト構造について

ふじしろふじしろ

FCMメッセージについて

https://firebase.google.com/docs/reference/fcm/rest?hl=ja
概要的なページだが、後述のAPI仕様の詳細を読んだ後に見返してみると、
状況に応じた両OSの設定方法などが割と丁寧に書いてある

send API 仕様

https://firebase.google.com/docs/reference/fcm/rest?hl=ja

ベースとなる構造の上に、Androd用の設定とiOS用の設定オブジェクトが乗っかっている形。
そのうえで、ベースの内容を両OSの設定で個別に上書きして設定することができる。

参考

機械翻訳だとニュアンスが掴みづらいときに日本語のポストはありがたい...
https://zenn.dev/kamimi01/scraps/f5f8a90aa7ae70

ふじしろふじしろ

メモ

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages?hl=ja

  • name: メッセージの識別子
  • data: 任意のkey-valueオブジェクト
  • android: アンドロイド用の設定。
    • collapse_key: 折りたたみキー。
    • priority: 優先度。
    • ttl: オフライン時の保持期間。デフォルト値は4週間(最大値も4週間)。
    • restricted_package_name: アプリのパッケージ名。deeplinkとかでも使うやつ?
    • data: オーバーライドしたりOS固有の操作をするときに使う模様
      • (一部抜粋)
      • channel_id: 通知チャンネルのID
      • click_action: 通知タップ時のアクション。アプリのインテントフィルタと一致させる必要がある
    • notification: オーバーライドしたりOS固有の操作をするときに使う模様
    • fcmoption: analyticsラベルを設定できる。Notification.fcmoptionとの違いは?
  • webpush: webpush用の設定。
  • apns: iOS用の設定。
    • headers: APNsにリクエストする際に用いるHTTPリクエストヘッダーの値。仕様(APNs)
      • apns-push-type: 必須ではないが推奨とのこと(iOS)。このヘッダがない場合、最新の機能が動作しない可能性があるとのこと
      • apns-expiration: 通知の有効期限。android側のttlに相当。デフォルトで30日間。
      • apns-priority: デフォルトは10。
    • payload: APNsに送信するJSONオブジェクトの中身。仕様(APNs)。指定した場合にNotification.bodyをオーバーライドするとの記述があり、androidのdataに近いものと思われる
    • fcm_options: analyticsラベルとimageを設定できる。Notification.fcm_optionとの違いは不明。
  • fcm_options: analytics_labelの設定に利用
    • alnalytics_label: 指定した内容でアナリティクス用のラベルを送信できる