1.今回は前回の準備編で用意した諸々のファイルと情報をプログラムに組み込んで行きたいと思います。
前回、サーバーにアップロードしたファイルのexample.phpをベースに説明して行きたいと思います。
目標としては、
・作ったクーポンが表示される
・作ったクーポンがPassbookに登録される
以上2点とします。詳しいカスタマイズについては特に説明しません。
2.準備編で作った、
・.p12ファイル
・.pemファイル
の2点をサーバーにアップロードします。
場所はどこでもいいですが、できればドキュメントルートの一つ上の階層等、ブラウザからアクセスできない場所がいいかもしれません。
3.example.php修正必要箇所
[Line 6:]・・・.p12ファイルへのパス
[Line 7:]・・・.p12の展開に必要なパスワード
[Line 8:]・・・WWDR intermediate certificateの.pemファイルへのパス
[Line11:]・・・新たに作ったPass Type ID
[Line15:]・・・teamIdentifier
以上です。
備考:
現象として、「クーポンは表示されるがPassbookに入らない!」という事があります。
原因としては、.p12とPass Type IDがマッチしていない場合が多いようです。
原因を調べる方法としては、
1.PKPass.phpの222行目の「$this->clean();」をコメントアウトする。
そうすると、tmpフォルダ内にクーポンのファイル[pass.pkpass]が残ります。
2.pass.pkpassをローカルにダウンロードしておき、iOS Simulator(iOS6以降)とコンソールを起動。
3.立ち上がったiOS Simulatorにダウンロードしたpass.pkpassをドラッグ&ドロップ。
4.そうすると、コンソールに、
yy/mm/dd hh:ii:ss passd Invalid data error reading card pass.xxxxxxxx.jp.xxxxxx/xxxxxx-xxx-xxx. The passTypeIdentifier or teamIdentifier provided may not match your certificate, or the certificate trust chain could not be verified.
といったメッセージが表示される事があります。
このメッセージの意味としては、「passTypeIdentifierまたはteamIdentifierが証明書(.p12)とマッチしてないかも?」といった意味合いかと思います。
そういった場合、準備編で説明した.p12を作り直したりしてみると改善する場合があります。