iOSでのプッシュ通知の準備(バイナリインターフェイス・証明書認証での接続の場合)

iOS アプリのビルドを行うには、iOS アプリをビルド・署名する環境が必要となります。

また、プッシュ通知を使うアプリの場合は BoltzEngine から APNs へ接続する際に使用する認証情報となる秘密鍵・証明書が必要になります。

※このページではバイナリインターフェイスで証明書を使った接続の場合の方法をご案内しています。HTTP/2方式でトークン認証を使う接続をご利用になる場合は「HTTP/2・トークン認証での接続の場合」のページをご覧ください。

作業に必要なものとアウトプット

この作業には以下のものをご準備いただく必要があります。

  • Apple Developer Program の契約
  • ビルド環境となる Xcode がインストールされた Mac
  • アプリの Bundle Identifier
    • アプリのユニーク ID です。APNs など、Apple のクラウドサービスと連携するアプリの場合は開発前に決定しておく必要があります。
    • 通常ドメイン名の逆で記載します。(例: com.fenrir-inc.boltzmessenger)
    • BoltzMessenger ご使用の場合は、御社の逆ドメイン + boltzmessenger としていただくことを推奨します。
  • iOS デバイスの UDID (開発・デバッグ実行する場合、Ad Hoc 配布をする場合)
    • インストールが許可される端末を特定するために必要です。

この作業をすると、以下のものを準備することができます。

  • 開発・配布用の証明書・秘密鍵・公開鍵

  • プロビジョニングプロファイル

    • アプリを実機に転送する署名をするときに使用します。
  • APNs 本番環境・検証環境用の証明書・秘密鍵・公開鍵

    • こちらはサーバー側(BoltzEngine)で使用します。

実施する作業

以下の作業を実施します。

  • ビルド用証明書(開発用証明書 / 配布用証明書)の発行
  • App ID の登録
  • APNs 証明書(サンドボックス(検証)環境用 / 本番環境用)の発行
  • 配布先デバイスの登録 (開発・アドホック配布の場合)
  • プロビジョニングプロファイルの作成
  • サーバー用の証明書ファイル作成

Apple Developer Program の契約

まだ Apple Developer Program への加入を行っていない場合は、下記のサイトから登録してください。なお、Xcode 7 以降で使用できる無料版では、プッシュ通知に必要な証明書を発行することができませんのでご注意ください。

App Store 経由で一般配布用のアプリを開発する場合

Apple Developer Programを契約します。登録された端末でのデバッグ実行・アドホック配布の他、App Store でのアプリ配信が可能です。

社内・社員向けにアプリを直接配布する場合

Apple Developer Enterprise Programを契約します。登録された端末でのデバッグ実行・アドホック配布の他、社内・社員向けに数量に制限なく配布が可能なIn Houseビルドが利用できます。

ただし、In Houseビルドの外部漏洩はAppleとの契約違反となりますのでご注意ください。

アドホック配布とは

アドホック (Ad Hoc) 配布は、Apple Developer Programのアカウント上に登録した端末に限定して配布することができる機能です。

登録できる端末は、開発・アドホック全体で各アカウントごとにiPhone, iPad, iPod touchそれぞれ 100 台ずつまでです。

Xcode の準備

XcodeをMac App StoreもしくはAppleの公式サイトよりダウンロード・インストールしてください。

状況により、古いXcodeが必要な場合、Downloads for Apple Developersのページからダウンロードすることができます。このサイトからダウンロードしたXcodeを直接Applicationフォルダにコピーせず、一度別のフォルダにコピーした後、名前を変更(Xcode6.4.appなど)したうえでアプリケーションフォルダに移動させることで、1つの環境に複数バージョンの Xcode を共存させることができます。

証明書の発行要求の作成

ここから先の手順では、証明書の発行要求ファイル(CSR,certSigningRequest)を作成してアップロードする手順が複数回存在します。証明書の発行要求は以下の手順で作成できます。要求する証明書ごとにこの作業を行う必要があります。

まず、Mac で「キーチェーンアクセス」を起動します。アプリケーションフォルダのユーティリティの中にありますが、画面右上の虫眼鏡アイコン(Spotlight)で「キーチェーンアクセス」と検索すると簡単に見つけることができます。

キーチェーンアクセスが起動したら、画面左上の[キーチェーンアクセス]メニューから[証明書アシスタント]をポイントし、[認証局に証明書を要求…]をクリックします。

※証明書を選択した状態でこのメニューを開くと [’…‘として認証局に証明書を要求…] となります。更新の場合は選択した状態で実行しますが、新規の場合は選択を外して再度やり直してください。

開いたウィンドウでウィザードを進めると、証明書発行要求のダイアログが表示されます。下記の通り入力します。

入力項目 入力内容
ユーザーのメールアドレス Apple ID のメールアドレスを入力します。
通称 識別しやすい名前を入力します (キーチェーンアクセスに秘密鍵・公開鍵がこの名前で登録されます)
CA のメールアドレス 空欄
要求の処理 ディスクに保存

certSigningRequest ファイルを保存する画面となりますので、デスクトップなどわかる場所に保存してください。保存されたファイルを各手順で表示されるアップロード画面でアップロードすることで証明書が発行されます。

証明書を発行できたら、発行された証明書をキーチェーンに取り込みます。ダウンロードした cer ファイルを開くと、キーチェーンに登録して良いか確認が表示されます。キーチェーンが[ログイン]となっていることを確認して[追加]をクリックすると、キーチェーンに証明書が取り込まれます。

キーチェーンの分類で証明書を選択し、作成した秘密鍵と対になっていることを確認します。

※certSigningRequest ファイルは一度アップロードして証明書が発行された後は不要となりますので、破棄してもかまいません。

Certificates, Identifiers & Profiles ページでの操作

iOS Developer Program の Member Center 内にある Certificates, Identifiers & Profiles ページでは、Mac, iOS アプリの署名に使用する各種証明書の発行、iOS アプリに Apple が提供する各種クラウドサービスの有効化を行うことができます。

開発用証明書・配布用証明書の発行

Xcode でアプリに署名するための証明書を発行します。Certificates画面を開き、画面右上の[+]をクリックします。

発行する証明書を選択する画面となりますので、目的の証明書を選択します。

種類 内容
iOS App Development Xcode でデバッグ実行するための「開発用証明書」
App Store and Ad Hoc (Apple Developer Program) 配布用のビルドを作るための「配布用証明書」
In-House and Ad Hoc (Apple Developer Enterprise Program) 配布用のビルドを作るための「配布用証明書」

※開発用証明書を使用する場合、APNs はサンドボックス環境となり、サーバーもサンドボックス専用にセットアップする必要があります。

その後、ページの指示に従って進めると、証明書発行要求をアップロードする画面となります。「証明書の発行要求の作成」の手順で作成した certSigningRequest ファイルをアップロードしてください。

アップロードすると証明書ファイルが生成されるので、ダウンロードします。

App ID の作成

作成するアプリの Bundle Identifier を登録し、Apple の各種サービスをアプリで利用できるようにします。iOS App IDs 画面を開き、画面右上の[+]をクリックします。

表示された画面でアプリに関する情報を入力します。

入力項目 入力内容
Name アプリの名前などを入力します。英数字とスペースが使えます。
App ID Prefix 特に理由がなければ末尾に (Team ID) と表示されているものを選択します。(利用開始時期によっては表示されません)
App ID Suffix [Explicit App ID] を選択し、Bundle ID に事前に決めておいた Bundle Identifier を入力します。
App Services Push Notification にチェックを入れてください。(デフォルトでONとなっていて解除できないものもあります)

APNs証明書の作成

サーバー(BoltzEngine)側に登録する証明書を作成します。iOS App IDs画面を開き、一覧から先ほど作成したApp IDを選択し、[Edit]を開きます。

アプリで使用するサービスの設定画面となりますので、画面の中にある[Push Notifications]の欄を開き、[Development SSL Certificate]もしくは[Production SSL Certificate]を開きます。

その後、ページの指示に従って進めますと、証明書発行要求をアップロードする画面となりますので、「証明書の発行要求の作成」の手順で作成した certSigningRequest ファイルをアップロードして証明書を発行し、発行された証明書をキーチェーンに登録してください。

※本番環境用・本番環境用でそれぞれ作成する場合は、手順を繰り返してください。環境ごとに証明書発行要求は作成し直してください。

デバイスの登録

開発・アドホック配布で使用する場合は、デバイスを Apple Developer Program 上に登録する必要があります。

登録の際、端末の固有 ID (UDID) という値が必要となります。iTunes もしくは Xcode で取得が可能です。

iTunes を用いて UDID を取得する

iTunes のデバイス画面を開き、表示されているシリアル番号をクリックします。

Xcode を用いて UDID を取得する

デバイスを USB 接続した状態で Xcode の [Window] メニューから [Devices] を選択し、開いたウィンドウから接続中のデバイスを選択すると、Identifier が表示されますので、こちらを選択してコピーしてください。

デバイスを登録する

iOS Devices画面を開き、画面右上の[+]をクリックします。

表示された画面で端末の情報を入力します。

入力項目 入力内容
Name 端末に名前をつけます。管理上都合の良い名前を指定します。
UDID 取得した UDID を入力します。

プロビジョニングプロファイルの作成

プロビジョニングプロファイルはアプリ・署名する証明書・配信先のデバイスの組み合わせや有効になっているサービスの情報などが書き込まれたファイルで、署名時に証明書と共に使用されます。

Provisioning Profiles画面を開き、画面右上の[+]をクリックします。

プロビジョニングプロファイルの目的を選択する画面となりますので、以下の中から適切なものを選択します。(画面はApple Developer Enterprise Programのものです。Apple Developer Program の場合は In House の部分が App Store となります)

選択項目 内容
iOS App Development 開発用
App Store App Store 配信用 (Apple Developer Program)
In House In House 配布用 (Apple Developer Enterprise Program)
Ad Hoc アドホック配布用

次の画面に進むと App ID の選択となりますので、対象となるアプリの App ID を選択して次の画面に進んでください。

署名に使用する証明書の選択となりますので、証明書を選択して次の画面に進んでください。

開発用プロファイルとアドホック配布用プロファイルの場合は、転送先のデバイスを選択する画面となります。使用するデバイスを選択して次の画面に進んでください。

最後にプロファイルの名前を入力する画面となります。管理上都合の良い名前を入力して次の画面に進んでください。

プロファイルが作成され、ダウンロードできるようになります。ダウンロードしたファイルを開くと Xcode が開き、取り込まれます。(画面上は何かが起こったように見えない形になっています)

サーバー向けに証明書を出力する

BoltzEngine の関連ツールではキーチェーンに登録された APNs 用証明書を書き出してパスワードを解除され、証明書と鍵が分割されているPEMファイルが必要となります。キーチェーンからは一度 PKCS#12(p12) 形式で出力し、それを openssl コマンドで変換します。

キーチェーンアクセスの分類から[証明書]を選択して、Apple Development Push Service(サンドボックス(開発)環境用) または Apple Production Push Service(本番環境) の証明書を右クリックし、["…“を書き出す…]を選択します。ファイル保存先のダイアログが表示されますので、[個人情報交換 (.p12)]が選択された状態でファイルに書き出します。

次に、ターミナルを開きます。(キーチェーンアクセスと同じ場所にありますが、これもSpotlightで検索して開くことができます)

デスクトップに key.p12 というファイル名で保存している場合、下記のようにコマンドを入力します。デスクトップに key.pem と cert.pem が作成されます。

1openssl pkcs12 -in ~/Desktop/key.p12 -out ~/Desktop/key.pem -nodes -nocerts
2openssl pkcs12 -in ~/Desktop/key.p12 -out ~/Desktop/cert.pem -nodes -clcerts -nokeys

証明書と秘密鍵が一体となったタイプのPEMファイルが必要なシステムの場合、ここから更に以下のコマンドのような形で結合できます。

1cat ~/Desktop/cert.pem ~/Desktop/key.pem > ~/Desktop/apns.pem

証明書の更新

この方法で作成した APNs の証明書は1年に1回の更新が必要となります。

更新用に、証明書は Development と Production でそれぞれ最大2つまで作成が可能になっていますので、更新時期が近づいたら新しい証明書発行要求を作成して証明書を差し替えてサーバー上の証明書を更新しましょう。

なお、期限が切れた証明書は自動的に Apple のサイト上から削除されるようになっています。

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら