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を使用しています。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Apache】サーバーに同時接続可能なクライアント数を調整する
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Linux】iconv/libiconvをソースコードからインストール
Googleスプレッドシートを編集したら自動で更新日時を入れる
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う
Windows11でMacのキーボードを使うには