【iOS】FirebaseからPush通知を受信する


始めに

本ドキュメントは次の1点を目標とします。

  • Firebaseから送信したPush通知をiOSデバイスで受信する

執筆時の開発環境は次の通りです。

  • Xcode 12.4
  • Swift 5

Xcodeプロジェクトとそれに対応するFirebaseプロジェクトが作成済みであり、iOS側のFirebase初期導入手順は実装済みである事が前提です。
また次のライブラリが必要です。

  • FirebaseMessaging

実装

APNs認証キーの作成

AppleDeveloperにサインインし、Certificates,Identifiers & Profilesを表示します。
Keysを選択し、+ボタンをクリックします。

Key Nameに好みの名称を入力し、Apple Push Notifications service(APNs)にチェックを入れ、Continueをクリックします。

Firebase設定時に必要となるKey IDをメモしておきます。
Downloadをクリックし、p8ファイルをダウンロードします。
重要
ダウンロードは1度しか行えません。p8ファイルを紛失すると新しくKeyを作り直すことになりますので、大切に保管してください。

次にAppleDeveloperのMembershipを表示し、Team IDをメモしておきます。この情報もFirebase設定時に必要です。

ここまでの手順で次のファイルと情報が手に入りました。

  • APNs認証ファイル(.p8)
  • Key ID
  • Team ID

Firebaseの設定

「プロジェクトの概要」右にある歯車アイコンをクリックします。
表示されたメニュー中の「プロジェクトを設定」を選択します。

Cloud Messagingタブを選択し、「iOSアプリの構成」セクションからAPNs認証キーのアップロードを行います。
iOSアプリの構成が表示されない場合、まずFirebaseプロジェクトにiOSアプリを追加してください。

AppleDeveloperで入手したp8ファイルと2つのIDを入力し、アップロードを実行します。

iOSアプリの実装

Capabilities設定

XcodeのSetting & Capabilities画面を表示し、「+Capability」をクリックします。
表示された一覧の中からPush Notificationsを追加します。

通知認証リクエスト処理

AppDelegateに次の処理を追加します。

AppDelegate.swift
import Firebase

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

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

        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { (success, error) in
            if let error = error {
                debugPrint(error.localizedDescription)
            }
            debugPrint("通知登録\(success ? "成功" : "失敗")")

            DispatchQueue.main.async {
              UIApplication.shared.registerForRemoteNotifications()
            }
        }

        return true
    }
}

動作確認

アプリを起動し、通知認証を許可します。
その後アプリを終了あるいはバックグラウンドにしておきます。

Firebaseコンソールを開き、Cloud Messagingを選択します。
「Send your first message」をクリックし、通知の作成画面を表示します。
次の項目を入力し、「確認」をクリックします。

項目
通知のタイトル 好きなタイトル
通知テキスト 好きな文
ターゲット 「ユーザーセグメント」 > 「アプリ」 > 送信先のアプリを選択
スケジュール 現在
コンバージョンイベント 編集なし
通知音 有効

メッセージの再確認で「公開」をクリックするとPush通知が送信されます。
暫く待つとデバイスで受信することを確認できます。