FCM の使用を開始するには、最も単純なユース ケースを作成します。アプリがデバイスのバックグラウンドにあるときに、通知コンポーザーから開発デバイスにテスト通知メッセージを送信します。このページには、セットアップから検証まで、これを実現するためのすべての手順がリストされています。FCM 用にApple クライアント アプリをセットアップしている場合は、既に完了している手順が含まれている場合があります。
Apple プロジェクトに Firebase を追加する
このセクションでは、アプリで他の Firebase 機能を既に有効にしている場合に完了できるタスクについて説明します。特に FCM の場合は、APNs 認証キーをアップロードし、リモート通知に登録する必要があります。
前提条件
以下をインストールします。
- Xcode 13.3.1 以降
プロジェクトが次の要件を満たしていることを確認してください。
- プロジェクトは、これらのプラットフォーム バージョン以降をターゲットにする必要があります。
- iOS11
- macOS 10.13
- TVOS 12
- ウォッチOS 6
- プロジェクトは、これらのプラットフォーム バージョン以降をターゲットにする必要があります。
アプリを実行する物理 Apple デバイスをセットアップし、次のタスクを完了します。
- Apple Developer アカウントの Apple プッシュ通知認証キーを取得します。
- XCode のApp > Capabilitiesでプッシュ通知を有効にします。
- Google アカウントを使用して Firebase にサインインします。
Xcode プロジェクトをまだお持ちでなく、Firebase 製品を試してみたいだけの場合は、クイックスタート サンプルのいずれかをダウンロードできます。
Firebase プロジェクトを作成する
Firebase を Apple アプリに追加する前に、Firebase プロジェクトを作成してアプリに接続する必要があります。 Firebase プロジェクトについて詳しくは、 Firebase プロジェクトを理解するをご覧ください。
アプリを Firebase に登録する
Apple アプリで Firebase を使用するには、アプリを Firebase プロジェクトに登録する必要があります。アプリを登録することは、多くの場合、アプリをプロジェクトに「追加する」と呼ばれます。
Firebase コンソールに移動します。
プロジェクト概要ページの中央にあるiOS+アイコンをクリックして、セットアップ ワークフローを起動します。
Firebase プロジェクトに既にアプリを追加している場合は、[アプリを追加] をクリックしてプラットフォーム オプションを表示します。
バンドル IDフィールドにアプリのバンドル ID を入力します。
バンドル IDは、Apple のエコシステム内のアプリケーションを一意に識別します。
バンドル ID を見つけます。Xcode でプロジェクトを開き、プロジェクト ナビゲーターでトップレベルのアプリを選択してから、[全般] タブを選択します。
Bundle Identifierフィールドの値はバンドル ID です (例:
com.yourcompany.yourproject
)。バンドル ID の値は大文字と小文字が区別されることに注意してください。この Firebase アプリを Firebase プロジェクトに登録した後は、この値を変更することはできません。
(オプション)その他のアプリ情報を入力します:アプリのニックネームとApp Store ID 。
アプリのニックネーム: Firebase コンソールでのみ表示される、内部の便利な識別子
App Store ID :ユーザーを App Store ページにリダイレクトするために Firebase Dynamic Links によって使用され、コンバージョン イベントを Google 広告にインポートするために Google アナリティクスによって使用されます。アプリに App Store ID がまだない場合は、後でプロジェクト設定で ID を追加できます。
[アプリを登録]をクリックします。
Firebase 構成ファイルを追加する
[GoogleService-Info.plist をダウンロード]をクリックして、Firebase Apple プラットフォーム構成ファイル (
GoogleService-Info.plist
) を取得します。Firebase 構成ファイルには、プロジェクトの一意であるが秘密ではない識別子が含まれています。この構成ファイルの詳細については、 Firebase プロジェクトを理解するをご覧ください。
Firebase 構成ファイルはいつでも再ダウンロードできます。
構成ファイル名に
(2)
のような追加の文字が追加されていないことを確認してください。
構成ファイルを Xcode プロジェクトのルートに移動します。プロンプトが表示されたら、構成ファイルをすべてのターゲットに追加することを選択します。
プロジェクトに複数のバンドル ID がある場合、各アプリが独自のGoogleService-Info.plist
ファイルを持つことができるように、各バンドル ID を Firebase コンソールの登録済みアプリに関連付ける必要があります。
アプリに Firebase SDK を追加する
Swift Package Manager を使用して、Firebase の依存関係をインストールおよび管理します。
- Xcode で、アプリ プロジェクトを開いた状態で、 File > Add Packagesに移動します。
- プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
- Firebase Cloud Messaging ライブラリを選択します。
- Firebase Cloud Messaging で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。 IDFA コレクションのないライブラリまたは IDFA コレクションのあるライブラリのいずれかを選択できます。
- 完了すると、Xcode はバックグラウンドで依存関係の解決とダウンロードを自動的に開始します。
https://github.com/firebase/firebase-ios-sdk
APNs 認証キーをアップロードする
APNs 認証キーを Firebase にアップロードします。 APNs 認証キーをまだ持っていない場合は、 Apple Developer Member Centerで必ず作成してください。
Firebase コンソールのプロジェクト内で、歯車アイコンを選択し、[プロジェクト設定]を選択してから、[クラウド メッセージング] タブを選択します。
[ iOS アプリの構成] の [ APNs 認証キー] で、[アップロード] ボタンをクリックします。
キーを保存した場所を参照して選択し、[開く] をクリックします。キーのキー ID ( Apple Developer Member Centerで入手可能) を追加し、[アップロード] をクリックします。
アプリで Firebase を初期化する
アプリケーションに Firebase 初期化コードを追加する必要があります。 Firebase モジュールをインポートし、次のように共有インスタンスを構成します。
-
UIApplicationDelegate
にFirebaseCore
モジュールをインポートし、アプリ デリゲートが使用する他のすべてのFirebase モジュールをインポートします。たとえば、Cloud Firestore と認証を使用するには:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
迅速
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- アプリ デリゲートの
application(_:didFinishLaunchingWithOptions:)
メソッドでFirebaseApp
共有インスタンスを構成します。SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
迅速
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- SwiftUI を使用している場合は、アプリケーション デリゲートを作成し、それを
UIApplicationDelegateAdaptor
またはNSApplicationDelegateAdaptor
を介してApp
構造体にアタッチする必要があります。アプリ デリゲート スウィズリングも無効にする必要があります。詳細については、 SwiftUI の説明を参照してください。SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
リモート通知に登録する
起動時またはアプリケーション フローの目的の時点で、アプリをリモート通知用に登録します。次のようにregisterForRemoteNotifications
を呼び出します。迅速
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Objective-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
登録トークンにアクセスする
特定のデバイスにメッセージを送信するには、そのデバイスの登録トークンを知る必要があります。このチュートリアルを完了するには、通知コンポーザーのフィールドにトークンを入力する必要があるため、トークンをコピーするか、トークンを取得した後に安全に保管してください。
デフォルトでは、FCM SDK は、アプリの起動時にクライアント アプリ インスタンスの登録トークンを生成します。 APNs デバイス トークンと同様に、このトークンを使用すると、対象を絞った通知をアプリの特定のインスタンスに送信できます。
通常、Apple プラットフォームがアプリの起動時に APNs デバイス トークンを配信するのと同じ方法で、FCM はFIRMessagingDelegate
のmessaging:didReceiveRegistrationToken:
メソッドを介して登録トークンを提供します。 FCM SDK は、最初のアプリの起動時、およびトークンが更新または無効化されるたびに、新規または既存のトークンを取得します。いずれの場合も、FCM SDK は有効なトークンを使用して、 messaging:didReceiveRegistrationToken:
を呼び出します。
登録トークンは、次の場合に変更される場合があります。
- アプリは新しいデバイスに復元されます
- ユーザーがアプリをアンインストール/再インストールする
- ユーザーがアプリ データを消去します。
メッセージング デリゲートを設定する
登録トークンを受け取るには、メッセージング デリゲート プロトコルを実装し、 [FIRApp configure]
を呼び出した後にFIRMessaging
のdelegate
プロパティを設定します。たとえば、アプリケーション デリゲートがメッセージング デリゲート プロトコルに準拠している場合、 application:didFinishLaunchingWithOptions:
のデリゲートをそれ自体に設定できます。
迅速
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
現在の登録トークンの取得
登録トークンは、 messaging:didReceiveRegistrationToken:
メソッドを介して配信されます。このメソッドは通常、登録トークンを使用してアプリの開始ごとに 1 回呼び出されます。このメソッドが呼び出されるときは、次のことを行うのに最適な時期です。
- 登録トークンが新しい場合は、アプリケーション サーバーに送信します。
- 登録トークンをトピックにサブスクライブします。これは、新しいサブスクリプションの場合、またはユーザーがアプリを再インストールした場合にのみ必要です。
token(completion:)を使用してトークンを直接取得できます。トークンの取得が何らかの方法で失敗した場合は、null 以外のエラーが提供されます。
迅速
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)" } }
Objective-C
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];
トークンを保存する代わりに、いつでもこのメソッドを使用してトークンにアクセスできます。
トークンの更新を監視する
トークンが更新されるたびに通知を受けるには、メッセージング デリゲート プロトコルに準拠するデリゲートを指定します。次の例では、デリゲートを登録し、適切なデリゲート メソッドを追加します。
迅速
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { print("Firebase registration token: \(String(describing: fcmToken))") let dataDict: [String: String] = ["token": fcmToken ?? ""] NotificationCenter.default.post( name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict ) // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
Objective-C
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken { NSLog(@"FCM registration token: %@", fcmToken); // Notify about received token. NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"FCMToken" object:nil userInfo:dataDict]; // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
または、デリゲート メソッドを提供するのではなく、 kFIRMessagingRegistrationTokenRefreshNotification
という名前のNSNotification
をリッスンすることもできます。トークン プロパティには、常に現在のトークン値があります。
通知メッセージを送信する
ターゲット デバイスにアプリをインストールして実行します。 Apple デバイスでは、リモート通知を受信する許可の要求を受け入れる必要があります。
アプリがデバイスのバックグラウンドにあることを確認します。
Firebase コンソールで、[メッセージング] ページを開きます。
これが最初のメッセージである場合は、[最初のキャンペーンを作成する]を選択します。
- [ Firebase 通知メッセージ]を選択し、 [作成] を選択します。
それ以外の場合は、[キャンペーン] タブで、[新しいキャンペーン]、[通知] の順に選択します。
メッセージ本文を入力します。他のすべてのフィールドはオプションです。
右側のペインから [テスト メッセージの送信] を選択します。
Add an FCM registration token というフィールドに、このガイドの前のセクションで取得した登録トークンを入力します。
[テスト]を選択します。
[テスト] を選択すると、対象のクライアント デバイス (アプリがバックグラウンドにある) が通知を受け取るはずです。
アプリへのメッセージ配信について詳しくは、 FCM レポート ダッシュボードを参照してください。このダッシュボードには、Apple および Android デバイスで送信および開封されたメッセージの数と、Android アプリの「インプレッション」(ユーザーが表示した通知) のデータが記録されています。
次のステップ
通知メッセージを超えて、他のより高度な動作をアプリに追加するには、次を参照してください。