Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

バックグラウンドのAppleアプリにテストメッセージを送信します

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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でプッシュ通知を有効にします。

Xcode プロジェクトをまだお持ちでなく、Firebase 製品を試してみたいだけの場合は、クイックスタート サンプルのいずれかをダウンロードできます。

Firebase プロジェクトを作成する

Firebase を Apple アプリに追加する前に、Firebase プロジェクトを作成してアプリに接続する必要があります。 Firebase プロジェクトについて詳しくは、 Firebase プロジェクトを理解するをご覧ください。

アプリを Firebase に登録する

Apple アプリで Firebase を使用するには、アプリを Firebase プロジェクトに登録する必要があります。アプリを登録することは、多くの場合、アプリをプロジェクトに「追加する」と呼ばれます。

  1. Firebase コンソールに移動します。

  2. プロジェクト概要ページの中央にあるiOS+アイコンをクリックして、セットアップ ワークフローを起動します。

    Firebase プロジェクトに既にアプリを追加している場合は、[アプリを追加] をクリックしてプラットフォーム オプションを表示します。

  3. バンドル IDフィールドにアプリのバンドル ID を入力します。

  4. (オプション)その他のアプリ情報を入力します:アプリのニックネームApp Store ID

  5. [アプリを登録]をクリックします。

Firebase 構成ファイルを追加する

  1. [GoogleService-Info.plist をダウンロード]をクリックして、Firebase Apple プラットフォーム構成ファイル ( GoogleService-Info.plist ) を取得します。

  2. 構成ファイルを Xcode プロジェクトのルートに移動します。プロンプトが表示されたら、構成ファイルをすべてのターゲットに追加することを選択します。

プロジェクトに複数のバンドル ID がある場合、各アプリが独自のGoogleService-Info.plistファイルを持つことができるように、各バンドル ID を Firebase コンソールの登録済みアプリに関連付ける必要があります。

アプリに Firebase SDK を追加する

Swift Package Manager を使用して、Firebase の依存関係をインストールおよび管理します。

  1. Xcode で、アプリ プロジェクトを開いた状態で、 File > Add Packagesに移動します。
  2. プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase Cloud Messaging ライブラリを選択します。
  5. Firebase Cloud Messaging で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。 IDFA コレクションのないライブラリまたは IDFA コレクションのあるライブラリのいずれかを選択できます。
  6. 完了すると、Xcode はバックグラウンドで依存関係の解決とダウンロードを自動的に開始します。

APNs 認証キーをアップロードする

APNs 認証キーを Firebase にアップロードします。 APNs 認証キーをまだ持っていない場合は、 Apple Developer Member Centerで必ず作成してください。

  1. Firebase コンソールのプロジェクト内で、歯車アイコンを選択し、[プロジェクト設定]を選択してから、[クラウド メッセージング] タブを選択します。

  2. [ iOS アプリの構成] の [ APNs 認証キー] で、[アップロード] ボタンをクリックします。

  3. キーを保存した場所を参照して選択し、[開く] をクリックします。キーのキー ID ( Apple Developer Member Centerで入手可能) を追加し、[アップロード] をクリックします。

アプリで Firebase を初期化する

アプリケーションに Firebase 初期化コードを追加する必要があります。 Firebase モジュールをインポートし、次のように共有インスタンスを構成します。

  1. UIApplicationDelegateFirebaseCoreモジュールをインポートし、アプリ デリゲートが使用する他のすべてのFirebase モジュールをインポートします。たとえば、Cloud Firestore と認証を使用するには:

    迅速

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. アプリ デリゲートのapplication(_:didFinishLaunchingWithOptions:)メソッドでFirebaseApp共有インスタンスを構成します。

    迅速

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

リモート通知に登録する

起動時またはアプリケーション フローの目的の時点で、アプリをリモート通知用に登録します。次のように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 はFIRMessagingDelegatemessaging:didReceiveRegistrationToken:メソッドを介して登録トークンを提供します。 FCM SDK は、最初のアプリの起動時、およびトークンが更新または無効化されるたびに、新規または既存のトークンを取得します。いずれの場合も、FCM SDK は有効なトークンを使用して、 messaging:didReceiveRegistrationToken:を呼び出します。

登録トークンは、次の場合に変更される場合があります。

  • アプリは新しいデバイスに復元されます
  • ユーザーがアプリをアンインストール/再インストールする
  • ユーザーがアプリ データを消去します。

メッセージング デリゲートを設定する

登録トークンを受け取るには、メッセージング デリゲート プロトコルを実装し、 [FIRApp configure]を呼び出した後にFIRMessagingdelegateプロパティを設定します。たとえば、アプリケーション デリゲートがメッセージング デリゲート プロトコルに準拠している場合、 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をリッスンすることもできます。トークン プロパティには、常に現在のトークン値があります。

通知メッセージを送信する

  1. ターゲット デバイスにアプリをインストールして実行します。 Apple デバイスでは、リモート通知を受信する許可の要求を受け入れる必要があります。

  2. アプリがデバイスのバックグラウンドにあることを確認します。

  3. Firebase コンソールで、[メッセージング] ページを開きます。

  4. これが最初のメッセージである場合は、[最初のキャンペーンを作成する]を選択します。

    1. [ Firebase 通知メッセージ]を選択し、 [作成] を選択します。
  5. それ以外の場合は、[キャンペーン] タブで、[新しいキャンペーン]、[通知] の順に選択します。

  6. メッセージ本文を入力します。他のすべてのフィールドはオプションです。

  7. 右側のペインから [テスト メッセージの送信] を選択します。

  8. Add an FCM registration token というフィールドに、このガイドの前のセクションで取得した登録トークンを入力します。

  9. [テスト]を選択します。

[テスト] を選択すると、対象のクライアント デバイス (アプリがバックグラウンドにある) が通知を受け取るはずです。

アプリへのメッセージ配信について詳しくは、 FCM レポート ダッシュボードを参照してください。このダッシュボードには、Apple および Android デバイスで送信および開封されたメッセージの数と、Android アプリの「インプレッション」(ユーザーが表示した通知) のデータが記録されています。

次のステップ

通知メッセージを超えて、他のより高度な動作をアプリに追加するには、次を参照してください。