Firebaseを使ったpush通知を試してみました。
APNs証明書の準備
まずはプッシュ通知用の証明書を作成します。
キーチェーンを開き、「認証局に証明書を要求」を選択します。
次の画面で、メールアドレスと名前を入力して証明書要求を作成します。
CertificateSigningRequest.certSigningRequest
というファイルが保存されるので、それを使って証明書を作成します。
まずはMemberCenterのCertificates, Identifiers & Profilesにアクセスして下さい。
そこで、プッシュ通知を使いたいアプリIDの「Push Notifications」にチェックを入れ、先程作ったファイルをアップロードします。
そのまま手順に従っていけば証明書を作成する事ができます。
作成したら、それをダブルクリックでキーチェーンに登録、登録した証明書を右クリックしてp12に書き出しをします。
作成が終わったら、Firebaseのそのプロジェクトの設定に証明書をアップロードします。
これでFirebase上の設定は整いました。
プッシュ用のトークンを受け取る
続けてコード上にプッシュトークンを受け取る処理を追加します。
まずはCocoaPodsでFirebase/CoreとFirebase/Messagingをインストールします。
target 'MyApp' do use_frameworks! pod 'Firebase/Core' pod 'Firebase/Messaging' end
次にCapabilitiesでPush通知を有効にします。
MemberCenterからProvisioningProfileも作成します。
次はAppDelegateなどに、Firebaseの初期化とプッシュ通知の許可を求める処理を追加します。
import Firebase @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { FIRApp.configure() application.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil)) application.registerForRemoteNotifications() return true } }
次はInfo.plistにFirebaseAppDelegateProxyEnabledというキーを追加してNOをセットします。
AppDelegateに通知トークンをサーバーに送る処理を追加します。
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .unknown) }
以上で対応は完了です。
FirebaseのNotificationからプッシュ通知を送ればデバイスに届くようになりました。