8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Firebase Cloud Messaging API(V1)でのPushテストの方法

Posted at

概要

以前から利用していたFirebaseのCloud MessagingAPI(レガシー)の期限が迫ってきました。

fcm-expire.png

で、Firebase Cloud Messaging API(V1)に移行が必要なのですが、これをすると困ることがあります。

それは、いままでDebug用のアプリメニューから、Push通知テストを試すコマンドをSlackに送る仕組みを作っていたのですが、その仕組みがそのままでは使えなくなりますし、面倒になります。

ので、その対応の記事です。

何が面倒になる?

レガシーの場合は、Pushのテストをするときに、HttpヘッダーのAuthorization に固定のキーを入れておけばよかったのですが、これからは、アクセストークンに変わります。(セキュリティが強化されました)
アクセストークンは、秘密鍵を使って生成できますが、それをアプリに入れることはできません。
レガシーの頃の固定値のようにDebugアプリにそのまま仕込むことはできません。

詳しくは、以下の移行の方法を確認しましょう。
https://firebase.google.com/docs/cloud-messaging/migrate-v1?hl=ja

今後はどうする?

OAuth 2.0 Playgroundを使えば良いです。
https://developers.google.com/oauthplayground/

こうする

  1. OAuth 2.0 Playgroundで「Cloud Messaging API v1」 を選択し、「Authorize APIs」ボタンを押下します

    スクリーンショット 2024-02-05 17.20.04.png

    ここで、開発で利用しているアカウントで認可しときます。

  2. 次に 「Exchange authorization code for tokens」 ボタンを押下します。押下するとAccess Tokenが設定されます

    スクリーンショット 2024-02-05 17.23.53.png

  3. Request URIに入力します

    Request URI : https://fcm.googleapis.com/v1/projects/プロジェクトID/messages:send
    HTTP Method : POST

    スクリーンショット 2024-02-05 17.31.22.png

    Request URIのプロジェクトIDは、Firebaseコンソールの「全般」にあるプロジェクトIDのことです。

    「Enter Request Body」をタップして、PushテストするためのJSONを入力します。

    たとえば、以下です。
    ここでの<FCM_TOKEN> は、端末のトークンを指定します。そうすれば自分の端末だけにしかPushが届きません。

    {
        "message": {
            "token": "<FCM_TOKEN>",
            "data": {
                "body": "You Got A Notification",
                "title": "You Got A Notification",
            }
        }
    }
    

    つまり、Androidの実装の FirebaseMessaging.getInstance().token で取得成功した時の結果のことです。
    レガシーでは "to" で指定していた値です。ヘッダーで指定するアクセストークンではないので注意です。

    で、最後に 「Send the Request」 ボタンを押下するとPushが送られます。
    (ちなみにレガシーでもこの方法でテストできます)

おまけ

2で取得したアクセストークンを使えば、curlコマンドでも当然、Push通知を送ることができます。
これをデバッグメニューでslackに送り、アクセストークンを入力してcurlで送る運用にすれば、少しステップは増えるけど、今までとそんなに変わらずにテストができそうです。(アクセストークンを取得できるアカウントがないとできませんが...)

$ curl -X POST \
--header "Authorization: Bearer <アクセストークン>" \
--header "Content-Type: application/json" \
https://fcm.googleapis.com/v1/projects/<プロジェクトID>/messages:send -d " \
{ \"message\": {\"token\":\"<FCM_TOKEN>\",
\"data\":{\"body\": \"You Got A Notification\", \"title\": \"You Got A Notification\"}}}"
8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?