実装については、以下の公式ページの手順に沿っていけば出来る。
https://firebase.google.com/docs/cloud-messaging/ios/client?hl=ja
本ページでは開発環境の構築で詰まったところや備忘録を記載する。
実装の動作確認をした環境
Xcode: 10.3(iOS12.4対応)
Swift: 5.0
実装前の準備
- Apple Developer Programに登録する
- Cloud Messagingを利用するために登録が必要。
- 登録ページは以下。
https://developer.apple.com/jp/programs/enroll/ - 入力後、登録完了のメールはすぐに届くが、実際にサービスを使えるようになるまで
半日〜1日ほどかかる。サービスが使えるようになるとメールが改めて届く。
- XCodeでアプリのプロジェクトを作成する
- Xcodeを起動する
- 「Create a new Xcode project」を選択する
- 「Single View App」を選択して、「Next」ボタンを押下
- 「Product Name」にプロジェクト名を入力する。例)TestApns
- あとはデフォルト設定のまま進み、最後に「Create」ボタンを押下
- CocoaPodsのインストール(FirebaseSDKをインストールするために必要なツール)
- $ sudo gem install -n /usr/local/bin cocoapods
- $ pod setup
- 次のエラーが出る。
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.7.5/lib/cocoapods/command.rb:118:ingit_version': Failed to extract git version from
git --version` ("xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun\n") (RuntimeError) - 次のページの解決策にあるので実施する。
https://blog.kuromusubi.com/develop/environment/xcode/20180222-verify_minimum_git_version
- アプリで使用したいポッド(ライブラリ)を Podfile に追加する
- $ cd your-project
- $ pod init
- $ vi Podfile
- 以下を追加。
pod 'Firebase/Core'
pod 'Firebase/Messaging' - $ pod install
- $ open your-project.xcworkspace
XCodeが開くのでPods > PodsにFirebaseの各ライブラリがインストールされていることを確認する。
- Firebase consoleでFirebaseプロジェクトの登録と、アプリの登録を行う
- GoogleService-Info.plistをアプリのプロジェクトに追加する
- Firebase consoleで登録したFirebaseプロジェクトを選択して、歯車アイコンを選択する。「プロジェクトの設定」を選択、「全般」タブで登録したアプリのところに「GoogleService-Info.plist」のダウンロードアイコンがあるので、クリックしてダウンロードする。
- $ open your-project.xcworkspaceでワークスペースを開いて、プロジェクトのルートにドロップする
- 「Copy items if needed」にチェックを入れて
- 「Added foldersはCreate groups」を選択する
- 「Finish」ボタンを選択する
- APNs認証キーをApple Developer Programで作成する
- https://developer.apple.com/account/resources/authkeys/list
- 「Keys」の右の「+」ボタンを押下する
- 「Key Name」に任意の値を入力する
- 「Apple Push Notifications service (APNs)」にチェックを入れて、「Continue」ボタンを押下
- 「Register」ボタンを押下
- 「Download」ボタンを押下。「AuthKey_〜〜〜.p8」というAPNs認証キーファイルがダウンロードされる
- APNs認証キーファイルをFirebase consoleにアップロードする
- Firebase consoleでFirebaseプロジェクトを選択して、歯車アイコンを選択、「プロジェクトの設定」を選択する
- 「Cloud Messaging」タブを選択する
- 「iOSアプリの設定」から「APNs 認証キー」の「アップロード」リンクを押下する
- APNs 認証キーの指定と、キーIDとチームIDの入力を求められる
APNs 認証キーは先ほどダウンロードしたファイルをした「AuthKey_〜〜〜.p8」ファイルを指定する
キーIDは「AuthKey_〜〜〜.p8」ファイル名の「〜〜〜」の部分
チームIDはApple Developer Programの「Certificates, Identifiers & Profiles」の右上のログインユーザ名をクリック、「View Membership」を選択。「Membership Details」「Team ID」に記載がある - 以上を設定したら「アップロード」ボタンを押下する
- アプリでプッシュ通知を有効にする
- Xcodeでアプリのワークスペースを開き、プロジェクトの設定、[Capabilities] で「Push Notifications」を「ON」にする
※Apple Developer Program membersでないとPush Notificationsが選択できない
実装
- 以下、公式ページのAppDelegate.swiftを反映するのみ
https://firebase.google.com/docs/cloud-messaging/ios/client?hl=ja - アプリをインストールして実行する
- 「"your-project"は通知を送信します。よろしいですか?」とダイアログが出るので「許可」を選択する
- ログにFCMトークンが出力されるのでメモをとる
例)Firebase registration token: dt6ZjI4WAc0:APA91bEBAZ9SEl3qInP0gtPZAfHXPfQ4HULnb9AplXmsp8tQ6ebUth1izQfnv0AXbpMyivRKP812La1ykdlNVlRUwH769ZLeRFCPrxEmWPrNJq-nFZK0Uo7jRDqrNYb4oMnRGmkV44Au
メッセージの受信確認
- メッセージを受信する実機では、アプリを落としてホーム画面を表示している状態にする
- Firebase consoleでFirebaseプロジェクトを選択
- サイドメニューの「Cloud Messaging」を選択
- 「新しい通知」ボタンを押下
- 「通知のタイトル」と「通知テキスト」を入力して、「テスト メッセージを送信」ボタンを押下
- 「FCM 登録トークンを追加」となっているところに先ほどアプリで表示したログを入力する
- 「+」ボタンを押下してFCMトークンを登録する
- 「テスト」ボタンを押下
実機の画面に通知がされる
※ソースコードのURL
https://github.com/opst-ito-daisuke/TestApns