2012年11月22日木曜日

PassBook生成PHPライブラリー PHP-PKPassの使い方 〜実装編〜


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を作り直したりしてみると改善する場合があります。

PassBook生成PHPライブラリー PHP-PKPassの使い方 〜準備編〜


1.ファイル本体のダウンロードとアップロード
 https://github.com/tschoffelen/PHP-PKPass
 このサイトにアクセスし、[ZIP]ボタンをクリックしダウンロード。
 ダウンロードしたzipファイルを展開すると以下の内容が入っています。

 example.php
 full_sample/
  ┣icon.png
  ┗index.php
 images/
  ┣icon.png
  ┣icon@2x.png
  ┗logo.png
 PKPass.php
 readme.md
 starbucks_sample/
  ┣background.png
  ┣icon.png
  ┣icon@2x.png
  ┣index.php
  ┣logo_web.png
  ┗logo.png

 これらのファイルをサーバーにアップロードします。
 ※アップロードしたフォルダにtmpフォルダを作成しパーミッションを777にしておいてください。


2.下準備 〜その1〜
 このクラスを使うにはいくつかファイルといくつかの情報を用意する必要があります。

 1.Pass Type IDsの用意
 https://developer.apple.com/ios/manage/passtypeids/index.action
 にアクセスし、新たにPass Type IDを作成します。












 



 2.DescriptionとIdentifierを入力します。
  Identifierの形式はpass.domainname.passnameとします。
  Descriptionはただの説明なので自分が分かりやすければなんでもOK。
















 3.Submitすると、Pass Type IDsの一覧に戻りますので、2で追加したものがあるか確認して下さい。
  次に、新たに登録したPass Type IDの生成作業を行いますので右側のConfigureリンクをクリックします。
  画面が変わったらConfigureボタンをクリックします。

















 4.[Generate a Certificate Signing Request]という画面が表示されます。
  ここでPass Type IDに署名する証明書を生成します。
  [Continue]ボタンをクリックすると、「証明書をアップしてくれ!」といわれるので、


















  http://blog.img-src.jp/2012/03/iphone.html
  の1)でFinderに保存した拡張子が[certSigningRequest]のファイルをアップロードします。



















 5.画面が代わり、「Your Pass Certificate has been generated.」と表示されれば完了です。
  [Continue]ボタンをクリックし、画面上部の[Download]をクリックすると、
   ・pass.cer
  というファイルがダウンロードされます。



















 6.ダウンロードしたpass.cerをダブルクリックすると、Keychainが立ち上がります。
  左側のキーチェーンを[ログイン]、分類を[自分の証明書]とすると追加された証明書が分かりやすいです。
  「Pass Type ID:(2.でいれたIdentifier)」という証明書がそれです。
  この証明書の上で右クリックし、「Pass Type ID:(2.でいれたIdentifier)を書き出す」を選択し、
  フォーマットを「個人情報交換(.p12)」を選択し、適当な名前で保存して下さい。














 7.この.p12ファイルを保護するためのパスワードを求められるので、適当なパスワードを2回入れ、「OK」をクリックして下さい。
  この際、入力したパスワードは後ほど使用しますので、忘れないようにしてください。

 8.teamIdentifierの取得
  https://developer.apple.com/ios/manage/passtypeids/index.action
  にアクセスし、上で新たに作ったPass Type IDの右側の[confirure]をクリックします。
  [ID]というピクトの右側にある「(10桁の英数).(2.でいれたIdentifier)」の10桁がteamIdentifierですので、控えておきます。
















3.下準備 〜その2〜
 1.https://developer.apple.com/ios/manage/certificates/team/index.action
  にアクセスし、WWDR intermediate certificateをダウンロードします。
















 2.ダウンロードしたAppleWWDRCA.cerをダブルクリックすると、Keychainが立ち上がります。
  左側のキーチェーンを[ログイン]、分類を[証明書]とすると追加された証明書が分かりやすいです。
  「Apple Worldwide Developer Relations Certification Authority」という証明書がそれです。
  この証明書の上で右クリックし、「Apple Worldwide Developer Relations Certification Authorityを書き出す」を選択し、
  フォーマットを「PEM形式(.pem)」を選択し、適当な名前で保存して下さい。













以上で準備は完了です。



まとめ

・Pass Type IDを新たに作る
・新たに作ったPass Type IDの証明書から作った「.p12」ファイルを用意する
・「.p12」ファイルのパスワード
・teamIdentifierを控えておく
・Apple Worldwide Developer Relations Certification Authorityから作った「.pem」ファイルを用意する



次回は実際にassBook生成PHPライブラリー PHP-PKPassの使い方を説明します。


2012年6月4日月曜日

札幌のカフェ・喫茶店 宮田屋珈琲


深い香りに包まれる、癒しの空間。

札幌のカフェ・喫茶店の宮田屋は、新鮮な自家焙煎の珈琲と癒しの空間でお客様のお越しをお待ちいたしております。
贈り物に最適なコーヒーギフトもございますので、ぜひ一度足をお運びください。

2012年5月7日月曜日

iPhoneアプリ開発 登録・申請まとめ

●iOS Provisioning Portal 関連
 ・Certificates

 ・Devices

 ・App IDs

 ・Provisioning

●iTues Connect 関連
 ・Manage Users(1)(2)
 ・Contracts,Tax,and Banking(3)(4)(5)(6)
 ・Manage Your Applications(7)

●App Store 申請関連

iPhoneアプリ開発 App Storeへの申請

(1)アプリのアーカイブ
App Storeへの申請はXcodeで行う。
Xcode上部メニューのProduct > Archiveでアップするアーカイブを作成

Xcode

(2)OrganizerでValidate
iTunes ConnectのアプリのView Details画面で「Ready to Upload Binary」をして置くこと

Xcode Organizer


(3)OrganizerでDistribute


(4)ハマッたところ

XcodeのBundle identifier
iOS Probisioning PortalのDistributionのApp IDと
iTunes ConnectのApp InformationのBundle IDが全て一致していないとエラーになる


iOS Provisioning PortalのProvisioning画面

iTunes ConnectのApp Information画面

iPhoneアプリ開発 試験端末の登録

Macに試験端末を接続しiTunesを起動し、赤枠のシリアル番号をクリックすると識別子(UDID)が表示される。

iOS Provisioning PortalのDevices画面で「Add Devices」

Add Devices画面で登録

Device Name → 判りやすい任意の名称
Device ID (40 hex characters) → 先程のiTunesで確認したUUID


2012年5月6日日曜日

iPhoneアプリ開発 iTunesConnectへの登録

英語で毎回悩みそうなので、やった事を φ(.. )メモシテオコウ




(1)iTunesConnectにログイン後、ユーザー登録


(2)「Add New User」クリック

    First Name :
    Last Name :
    Email Address :
    などを入力



(3)連絡先・銀行情報・税金などを設定



(4)「Contact Info」の入力

Create New Personで登録し、下のプルダウンを選択する

(5)「Bank Info」の入力


・Add Bank Account で銀行情報を追加


・Bank Country: → Japan
・全銀コード
 (数字4桁の銀行コード+数字3桁の支店コード)
  Don't know your Zengin Code? Lookup your Bankで検索出来ます。
 (ちなみに北洋銀行はNorth Pacific Bankで登録されていた・・・。カッコつけないでHokuyo Bankでいいじゃん・・・
  北海道銀行はHokkaido Bank、北陸銀行はHokuriku Bank)
・Bank Account Number: → 口座番号
・Account Holder Name → 口座名義
・Bank Account Type: → TOUZA or FUTSU
・Bank Account Currency: → JPY
でNext
・I certify that the information above is …. チェック後送信





(6)「Tax Info」の入力

・U.S. Tax Forms を選択後

・Are you a U.S. citizen, U.S. resident, U.S. partnership, or U.S. corporation? → No
・Do you have any U.S. Business Activities? → No
・Certificate of Foreign Status of Beneficial Owner → Type of Beneficial OwnerとTitleの入力
・I declare that the individual or organization named i…. → チェック後送信

・I certify that the information above is …. チェック後送信

一回設定したら、変更できません的な事を最後に言われた。。。



(7)「Manage Your Applications」の入力

・Add New Appをクリック

 Default Language → Japanese
 App Name → アプリの名称
 SKU Number → 単品コード(製品管理コード?識別コード)ユニークであればいいらしい
 Bundle ID → 公開用に登録したApp ID



 入力したら「continue」

Availability Date → 公開可能日
Price Tier  → 価格帯
Discount for Educational Institutions → 教育機関のための割引(チェック外す)
Custom B2B App → B2B用アプリ(一般顧客には販売できない)




入力したら「continue」


●Version Information

Version Number → バージョン

Copyright → 著作権

Primary Category → メインのカテゴリ
Secondary Category (optional) → セカンダリのカテゴリ
Review Notes (optional) → 追記

Rating
アプリケーションに猥褻な内容や、ポルノ、攻撃あるいは中傷的な内容が含まれていないのでNoneを全てチェック
●Metadata
 Description → 説明
 Keywords → キーワード
 Support Email Address → サポートメアド
 Support URL → サポートサイト
 Marketing URL (optional)
 Privacy Policy URL (optional)

●EULA(End User License Agreement)
 独自のEULAがある場合は記述

●Uploads
 Large App Icon → AppStore用の512x512pxのアイコン

 iPhone and iPod touch screenshots → iPhone and iPod touch用のスクリーンショット
 (iPhone and iPod touch Screenshots must be .jpeg, .jpg, .tif, .tiff, or .png file that is 
  960x640, 960x600, 640x960 or 640x920 pixels, at least 72 DPI, 
  and in the RGB color space.)

 iPad Screenshots → iPad用のスクリーンショット
 (iPad Screenshots must be .jpeg, .jpg, .tif, .tiff, or .png file that is 
  1024x768, 1024x748, 768x1024, 768x1004, 2048x1536, 2048x1496, 1536x2048 or 1536x2008 pixels, 
  at least 72 DPI, and in the RGB color space.)


登録が終わりManage Your Appsのトップページに戻るとアプリが登録されている




登録したアプリをクリックしApp Information画面へ。

Statusが「Prepare for Upload(アップロードの準備中)」になっている
現在、アプリのアップデートはXcode Organizerでやるらしく、ここのStatusを「Waiting For Upload」変えてあげないとXcode OrganizerでValidateしてもエラーになる。ここでもかなり嵌った。。。。。



右上の「Ready to Upload Binary」をクリックし
つ「Export Compliance」画面で



Is your product designed to use cryptography or does it contain or incorporate cryptography? → No

(Binaryが暗号化されていたり、暗号化を含んでいるかどうか)

iPhoneアプリ開発 Provisioningの登録

●Provisioningの登録とダウンロード


Developmentは開発時に必要
Distributionは公開時に必要ですので、
適宜、上部のタブを選択しProvisioningを登録する




●Development Provisioning Profile(開発用)の作成例


・Profile name → 判りやすい識別名を入れる
Certificates → チェック
App ID → 適宜選択
Devices → Devicesで登録した試験端末が表示されるので適宜チェック

Distribution(公開用)も基本的に同じです。

iPhoneアプリ開発 App IDsの登録

App IDsの登録

アプリの開発や公開をするためにApp IDを登録。
開発用のIDと公開用のIDでひとつのアプリにつき2つ必要。

Description → 説明
Bundle Seed ID (App ID Prefix) → AppIDの前につく文字列(編集不可)
Bundle Identifier (App ID Suffix) → AppIDの後ろにつく識別名 Example: com.domainname.appname



ここで指定したAppIDのBundle identifierをXcodeで制作中のiPhoneアプリに指定してあげないとエラーが出てかなり嵌まる。。。。

iPhoneアプリ開発 公開する証明書の登録

iOS Provisioning Portalへログイン後、左ナビの「Certificates」をクリックし公開用証明書を登録する。
証明書の作成方法は、開発時と同じです。
http://blog.img-src.jp/2012/03/iphone.html

2012年3月27日火曜日

Macのショートカット224個

http://capture.heartrails.com/

Macはショートカットを使いこなすともっと便利に使えます。よく行う操作のショートカットがあれば、ぜひ覚えておきたいですね。

2012年3月5日月曜日

iPhoneアプリ開発 Developper証明書のcer形式からp12形式への変換

(1)キーチェーンアクセスを起動
iPhoneDeveloper登録した英語の名前と関連付けられている証明書を探す。
このセットが秘密鍵と証明書のセットです。


秘密鍵を選択し、ファイル>書きだす で.p12形式で保存


iPhoneアプリ開発 AdMob広告のインストール

iPhoneアプリに広告を入れてみようと思い、試してみました。

(1)AdMobに登録してSDKをダウンロード

(2)Projectを右Clickでコンテキストメニューを表示し「Add Files to...」を選択



(3)ダウンロードしたSDKを選択し「Add」



(4)プロジェクト>TARGET>BuildPhases>Link Binary With Librariesを選択し+Buttonを押して下記のライブラリを追加
  • AudioToolbox
  • MessageUI
  • SystemConfiguration
  • CoreGraphics
  • libGoogleAdMovAds



(5)アプリのソース内のUIViewControllerに下記を適宜追加



(6)ViewDidLoad部分に下記を適宜追加



(7)インストール完了

2012年3月1日木曜日

iPhoneアプリ開発 証明書のインストール

iPhone実機でアプリを検証するためには、AppleDevelopper登録をして、そこで手に入れた証明書をMacにインストールしなければなりません。
その証明書のインストール手順です。

1)認証局に証明書を要求するため、Macで証明書(リクエスト)を作成


2)Apple Developerにログイン後、1で作った証明書をアップロード


3)証明書をダウンロード

4)3で作った証明書をダブルクリックで2つともインストール


5)インストールされたか確認

これで完了!


2012年2月27日月曜日

facebookページとfacebookスポットの統合方法

facebookページとfacebookスポットの統合方法ですが、昔はかなり面倒で申請も必要だったのですが、今は随分と簡単にできるようになったんですね。


画像はクリックで拡大できます。

「いいね」してくださいww ↓
http://capture.heartrails.com/