passbook是ios 6的新功能,隻能在iphone和ipod touch裝置中使用。它可以幫助我們管理商家發放的電子會員卡、積分卡、優惠券等。這将對未來電子商務産生深遠的影響。商家通過發放會員卡、積分卡、優惠券等,提高與消費者的互動,吸引人們更多消費。passbook的誕生,正是為了将所有這些“卡”和“券”電子化,存放在iphone或ipod touch裡。
passbook與pass
ios 6中的passbook能夠幫助我們集中管理電子“卡”和“券”,這些電子“卡”和“券”就是pass,passbook是這些pass集合管理應用。passbook與pass關系,passbook是我們的“卡包”,而pass是裡面的“卡”和“券”。

當我們選擇其中一個卡片後,卡片會滑出來,點選右下角“i”按鈕會翻轉到背面。在點選左上角的垃圾桶按鈕可以删除,彈出一個具有金屬質感的“碎紙機”樣式的确認框,當點選“删除”按鈕後,“碎紙機”會将卡片粉碎,還有動畫效果。每次用到這個功能的時候我都很驚歎,蘋果對于細節的設計無可挑剔。
pass的5種風格
ios 6目前提供了5種風格的pass,它們分别是:
boarding passes(登機牌)。雖然從字面翻譯為“登機牌”,但是它包括了登機牌、火車票和船票等種類的票證,在pass上面有起點和終點,時間和登機口等資訊。
coupons(優惠券)。或者打折卡,描述商品的優惠或打折資訊的電子憑證。一般上面會有商家的logo,打折比例,使用期限等資訊。
store cards(購物卡)。描述了使用者在商場或俱樂部中的賬号餘額電子憑證。一般上面會有使用者級别等資訊。
event tickets(入場券)。描述了體育比賽、演唱會、音樂會等入場券的電子憑證。一般上面會有一個大的背景圖檔,這個圖檔背模糊化了,還可以有清楚的縮圖。
generic(通用卡)。如果上面的4種不能滿足,我們可以使用這一種,它可以是自定義上面的内容。一個通用卡類型的會員卡。
pass的内部結構
每一個pass是一個zip格式的壓縮檔案,這檔案檔案的字尾名是pkpass,它通過一些特殊的方式發給使用者使用,這些特殊的方式我們會在後面介紹。如果我們把pkpass檔案使用解壓縮軟體打開,會看到如下内容:
pass
├── icon.png
├── logo.png
├── thumbnail.png
├── background.png
├── strip.png
├── manifest.json
├── fr.lproj
│ └── pass.strings
├── de.lproj
├── pass.json
└── signature
pass.json檔案是pass的核心,它描述了這個pass正面和背面的所有資訊。我們提供了這個pass需要顯示的所有圖檔。最後需要一個清單檔案manifest.json,它包含了所有這些檔案的sha1校驗值,和一個分離的簽名檔案signature, 這樣passbook能夠驗證這個pass在建立之後沒有被修改過。
pass kit程式設計:執行個體:mypass執行個體設計與說明
下面我們通過一個執行個體(mypass)介紹一下pass kit的程式設計過程,mypass執行個體設計原型草圖。mypass啟動的時候,首頁是表視圖畫面,它查詢本地裝置上的passbook中特定一些pass,然後然後顯示的表視圖畫面中。使用者點選“+”按鈕,如果登機牌pass存在則替換,否則添加登機牌pass到passbook,登機牌pass是從iosbook3.com伺服器請求下載下傳的。如果在表視圖畫面點選其中的單元格,則畫面跳轉到pass的詳細畫面,在詳細畫面中可以點選導航欄右上角的“remove”按鈕把目前pass從passbook中删除。
開始passbook
1、建立app id
任何一個ios應用都需要建立app id的,在description項目中輸入“pass kit dev”,bundle seed id (app id prefix)項目中選擇“use team id”。 bundle identifier (app id suffix)項目中輸入“com.51work6.mypass”。
建立成功獲得app id頁面,在app id清單中會發現我們剛剛建立的pass kit dev
2、配置pass可用
預設情況下建立的應用是不可以通路passbook的,我們需要點選configure超連結進入應用配置頁面,勾選“enable for passes”開啟pass可用。
配置完成點選右下角的“done”按鈕,儲存配置并回到app id的清單頁面,這時候再回來看一下我們剛剛配置的應用,它的pass狀态變為了綠色可用狀态了。
3、建立配置概要檔案
為了能夠編寫在裝置上應用,我們還需要建立配置概要檔案。建立成功之後下載下傳配置概要檔案到本地。
4、建立pass類型id
建立pass類型id也是重要的一個環節,我們需要設定的pass類型id是“pass.com.51work6.boarding-pass”。
5、配置xcode工程代碼簽名
前面的工作完成之後,我們需要建立和配置xcode工程,建立工程名“mypass”應用,然後進行配置xcode工程代碼簽名。這個簽名需要使用第3個步驟建立配置概要檔案。
選擇tagets→mypass→code signing identity,在後面選擇pass kit dev profile。
設定完成之後可以開始編碼工作了。
6、配置xcode工程配置授權資訊
配置授權資訊與icloud應用類似,選擇tagets→mypass→summary→entitlements,我們可以在這裡配置授權資訊。
授權資訊項目說明如下:
entitlements :勾選use entitlements file,指定一個授權檔案,這個檔案沒有會在你的工程目錄中自己建立,它記錄下面的授權詳細配置資訊的;
pass:是選擇pass類型辨別,先選擇use selected pass type identifier,然後勾選pass.com.51work6.boarding-pass;
到此為止,程式設計的前期準備過程就完成了,下面我們介紹執行個體的編寫過程。
通路passbook
對于pass的操作是通過pkpasslibrary類完成的,pkpasslibrary類不是單例設計的,獲得執行個體對象時候使用下面代碼:
pkpasslibrary* passlib = [[pkpasslibrary alloc] init];
在pkpasslibrary類中與通路passbook相關的方法有:
passes 獲得passbook中全部授權檔案指定的pass,我們在授權檔案中指定的pass類型id是pass.com.51work6.boarding-pass,是以該方法取得的是pass類型id為pass.com.51work6.boarding-pass的所有pass。
passwithpasstypeidentifier:serialnumber: 通過指定的pass類型id和序列号獲得pass對象。
下面我們看看相關的程式代碼,viewcontroller.h代碼如下:
viewcontroller.m相關代碼如下:
釋出pass
pass簽名和壓縮成功之後,如何把pkpass檔案釋出給使用者使用呢?對于提供給普通使用者pkpass檔案,我們有3種釋出方式:email釋出、web網站釋出和應用程式内釋出。
email釋出
這種釋出方式是pkpass檔案作為email附件發送給使用者,使用者最好在他的iphone或ipod touch裝置上打開郵箱讀取email。email附件中的pass,附件中的圖示是在pass中的logo.png檔案。
當點選這個附件“store card”後頁面會跳轉,點選導航欄右邊的“add”按鈕,會将這個pass添加到passbook中。
如果使用者沒有在它的iphone或ipod touch中接收email,可以在mac os x 10.8.2以上系統中,使用郵件應用程式接收這個郵件。
點選郵件中的“檢視憑證…”按鈕,會彈出添加pass的對話框。
如果這個pass沒有添加到passbook,右下角的按鈕為“添加到passbook”,如果已經添加到passbook則這個按鈕是“完成”或“更新”。