アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【iPhone/iPadMacOSGoogleSwift
FirebaseでiOSアプリにプッシュ通知機能を実装する【1】
POSTED BY
2024-03-15

LINEでおなじみの、新着メッセージの知らせなどが端末に届くあれを実装します。Firebase Cloud Messagingを使用します。

https://firebase.google.com/docs/cloud-messaging?hl=ja

プッシュ通知は、テスト段階順に以下3通りの開発ステップを踏みます。

1、Appleのサーバを介さずにFirebaseが直接指定端末1機に通知を飛ばす超簡易テスト
2、端末を限定したテストプロファイルを使用して、本物のプッシュ通知を飛ばすテスト
3、本番用のプロファイルを使用して、TestFlightで本物のプッシュ通知を飛ばすテスト

3番はTestFlightなので、成功すればそのままApp Storeでプッシュ通知アプリをリリースできます。その前に1番2番で手元テストを終えておく、という感じです。なおApple的な呼び方だとテストをSandbox、本番をProductionと言うらしいです。

対象アプリの識別子(バンドルID = Identifier)を確認する

App Dev CenterのIdentifiersに登録されているアプリ識別子です。

https://developer.apple.com/account/resources/identifiers/list

ここではjp.co.mycorp.MyAppがターゲットアプリであるとします。

プッシュ通知用の証明書を作成する

App Dev Centerで、テスト用と本番用を一気に作成して上記アプリに紐づけます。

まずは手元のMacマシンにてキーチェーンアクセスを開きます。

上メニューバー→キーチェーンアクセス→証明書アシスタント→認証局に証明書を要求、を開きます。

ユーザのメールアドレス:Apple Developerに登録しているApple IDが望ましい、他のメアドでも可。
要求の処理:ディスクに保存
鍵ペア情報を指定、にチェックを入れる
鍵のサイズは2048ビット・アルゴリズムはRSA (デフォルト)

CertificateSigningRequest.certSigningRequestというCSRファイルが出力される。

App Dev Centerの証明書のページを開いて「+」で証明書作成を開始する。

https://developer.apple.com/account/resources/certificates/list

Services→Apple Push Notification service SSL (Sandbox)を選択、Continue。

紐づけるべきApp IDが出るので、jp.co.mycorp.MyAppを指定しContinue

Choose Fileで、上記Macで作成したCertificateSigningRequest.certSigningRequestファイルを指定してContinue

作成が完了したので「Download」しておく。aps_development.cerファイルがダウンロードされる。

続けて全く同じ手順で本番通知用証明書も以下のようにして作成・紐付けする。

Services→Apple Push Notification service SSL (Sandbox & Production)を選択、Continue。

紐づけるべきApp IDが出るので、jp.co.mycorp.MyAppを指定しContinue

Choose Fileで、上記Macで作成したCertificateSigningRequest.certSigningRequestファイルを指定してContinue

作成が完了したので「Download」しておく。aps.cerファイルがダウンロードされる。

ターゲットアプリへのPush通知有効化と証明書紐付けを確認する

上記の作業が済むと、Identifiersのアプリ情報のところで確認できる。

https://developer.apple.com/account/resources/identifiers/list

から、対象アプリを開いて、

Capabilities→Push Notificationsに自動でチェックが入っており、Certificates(2)となっており「Edit」で開くと、上記で作成した開発用・本番用両方の証明書が紐づけられていることを確認する。

ダウンロードした証明書ファイルからFirebase登録用のp12ファイルを作成する

aps_development.cerをダブルクリックすると、キーチェーンアクセスが開いて、証明書として「Apple Sandbox Push Services: jp.co.mycorp.MyApp」が登録され、一覧で見えています。もしも「この証明書は信頼されていません」となってしまっていたら、マシンに中間証明書が無いのが原因なので、こちらの記事を参照してインストールすれば有効な証明書と出るはずです。

「Apple Sandbox Push Services: jp.co.mycorp.MyApp」を右クリックして「Apple Sandbox Push Services: jp.co.mycorp.MyAppを書き出す...」を開きます。フォーマット「個人情報交換(.p12)」のまま、「aps_development.p12」などと名前をつけて「保存」します。パスワードは無し(設定しません)これでFirebaseへ登録する用の開発証明書ができました。

全く同じ手順にて、本番用のものも以下手順で出力しておきます。

aps.cerをダブルクリックすると、キーチェーンアクセスが開いて、証明書として「Apple Push Services: jp.co.mycorp.MyApp」が登録され、一覧で見えています。もしも「この証明書は信頼されていません」となってしまっていたら、マシンに中間証明書が無いのが原因なので、こちらの記事を参照してインストールすれば有効な証明書と出るはずです。

「Apple Push Services: jp.co.mycorp.MyApp」を右クリックして「Apple Push Services: jp.co.mycorp.MyAppを書き出す...」を開きます。フォーマット「個人情報交換(.p12)」のまま、「aps.p12」などと名前をつけて「保存」します。パスワードは無し(設定しません)これでFirebaseへ登録する用の本番証明書ができました。

開発用本番用2つのp12ファイルをFirebaseに登録する

Firebaseコンソール

https://console.firebase.google.com/

を開いて、対象のプロジェクトへ移動し、左ペイン左上のホームアイコン横の設定アイコン→プロジェクトの設定を開きます。

プロジェクトの設定→「Cloud Messaging」を開いて、Firebase Cloud Messaging API (V1) が有効になっていることを確認し、Appleアプリにターゲットアプリ「jp.co.mycorp.MyApp」が居ることを確認します。

ここで、APNs 証明書に、さきほどの2種類のp12ファイルを登録すればOKです。「開発用 APNs 証明書」には「aps_development.p12」、「本番環境用 APNs 証明書」には「aps.p12」をそれぞれ「アップロード」します。p12ファイルを出力するときにパスワードを設定していたなら、ここでそのパスワードを指定します。

なおp12でなく「APNs 認証キー(p8ファイル)」が最新の方法であるとは思うのですが、App Dev Centerでは作成数に限りがあるため、組織で使用している場合などは気軽に作れません。なので当方はp12を使用しています。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】