FCMのlegacy APIからv1 APIに移行する期限が2024/06/20と、あと1ヶ月程に迫っています。
私は一通り対応し切った”つもり”でしたが、もう一度Googleから来たメールを見直すとTopic登録用に使っていたInstance ID Server API(iid)も対象となっており、無駄に焦ったので備忘録です。
Instance ID Server API for Web | No SDK related to this API. | Latest FCM JS SDK.
↓topicにTokenを登録するため、これらのAPIを使っていた
https://iid.googleapis.com/iid/v1:batchAdd
https://iid.googleapis.com/iid/v1:batchRemove
https://developers.google.com/instance-id/reference/server?hl=ja
(The Instance ID API is deprecated. って上のバーに出てるんだけど。。)
結論
結論から申し上げると、2024/06/21以降もbatchAddを始めとしたiid APIは利用できます。
詳細
ソースはどこか
英語版のQ&Aにあります
https://firebase.google.com/support/faq
(抜粋)
API Name | API Endpoint | Impact on users | Action Required |
---|---|---|---|
Instance ID server APIs | ttps://iid.googleapis.com/v1/web/iid | Requests to the endpoint will start failing after 6/21/2024. | Use an OAuth 2.0 access token derived from a service account. |
Instance ID server APIs | ttps://iid.googleapis.com/iid/* | The endpoints will continue to work but they won’t support authentication using static server keys after 6/21/2024. | Use an OAuth 2.0 access token derived from a service account. |
これ、日本語版のQ&Aにはありません。これで私は3時間溶かしました。
注意点
記載にもあるとおり、OAuth 2.0を使って認証をしなくてはなりません。
(serverKeyによる認証が弾かれるようになります。)
余談
自分の移行対応
移行前
PHP内でPush通知を実装
- 送信はlegacyAPIへcurlリクエスト(「トークン1000件」+「メッセージ」を対象者分ループ)
移行後
同じくPHP内でPush通知を実装
-
topic登録
- v1 APIはtokenのグループ化(デバイスグループ/topic登録)が出来ないので、iidAPIを利用
1000件ごとに対象者のTokenをv1:batchAddで追加していく。
注意: デバイス グループ メッセージングを使用するアプリでは、引き続き以前の API を使用してデバイス グループの管理(作成、更新など)を行う必要があります。HTTP v1 はデバイス グループへのメッセージ送信には対応していますが、管理はサポートしていません。
この辺の実装方法はググるとすぐ出てくるので割愛いたします。
- v1 APIはtokenのグループ化(デバイスグループ/topic登録)が出来ないので、iidAPIを利用
-
push送信
- v1 APIを利用
google clientをcomposer installして導入
client越しにAuth通して、得られたhttpClientにTopicやPush通知内容を指定してFCM側にリクエスト
参考にさせていただいたエキサイト株式会社様の記事(末尾にリンク貼りました)が参考になったというかほぼそのままで実装できました。
- v1 APIを利用
参考にさせていただいたページ
最後に
エンジニアたるもの日本語ドキュメントを信用するのはやめるべし(自戒)