2015年8月6日木曜日

Production 用の証明書を使って NCMB で APNs プッシュ送信の実機テストをする方法

概要

過去に紹介した記事で iOS のプッシュ方法を紹介しました
このときに使用していたプッシュ送信用の証明書は Development 用の証明書を使っており、この証明書は普通アプリ公開時には使用しません
別途 Production (Distribution) 用の証明書を作成してこれを使うのですが、公開する前にテストしたい場合も多いと思います
結構ハマったので自分が実施した手順を紹介します

環境

  • Mac OS X 10.10.4
  • Xcode 6.4
  • iPhone6 (iOS 8.4)
  • Developer Member Center 20150806 時点

手順

基本的な手順はこれと同じです
上記手順の中で注意することを紹介していきます

作成済みのAppIDのプッシュ通知の Distribution 側を有効にする

AppIDがない場合は適当に作成してください

すでに作成したAppIDがある場合は「Edit」からプッシュ通知を有効にすることができます
Edit したらプッシュを有効にする項目があるのでそれのチェックボックスをONにします

ONにしたら続けて証明書を作成しましょう
すぐ下に「Create Certificate」というボタンが出ると思うので Production SSL Certificate の方のボタンをクリックして証明書を作成します
証明書の作成は過去に紹介した方法と同じになります
事前に作成していると思われる CSR を指定して証明書を作成しましょう
Production 用のプッシュ送信用の証明書を作成すると証明書の情報に「APNs Production iOS」と表示されます
production_cert.png

以下は Production 用の証明書まで作成が完了してプッシュ通知が有効になっている状態のAppIDになります
この状態になっていればOKです

enable_push.png

証明書から .p12 ファイルを作成する

先ほど作成した Production 用の証明書ダウンロードします
ダウンロードした証明書をダブルクリックしてキーチェーンアクセスで開きましょう
あとは過去の記事を参考に .p12 ファイルを作成すればOKです

一応、NCMB を想定しているので作成した .p12 ファイルはアップロードしておくといいと思います

Adhoc 用のプロビジョニングプロファイルを作成する

これが一番重要かと思います
Developer Member Center で Adhoc 用のプロビジョニングプロファイルを作成しましょう

作成を開始するとプロビジョニングプロファイルファイルの種類を選択する画面になると思います
そこで Distribution 側の「Ad hoc」を選択しましょう

choice_adhoc.png

次は AppID を選択する画面なのでプッシュ通知を有効にした AppID を選択しましょう
証明書の選択画面ではプッシュ通知用の証明書を選択しません(というかできません)配布用の証明書を素直に選択しましょう
その次で Ad hoc で配布する端末を選択することになると思います
基本は全部チェックでいいと思います、適宜変更してください
そして、最後にプロビジョニングプロファイルの名前を入力します

これで Adhoc 用のプロビジョニングプロファイルの作成完了です
作成したプロビジョニングプロファイルはあとで Xcode と同期して Xcode 上のプロジェクトに指定します

サンプル用のプロジェクトを作成

特に気にすることはないと思います
普通に作成しましょう
過去の記事を参考にデバイストークンを登録する処理までコーディングしてしまってください

プロジェクトをAdhocビルドできるようにする

ここもポイントです

まず

Xcode -> Preferences -> Accounts -> View Details (右下) -> 更新ボタン (左下)

を実行し Developer Menter Center 上のプロビジョニングプロファイルの情報を Xcode に同期しましょう

同期が完了したらプロジェクトのビルドの設定をします

プロジェクトを選択 -> Build Settings -> Provisioning Profile

で先ほど作成した Adhoc 用のプロビジョニングプロファイルを指定しましょう
Provisioning Profile の欄がない場合は実機を接続して一回実機でビルドしようとするとエラーになり、その欄が登場すると思います

Provisioning Profile の欄を設定したら、その上の「Release」の欄を Distribution 用の証明書を指定しましょう
最終的に以下のようになっていればOKです

set_adhoc_build.png

ビルドして .ipa ファイルを作成する

実機を接続 -> Product -> Archive

でビルドします
すると Archives というビルド結果の一覧のダイアログが表示されるので、右側にある「Export」を実行します

まずエクスポート方法を選択します
真ん中の「Save for Ad hoc Development」をクリックします

choice_export_mode.png

次にユーザを指定して、アーカイブが完了したら「Export」ボタンをクリックして .ipa ファイルをエクスポートします
保存先を選択しましょう

作成できた .ipa ファイルを実機に転送する

これは調べるといろいろと方法があるようです (Webサーバを使ったり、TestFlightを使ったり)
今回は iTunes を使った方法を紹介します

実機をつないだ状態で iTunes を立ち上げましょう
立ち上げたら iPhone を選択して App でアプリ一覧を表示しましょう

select_app.png

そしたら

ファイル -> ライブラリに追加

で先ほど保存した .ipa ファイルを指定します
すると iTunes 上に先ほど作成したアプリが登録されます

登録できたらインストールをクリックし右したので「転送」をクリックしましょう
これで Adhoc ビルドしたアプリを実機に転送することができます

動作確認してみる

ここまで来たら後はアプリを開いて動作確認してみましょう
今回は前回同様で NCMB の利用を想定しているためアプリを開いたときに NCMB 側にデバイストークンの情報が登録されればOKです
もちろん、サンプルプロジェクトを作成した段階で必要なコーディングは済ませておいてください

デバーストークンが登録できれば、あとは NCMB に .p12 ファイルをアップロードして、プッシュ通知を作成すればOKです

最後に

噂によると Xcodeだけでも .ipa ファイルの転送ができるので、それができる方はわざわざ iTunes とか起動しなくてもいいと思います
ハマったのはやはり Adhoc ビルドするところでしょうか
ずっと Development 用のプロビジョニングプロファイル指定して来たので Adhoc ビルドの存在自体を知りませんでした

Adhoc ビルドしていないアプリでもデバイストークンの登録はできるのですが、.p12 ファイルが Production 用だと証明書と一致せずうまく送信できません

とりあえず APNs は複雑すぎると思います

0 件のコメント:

コメントを投稿