Intelligent Technology's Technical Blog

株式会社インテリジェントテクノロジーの技術情報ブログです。

iOS で GCM(Google Cloud Messaging)のプッシュ通知を試す(前編)

こんにちは。中山です。

先の Google I/O 2015 では、GCM(Google Cloud Messaging)が iOS にも対応する、ということが発表されていました。
このあたりの情報については、以下のようなページが参考になります。


しかし、発表からけっこう時間がたっているにもかかわらず、「GCM + iOS」の動作を手軽に試すための、日本語で書かれた簡単なガイド記事というのはなかなか見つかりません。
というわけで、今回私のほうで、
「とにかく簡単に GCM + iOS を試す」
ための記事を書いてみることにしてみました。


とはいえ、今回の内容は、実際にはほぼ、以下の Google のページの翻訳記事のような形になっています。

Try Google Cloud Messaging for iOS  |  Cloud Messaging  |  Google Developers

GCM で iOS デバイスにプッシュ通知できる、とはいうものの、APNs(Apple Push Notification Service)は、やはり利用しなくてはなりません。
しかしこの APNs 利用のための各種設定の情報についても、実はこの Google のページがいちばんわかりやすく書かれているのかなとも思ったり。

ではさっそく手順を追ってみたいと思います。おおまかな手順としては、

  1. APNs の設定を行って、
  2. GCM の設定を行って、
  3. サンプルアプリのプロジェクトを取得して、
  4. GCM の設定をサンプルアプリのプロジェクトに適用して、
  5. サンプルアプリを実行する。

というものです。
今回、内容が多いので、記事を前編、後編に分けました。
前編では、上記手順のうち、 APNs の設定の部分のみを取り扱います。すでにこのあたりの知識をお持ちの方は、サラッと読み飛ばしていただいて、後編を読み進めていただくのがよいでしょう。

なお今回利用した環境は以下のとおりです。

  • OS X 10.10.4
  • Xcode 6.4 *1
  • iPad(3rd generation iOS 9.0.2)

APNs の設定

APNs(Apple Push Notification Service)の設定は、以下のページの情報をもとに進めていきます。

Provisioning APNs SSL Certificates  |  Cloud Messaging  |  Google Developers

証明書の作成

Mac の「キーチェーンアクセス」アプリを起動して、そのメニューから「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求」を選択します。
表示された「証明書アシスタント」画面の中の、「ユーザのメールアドレス」「通称」に任意の値を入力します。
また「要求の処理」は「ディスクに保存」を選択します。

f:id:IntelligentTechnology:20151006162618p:plain

「続ける」をクリックすると、以下のようなファイル保存用ダイアログボックスが表示されます。
拡張子が「.certSigningRequest」のファイルを、任意のフォルダに保存します。

f:id:IntelligentTechnology:20151006162949p:plain

App ID の作成

Apple Developer Member Center のページに遷移し、サインインします。
サインイン完了後、表示された画面から「Certificates, Identifiers & Profiles」を選択します。
表示された画面で「iOS Apps」の「Identifiers」を選択します。

f:id:IntelligentTechnology:20151006164910p:plain

表示された画面で、右上の「+」ボタンをクリックして、新しい「App ID」を作成します。
「App ID Description」の「Name」欄に、新規登録する App ID を表す名称を入力します。(ここでは「GCM Sample App」としました。)

f:id:IntelligentTechnology:20151006171334p:plain

「App ID Suffix」は「Explicit App ID」を選択し「Bundle ID」欄に、対象アプリの Bundle IDを指定します。この値はユニークである必要があります。
今回は「jp.co.iti.samples.gcmexample」という値を指定しました。(この Bundle ID の値は、以降の手順でも何度か利用することになります。)

f:id:IntelligentTechnology:20151006171849p:plain

「App Services」では、「Push Notifications」にチェックをつけます。

f:id:IntelligentTechnology:20151006172156p:plain

「Continue」ボタンをクリックして、これまでの入力を確認します。「Push Notifications」のステータスが「Configurable」になっていることを確認しておきます。

f:id:IntelligentTechnology:20151006172653p:plain

入力確認後、「Submit」ボタンをクリックして、App ID を新規登録します。

App ID の設定更新

「Identifiers」→「App IDs」のリストから、先ほど新規登録した App ID「GCM Sample App」を選択して、下側に表示された「Edit」ボタンをクリックします。
表示された画面の、「Push Notifications」の「Development SSL Certificate」の部分の「Create Certificate」をクリックします。

f:id:IntelligentTechnology:20151006173657p:plain

表示された以下の画面で「Choose File」をクリックして、先ほど「キーチェーンアクセス」アプリで作成したファイル(拡張子が「.certSigningRequest」のファイル)を指定します。そのあと、「Generate」ボタンをクリックします。

f:id:IntelligentTechnology:20151006173812p:plain

以下の画面が表示されますので、「Download」をクリックして、ファイルを保存します。

f:id:IntelligentTechnology:20151006180152p:plain

ローカルにダウンロードされたファイル(aps_development.cer という名前でした)をダブルクリックして、キーチェーンにインストールします。
「キーチェーンアクセス」アプリを起動して、「自分の証明書」のリストに、該当する証明書が登録されていることを確認します。

f:id:IntelligentTechnology:20151006180536p:plain

リストからその証明書を右クリックして、「・・・を書き出す」を選択し、拡張子が「.p12」のファイルをローカル保存します。

f:id:IntelligentTechnology:20151006181000p:plain

今回は「gcmexample.p12」という名前で保存しました。

f:id:IntelligentTechnology:20151007143719p:plain

Provisioning Profile の作成

再度 Apple Developer Member Center のページに遷移し、サインインします。
サインイン完了後、表示された画面から「Certificates, Identifiers & Profiles」を選択します。
表示された画面で「iOS Apps」の「Provisioning Profiles」を選択します。
その後、右上の「+」ボタンをクリックします。

f:id:IntelligentTechnology:20151007122057p:plain

「iOS App Development」にチェックをつけて、「Continue」をクリックします。
次に App ID を選択します。先ほど新規登録した App ID(今回の場合は「GCM Sample App」の ID)を指定します。
その後、「Continue」をクリックします。

f:id:IntelligentTechnology:20151007122537p:plain

次の画面とその次の画面では、選択した App ID に関連づける証明書と、動作検証に利用する端末を選択します。

ここまで指定できたところで、以下の画面で、Provisioning Profile を識別するための名前を入力します。
今回は「GCM Sample App Development Profile」としました。

f:id:IntelligentTechnology:20151007123441p:plain

名称指定後、「Generage」ボタンクリックで、Provisioning Profile が新規作成されます。
以下の画面で「Download」をクリックして、Provisioning Profile ファイルをローカルに保存します。

f:id:IntelligentTechnology:20151007123727p:plain

ローカル保存した Provisioning Profile のファイルをダブルクリックして、インストールします。
ダブルクリックしても、特に変化はないので、インストールできているかどうか心配になるのですが、Xcode の「Preferences」→「Accounts」の「View Details」をクリックすると、

f:id:IntelligentTechnology:20151007124205p:plain

このとおり、正しくインストールできていることを確認できました。

そして後編へ

APNs の設定が完了したところで前編の手順は完了です。後編では、いよいよ GCM 側の設定と、サンプルアプリを実行するところまで実践してみたいと思います。

*1:すでに Xcode 7.0 がリリースされていますが、サンプルプロジェクトに含まれる、サーバ用サンプルアプリが、Xcode 7.0 ではビルドエラーとなるため、とりあえず、旧来の Xcode 6.4 を利用して検証しています。ほんとは Xcode 7.0 のビルドエラーも解消できればいちばんいいんでしょうけれども。