5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

APNsを利用したプッシュ通知の実装手順

Last updated at Posted at 2019-08-14

実装については、以下の公式ページの手順に沿っていけば出来る。
https://firebase.google.com/docs/cloud-messaging/ios/client?hl=ja
本ページでは開発環境の構築で詰まったところや備忘録を記載する。

実装の動作確認をした環境

Xcode: 10.3(iOS12.4対応)
Swift: 5.0

実装前の準備

  1. Apple Developer Programに登録する
  • Cloud Messagingを利用するために登録が必要。
  • 登録ページは以下。

    https://developer.apple.com/jp/programs/enroll/
  • 入力後、登録完了のメールはすぐに届くが、実際にサービスを使えるようになるまで
    半日〜1日ほどかかる。サービスが使えるようになるとメールが改めて届く。
  1. XCodeでアプリのプロジェクトを作成する
  • Xcodeを起動する
  • 「Create a new Xcode project」を選択する
  • 「Single View App」を選択して、「Next」ボタンを押下
  • 「Product Name」にプロジェクト名を入力する。例)TestApns
  • あとはデフォルト設定のまま進み、最後に「Create」ボタンを押下
  1. 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:in git_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
  1. アプリで使用したいポッド(ライブラリ)を Podfile に追加する
  • $ cd your-project
  • $ pod init
  • $ vi Podfile
  • 以下を追加。

    pod 'Firebase/Core'

    pod 'Firebase/Messaging'
  • $ pod install
  • $ open your-project.xcworkspace

    XCodeが開くのでPods > PodsにFirebaseの各ライブラリがインストールされていることを確認する。
  1. Firebase consoleでFirebaseプロジェクトの登録と、アプリの登録を行う
  1. GoogleService-Info.plistをアプリのプロジェクトに追加する
  • Firebase consoleで登録したFirebaseプロジェクトを選択して、歯車アイコンを選択する。「プロジェクトの設定」を選択、「全般」タブで登録したアプリのところに「GoogleService-Info.plist」のダウンロードアイコンがあるので、クリックしてダウンロードする。
  • $ open your-project.xcworkspaceでワークスペースを開いて、プロジェクトのルートにドロップする
  • 「Copy items if needed」にチェックを入れて
  • 「Added foldersはCreate groups」を選択する
  • 「Finish」ボタンを選択する
  1. 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認証キーファイルがダウンロードされる
  1. 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」に記載がある
  • 以上を設定したら「アップロード」ボタンを押下する
  1. アプリでプッシュ通知を有効にする
  • 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

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?