【Swift】Firebase Cloud MessagingでHTTP v1を使用してリモート通知を発火する方法

【Swift】Firebase Cloud MessagingでHTTP v1を使用してリモート通知を発火する方法

この記事からわかること

  • SwiftFirebase Cloud Messaging通知方法
  • HTTP v1実装方法
  • 特定デバイスグループだけに通知を送信するには?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

サーバー環境のFirebase Cloud Messaging

リモート通知が送信できるFirebase Cloud Messaging(FCM)はコンソールからの手動で通知を発行するだけでなく、サーバー環境を利用してエンドポイントに指定のパラメータを送信することも可能になっています。

【Swift/Firebase】リモートプッシュ通知の実装方法!Cloud Messagingの使い方

この方法を使用することで2つのiOSデバイスで相手に向かってプッシュ通知を発火させるといった実装をすることができるようになります。またグループなどを作成できるので例えばアプリ内に作成したグループにメンバーが増えた際にグループ全体に通知を発火するといったこともできるようになります。

HTTP v1 API

現在のFCMのサーバー環境を利用した通知発火の仕組みは「HTTP v1 API」です。「HTTP v1 API」は認証方法にOAuth2.0のアクセストークンを活用する様に変更されたためセキュリティが向上しました。

エンドポイントも以下の様に変更されています。

POST https://fcm.googleapis.com/fcm/send

POST https://fcm.googleapis.com/v1/projects/${projectID}/messages:send

エンドポイントに含める${projectID}はFirebaseの歯車マーク>プロジェクトの設定>全般から確認することができます。

【Swift/Firebase】Cloud MessagingでHTTP v1を使用して通知を発火する方法

以前のバージョンである「FCM HTTP API」を使用している場合は「HTTP v1 API」へ移行する必要があります。

iOSアプリに組み込む方法

以前のバージョンであればサーバーキーをリクエストのheaderに含めるだけだったのでiOSアプリ内で完結して実装できましたが、今回はOAuthのアクセストークンを取得しないといけないので方法を探してみたところバックエンド側で実装する必要がありそうでした。(何か方法があれば教えてください)

HTTP v1 API」を使用する場合は送信したい相手デバイスのFCM登録トークンを保持している必要があります。FCM登録トークンは以下の記事の方法で取得することができるのでこれをクラウドのデータベースなどにユーザーと紐付けて格納しておき、送信したいユーザーを指定するとそのユーザーのFCM登録トークンがiOSアプリから取得できるような仕組みを用意する必要があります。

今回はバックエンドにLaravelを利用している記事を参考に実装していきたいと思います。

iOSアプリ側でやること

  1. iOSプロジェクトを作成
  2. Firebaseプロジェクトを作成
  3. iOSプロジェクトとFirebaseプロジェクトの連携
  4. プロビジョニングプロファイルの作成
  5. iOSプロジェクトに反映&機能追加
  6. APNs用Key(.p8ファイル)の作成
  7. Firebaseプロジェクトに反映
  8. FCM用のセットアップ
  9. Laravel側の実装
  10. クラウドにユーザーと紐づけてFCMトークンを保存
  11. iOS側から送信したい相手のFCMトークンを取得
  12. iOS側からFCMトークンを付与してLaravelで実装したAPIを叩く

1〜8までは以下の記事を参考にしてください。9は次の「Laravel側でやること」を参照してください。10~12は割愛。今回は実装方法の手順を確認するまで終了です。

Laravel側でやること

  1. Laravelに GoogleAuthを導入
  2. 秘密鍵を取得
  3. Laravelのenvに反映
  4. envの情報を取得したconfigを追加
  5. Controllerに通知発火メソッドを用意
  6. ルーティング

Laravel側の実装は以下の記事を参考にしてください。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index