iOS開發那些事-Passbook詳解與開發案例

來源:互聯網
上載者:User

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

├── icon@2x.png

├── logo.png

├── logo@2x.png

├── thumbnail.png

├── thumbnail@2x.png

├── background.png

├── background@2x.png

├── strip.png

├── strip@2x.png

├── manifest.json

├── fr.lproj

│   └── pass.strings

├── de.lproj

│   └── pass.strings

├── 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代碼如下:

#import <UIKit/UIKit.h>#import ”ASIHTTPRequest.h”#import ”PassKit/PassKit.h”#import ”DetailViewController.h”#define SerialNumber @”gT6zrHkaW”@interface ViewController :UITableViewController <PKAddPassesViewControllerDelegate>@property (strong, nonatomic) NSArray* passes;- (IBAction)add:(id)sender;@end

 

ViewController.m相關代碼如下:

- (void)viewDidLoad{[super viewDidLoad];//判斷Passbook是否可用if (![PKPassLibrary isPassLibraryAvailable]){NSLog(@”Passbook不可用。”);} else {[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(handleLibraryChange:)name:PKPassLibraryDidChangeNotification object:nil];}}-(void)viewWillAppear:(BOOL)animated{[super viewWillAppear:YES];//重新整理畫面[self handleLibraryChange:nil];} #pragma mark - 處理Passbook變化通知-(void)handleLibraryChange:(NSNotification*) not ④{PKPassLibrary* passLib = [[PKPassLibrary alloc] init];//排序NSSortDescriptor *byName = [NSSortDescriptorsortDescriptorWithKey:@"localizedName" ascending:YES];_passes = [[passLib passes] sortedArrayUsingDescriptors:@[byName]];[self.tableView reloadData];}- (void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];[[NSNotificationCenter defaultCenter] removeAllObjects];}

 

發布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則這個按鈕是“完成”或“更新”。

Passbook就到這裡!更多Passbook內容可以參考我的新書《iOS網路編程與雲端應用最佳實務》以及多貝免費公開課5月30日《蘋果電子商務探討-iOS6 Passbook解析與開發》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.