APNs の利用

Kii Cloud で APNs を使ったプッシュ通知を利用するため、以下の点を理解しておくことが適切です。

より詳細な情報は、Apple のドキュメント を参照してください。

APNs を利用するための構成

APNs によるプッシュ通知は、デバイス、APNs サーバー、アプリケーションサーバー(Kii Cloud)の 3 つで実現されます。

APNs では、Kii Cloud と APNs サーバーとの間で SSL ベースの安全な接続が要求されます。SSL 接続のための証明書は、事前に Apple Developer Web サイト で取得し、開発者ポータルを使って Kii Cloud に登録しておきます。Kii Cloud は、APNs サーバーにプッシュメッセージの送信要求を出す際、この証明書を使って SSL 接続を行います。

なお、Apple Developer Web サイトを利用して証明書を取得するには、Apple Developer プログラムに登録しておく必要があります。

プッシュ通知で利用する証明書は、プッシュメッセージを送出するネットワークに応じて、開発用と配布用の 2 つがあります。それぞれ Apple Developer Web サイトから取得し、Kii Cloud に登録しておきます。Kii Cloud が送信要求を行う際は、送信対象のネットワークに応じて、開発用と配布用の証明書を使い分けます。

開発用と配布用のネットワークの選択は、Kii Cloud のメッセージ送信を行う際の API パラメータや、ユーザーインターフェイスの入力項目として指定します。

証明書の設定

プッシュ通知で利用する証明書を取得して、Kii Cloud に登録する手続きの流れは以下の図のとおりです。

図中の背景色が付いている箇所は、開発用の証明書を設定する操作として、iOS プッシュ通知設定チュートリアル の手順で実行できます。図の残りの部分は、リリース時までに配布用の証明書を登録を行うために実行します。

チュートリアルでは、以下の操作を案内しています。

  • App ID の登録(Xcode での自動登録)

    開発中のモバイルアプリの Bundle Identifier を Apple Developer Web サイトへ登録します。ここでは、Bundle Identifier は Apple の App ID として扱われます。

    Xcode の自動コード署名の機能を有効にした状態でモバイルアプリをビルド、実行すると、Xcode と Apple 社のサーバーが連携して、App ID が自動的に登録されます。したがって、プッシュ通知の設定手順を実行するには、事前に Xcode でのビルドを実行しておく必要があります。

    App ID は、Apple Developer Web サイトから手動で設定することもできます。

  • 証明書の入手

    ローカル PC のキーチェーンアクセスで作成した証明書要求ファイル(csr)を元に、Apple Developer Web サイトから証明書(cer)を取得します。取得した証明書は、秘密鍵と共にキーチェーンアクセスに格納されます。

  • 証明書のアップロード

    キーチェーンアクセスの証明書を個人情報交換ファイル(p12)に変換し、Kii Cloud の開発者ポータルに登録します。

プッシュ通知用の証明書の作成過程は、iOS アプリのビルド作業とも関連しています。

iOS アプリのビルドとの関連

APNs の設定を行う際は、iOS アプリのビルド手順も意識しておく必要があります。

Xcode 8 以降では、ビルド設定に "Automatically manage signing" があり、この設定をオンにすることで、コード署名に必要な手続きが自動的に実行されます。

以下、自動設定の基本的な流れを説明することで、プッシュ通知の設定に必要な情報を補足します。

実機用のビルドの流れ

Xcode で実機用のモジュールをビルドする際、実行モジュールに適切なデジタル署名が必要です。デジタル署名を行う際、証明書や実行許可があるデバイスを認識するための設定情報として、プロビジョニングプロファイルが参照されます。

iOS でプッシュ通知機能をテストする場合は iPhone シミュレータではなく、実機を使用する必要があります。

プロビジョニングプロファイルは Apple Developer Web サイトで作成されるビルド用の設定ファイルで、ビルド環境の PC にダウンロードして使用します。このファイルには以下のような情報が含まれます。

  • 実行ファイルのデジタル署名で使用できる証明書の一覧
  • モバイルアプリの App ID(Bundle Identifier と同じ ID)
  • 実行対象のデバイスを識別するための UDID

プロビジョニングプロファイルは、実行の用途に合わせて、開発用、インハウス用、Ad hoc 用、App Store 用の 4 通りがあります。また、デジタル署名で使用する証明書は、開発用(Development)、配布用(Production)の 2 通りがあります。プロビジョニングプロファイルと証明書の関係をまとめると、以下の表のようになります。

プロビジョニング
プロファイル
使用する
証明書
用途
開発用 開発用 通常の開発作業で使用します。App ID、使用できる開発者の証明書の一覧、実行対象となるデバイスを識別する UDID を含みます。
インハウス用 配布用 社内用アプリケーションのように、限定的なユーザーへの配布を想定したビルドで使用します。App ID、使用可能な配布用証明書を含みます。
エンタープライズ用の開発アカウントでのみ使用できます。
Ad hoc 用 配布用 テスト用アプリケーションのように、限定的なユーザーへの配布を想定したビルドで使用します。App ID、使用可能な配布用証明書、実行対象となるデバイスを識別する UDID を含みます。
App Store 用 配布用 App Store でアプリを公開するために使用します。App ID、使用可能な配布用証明書を含みます。UDID は含みません。

次の図に、Xcode でビルドを行った際に自動的に実行される手続きの流れを示します。特に、背景に色が付いている箇所は、iOS プッシュ通知設定チュートリアル を実行した際に設定される内容で、Xcode でデバッグ実行した際に自動的に設定される内容を表します。残りの手順はリリースモードでビルドする際に使用します。

Xcode のコード署名の自動化を使用しない場合は、Apple Developer Web サイトでこの流れに対応する操作を手作業で行う必要があります。これらの手順は Kii Cloud の機能範囲外であるため、詳細な情報が必要な場合は Web 上の一般的な技術情報をご覧ください。

コード署名用証明書とプッシュ通知用証明書の違い

コード署名で扱う開発用と配布用の証明書は、プッシュ通知で扱う開発用と配布用の証明書とは異なります。

  • コード署名の証明書

    コード署名に使用する開発用と配布用の証明書は、Xcode のビルドモードの Debug と Release に対応して使い分けられます。Xcode のビルドモードに応じて、どちらの証明書を使用して実行モジュールへのコード署名を行うかが決まります。

    通常、デバッグ作業は Debug モードで行うため、開発用の証明書が参照されます。また、App Store へのリリースには Release モードでビルドしたモジュールを使用するため、配布用の証明書が参照されます。

  • プッシュ通知の証明書

    プッシュ通知に使用する開発用と配布用の証明書は、プッシュメッセージを扱うネットワークの種類に対応して使い分けられます。

    APNs のプッシュ通知では、開発用と配布用の 2 種類のネットワーク環境を利用でき、開発目的で送出するプッシュ通知と、実運用で送出するプッシュ通知を区別して扱えます。デバイス上でプッシュ通知を待ち受ける際、Kii Cloud の初期化 API のパラメーターとして、開発用と配布用のどちらのネットワーク環境で初期化するかを指定します。また、メッセージ送信の API 引数や管理画面のユーザーインターフェイスで、送信対象となるネットワーク環境を指定します。

    Kii Cloud がプッシュメッセージを送信する際は、APNs のサーバーとの間で SSL 通信を行います。開発用のネットワークに対してプッシュメッセージを送信する際は、開発用の証明書を使って SSL 通信を行います。配布用のネットワークに送信する際は、配布用の証明書を使って SSL 通信を行います。

多くの場合、これら開発用と配布用の証明書は、同一の組み合わせで運用しますが、混在させることもできます。例えば、デバッグビルドされた実行モジュールから、配布用のネットワークにメッセージを送信することもできます。この場合は、コード署名を開発用の証明書で行い、プッシュメッセージの送出を配布用の証明書で行うことになります。