Passbook用クーポンの中身?

今日はiOS6から追加になった新機能、Passbookのクーポンの中身を解析してみました。

簡単に結論から言うと、必要なファイル一式を拡張子.passとしてzip形式で圧縮した物をクーポンと呼ぶようです。

クーポンのダウンロード

試しにFirefoxのアドオンを駆使してpassbank.jpから無印のクーポンをダウンロードしてみました。
するとD6FxoWjf.passなるファイルがダウンロードできました。これを展開すると以下のようなファイル一式が含まれています。

D6FxoWjf.pass
  - icon.png
  - logo.png
  - manifest.json
  - pass.json
  - signature
  - strip.png

 なんとなくここで気づいた人も居るかもしれませんが、どことなくGoogle Extensionの作りに似ていますね。

manifest.json

manifest.jsonの中身は以下のようになっています。.pass内のファイルをここで関連づけているようです。

{
"icon.png":"67fbd9b18ee48cde3c50235f82dce2a4ece80166",
"logo.png":"6f5005fc44f2b4585049785cc8828fc0bb923b77",
"pass.json":"86a293c842cd1f3e7d7da5c9cabc8a38093f7744",
"strip.png":"1f535e64f8b7ddb648db8242c110d20bffbe1da8",
}

pass.json

次にpass.jsonですが、こちらにクーポンの詳細が記入されているようです。

{
   "formatVersion":1,
   "passTypeIdentifier":"pass.com.passss.general",
   "teamIdentifier":"TJ96KD8A74",
   "serialNumber":"D6FxoWjf_IBGnrrUV",
   "organizationName":"無印良品 有楽町",  
   "description":"ブールドネージュ",
   "backgroundColor":"#F5F5DC",
   "labelColor":"#000000",
   "foregroundColor":"#000000",
   "suppressStripShine":true,
   "logoText":"",
   "relevantDate_": "",
   "associatedStoreIdentifiers_":[],
   "authenticationToken":"0MTXkBS96iEFzaQL",
   "webServiceURL":"https://passss-server.appspot.com/api/pkws/",
   "locations":[{"relevantText":"先着1000名様にプレゼント!","altitude":0.0,"longitude":139.765052,"latitude":35.675531}],
   "barcode" : {
    	"format":"PKBarcodeFormatQR",
    	"message":"D6FxoWjf_IBGnrrUV",
    	"altText":"D6FxoWjf_IBGnrrUV",
    	"messageEncoding" : "iso-8859-1"
   },
   "coupon":{
      "headerFields":[
      ],
      "primaryFields":[
         {                                               
            "key":"p1",
            "label":"",
            "value":"",
            "textAlignment":"PKTextAlignmentLeft"
         }
      ],                           
      "secondaryFields":[
         {                                               
            "key":"s1",
            "label":"",
            "value":"",
            "textAlignment":"PKTextAlignmentLeft"
         }
      ],
      "auxiliaryFields":[
      ],
      "backFields":[
         {                                               
            "key":"B1",
            "label":"説明",
            "textAlignment":"PKTextAlignmentLeft",
            "value":"【無印良品有楽町限定】\nPassbookでクーポンを提示されたお客様、先着1000名様に「ブールドネージュ 80g」をプレゼントします。\n\nブールドネージュは白い雪の玉という名前のフランス菓子で、無印良品で人気No.1のお菓子です。\nアーモンド入りの生地をまるく焼きあげ、粉糖をまぶして仕上げました。\n\n※予定数量に達し次第、終了とさせていただきます。\n※本クーポンのご利用は、お1人様1回限りです。\n※本クーポンを、無印良品 有楽町 1F総合受付にてご提示ください。\n\n無印良品 有楽町\n営業時間:10:00〜21:00\n東京都千代田区丸の内 3-8-3 インフォス有楽町1-3F\nTEL:03-5208-8241"
         }
      ],
      "transitType":"PKTransitTypeGeneric"
   }
}
位置情報について

locationsで位置情報を設定することで、iPhoneが一定距離に近づいた際に通知してくれるのでしょうか?

"locations":[{"relevantText":"先着1000名様にプレゼント!","altitude":0.0,"longitude":139.765052,"latitude":35.675531}],
バーコードの表示形式について

barcodeの項目でクーポンに表示するバーコードの形式を設定しているようです。このクーポンはQRコードかな?

   "barcode" : {
    	"format":"PKBarcodeFormatQR",
    	"message":"D6FxoWjf_IBGnrrUV",
    	"altText":"D6FxoWjf_IBGnrrUV",
    	"messageEncoding" : "iso-8859-1"
   },

 どことなくここまで分かれば自力でもクーポンの作成が出来そうですね。

AndroidでもPassbookのクーポンが利用できる?

未検証ですが、passwalletなるアプリを使用することで、AndroidでもPassbookのクーポンが表示できるようです。
ただし表示するためには個人でクーポンをダウンロードしpasswalletにインポートしてやる必要があるようです。
いずれ検証してみたいと思います。

ずばりクーポンの作り方

以下のサイトで項目に必要な情報を入力することでクーポンの作成が行えます。これって公式?
http://www.passsource.com/

と、今回はこの辺りでそろそろ寝ることにします。
おやすみなさい。。。