【Swift/Firebase】Cloud Messagingのテスト通知方法!FCM登録トークン取得

この記事からわかること

  • SwiftFirebase Cloud Messagingテスト通知方法
  • FCM登録トークン取得方法

index

[open]

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

みんなの誕生日

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

posted withアプリーチ

iOSアプリにFirebase Cloud Messagingを使用したリモートプッシュ通知のテストを実装する方法をまとめていきます、

Cloud Messagingのテスト通知方法

Cloud Messagingの「テスト通知」はあらかじめ決めたデバイスに対してのみ通知をテスト配信できる機能です。実際に配信するのではなく、開発者が通知のテストに使用するために使用されます。

この方法を使用することで実機を使用せずともシミュレーターでテストを行うことが可能になります。

【Swift/Firebase】Cloud Messagingのテスト方法!FCM登録トークン取得

テスト配信するにはiOSアプリとFirebase Cloud Messagingを連携させたFirebaseプロジェクトにアクセスし「Cloud Messaging」の画面に移動し、「最初のキャンペーンを作成」をクリックします。

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

配信できる通知は以下の2種類に分かれているので今回は上側の通知を配信してみます。

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

通知のタイトル」と「通知テキスト」を入力し、右側にある「テストメッセージを送信」をクリックします。

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

すると以下の画面になり、テスト通知を配信するためには「FCM登録トークン」が必要になることがわかります。

【Swift/Firebase】Cloud Messagingのテスト方法!FCM登録トークン取得

FCM登録トークンの取得方法

公式ドキュメント:現在の登録トークンを取得する

FCM登録トークンを取得するにはアプリにコードを組み込む必要があります。FirebaseMessagingライブラリを導入していない場合は組み込んでおいてください。


pod 'FirebaseMessaging'

ライブラリを導入できたら「AppDelegate.swift」に以下のようにコードを追記していきます。


import UIKit
import FirebaseCore
import FirebaseMessaging // 追加 #1

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure() 

        // -- 追加 ここから 
        Messaging.messaging().delegate = self  // #2
        
        UNUserNotificationCenter.current().delegate = self 

        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
          options: authOptions,
          completionHandler: { _, _ in }
        )

        application.registerForRemoteNotifications() 

        return true
    }

    // 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
}

extension AppDelegate : UNUserNotificationCenterDelegate {} 
// 追加
extension AppDelegate: MessagingDelegate {} // #3

追加したコード

Messaging.messaging().tokenの追加

さらにAppDelegateクラスにapplication(_:didRegisterForRemoteNotificationsWithDeviceToken)メソッドを追加し、公式ドキュメントを参考に以下のコードを追記します。公式をそのまま引用するとfcmRegTokenMessagehas no memberになるのでコメントアウトしておきます。

func application(_ application: UIApplication,
                  didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    Messaging.messaging().apnsToken = deviceToken

    Messaging.messaging().token { token, error in
      if let error = error {
        print("Error fetching FCM registration token: \(error)")
      } else if let token = token {
        print("FCM registration token: \(token)")
//      self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
      }
    }
}

これで準備は完了したのでシミュレーターでアプリを実行し、デバッグエリアに表示される「FCM登録トークン(英数字の羅列)」をコピーしてFirebaseの入力欄にペーストすればテスト配信を行うことが可能です。

【Swift/Firebase】Cloud Messagingのテスト方法!FCM登録トークン取得

エラー:No APNS token specified before fetching FCM Token

Error Domain=com.google.fcm Code=505 "No APNS token specified before fetching FCM Token" UserInfo={NSLocalizedFailureReason=No APNS token specified before fetching FCM Token}

もしデバッグエリアに上記のようなエラーが発生していた場合は以下の記事を参考にしてみてください。

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

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

searchbox

スポンサー

ProFile

ame

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

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

New Article

index