`

iOS开发那些事-Passbook详解与开发案例

阅读更多

Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用。它可以帮助我们管理商家发放的电子会员卡、积分卡、 优惠券等。这将对未来电子商务产生深远的影响。商家通过发放会员卡、积分卡、优惠券等,提高与消费者的互动,吸引人们更多消费。Passbook的诞生, 正是为了将所有这些“卡”和“券”电子化,存放在iPhone或iPod touch里。

 

Passbook与Pass

iOS 6中的Passbook能够帮助我们集中管理电子“卡”和“券”,这些电子“卡”和“券”就是Pass,Passbook是这些Pass集合管理应用。Passbook与Pass关系,Passbook是我们的“卡包”,而Pass是里面的“卡”和“券”。

1

当 我们选择其中一个卡片后,卡片会滑出来,点击右下角“i”按钮会翻转到背面。在点击左上角的垃圾桶按钮可以删除,弹出一个具有金属质感的“碎纸机”样式的 确认框,当点击“删除”按钮后,“碎纸机”会将卡片粉碎,还有动画效果。每次用到这个功能的时候我都很惊叹,苹果对于细节的设计无可挑剔。

2

 Pass的5种风格

iOS 6目前提供了5种风格的Pass,它们分别是:

Boarding passes(登机牌)。虽然从字面翻译为“登机牌”,但是它包括了登机牌、火车票和船票等种类的票证,在Pass上面有起点和终点,时间和登机口等信息。

Coupons(优惠券)。或者打折卡,描述商品的优惠或打折信息的电子凭证。一般上面会有商家的logo,打折比例,使用期限等信息。

Store cards(购物卡)。描述了用户在商场或俱乐部中的账号余额电子凭证。一般上面会有用户级别等信息。

Event tickets(入场券)。描述了体育比赛、演唱会、音乐会等入场券的电子凭证。一般上面会有一个大的背景图片,这个图片背模糊化了,还可以有清楚的缩图。

Generic(通用卡)。如果上面的4种不能满足,我们可以使用这一种,它可以是自定义上面的内容。一个通用卡类型的会员卡。

3

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中删除。

4

开始Passbook

5

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

6

2、配置Pass可用

默认情况下创建的应用是不可以访问Passbook的,我们需要点击Configure超链接进入应用配置页面,勾选“Enable for Passes”开启Pass可用。

7

配置完成点击右下角的“Done”按钮,保存配置并回到App ID的列表页面,这时候再回来看一下我们刚刚配置的应用,它的Pass状态变为了绿色可用状态了。

3、创建配置概要文件

为了能够编写在设备上应用,我们还需要创建配置概要文件。创建成功之后下载配置概要文件到本地。

8

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。

9

设置完成之后可以开始编码工作了。

6、配置Xcode工程配置授权信息

配置授权信息与iCloud应用类似,选择TAGETS→MyPass→Summary→Entitlements,我们可以在这里配置授权信息。

10

授权信息项目说明如下:

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:self

selector:@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 = [NSSortDescriptor

sortDescriptorWithKey:@"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文件。

11

当点击这个附件“Store Card”后页面会跳转,点击导航栏右边的“Add”按钮,会将这个Pass添加到Passbook中。

12

如果用户没有在它的iPhone或iPod touch中接收Email,可以在Mac OS X 10.8.2以上系统中,使用邮件应用程序接收这个邮件。

13

点击邮件中的“查看凭证…”按钮,会弹出添加Pass的对话框。

14

如果这个Pass没有添加到Passbook,右下角的按钮为“添加到Passbook”,如果已经添加到Passbook则这个按钮是“完成”或“更新”。

Passbook就到这里!更多Passbook内容可以参考我的新书《iOS网络编程与云端应用最佳实践》以及多贝免费公开课5月30日《苹果电子商务探讨-iOS6 Passbook解析与开发》

分享到:
评论

相关推荐

    Python库 | pretix-passbook-1.7.0.tar.gz

    《Python库:深入理解pretix-passbook-1.7.0》 在Python的世界里,丰富的库资源是其强大功能的重要支撑。今天我们要探讨的是一个名为`pretix-passbook`的Python库,它在1.7.0版本中的功能与应用。`pretix-passbook`...

    PyPI 官网下载 | django-allauth-passbook-0.1.26b0.tar.gz

    《PyPI官网下载:django-allauth-passbook-0.1.26b0.tar.gz——Python库解析》 在Python的开发过程中,依赖管理是一项重要的任务。Python的包索引(PyPI)作为官方的第三方库仓库,为开发者提供了丰富的模块和工具...

    php-passbook:适用于PHP 5.4的iOS存折库

    存折是iOS中的一个应用程序,允许用户存储优惠券,登机牌,活动门票,商店卡,“通用”卡和其他形式的移动支付。 这个图书馆做什么? PHP-Passbook是一个用于在应用程序内部创建和打包通行证的库。 可以通过将文件...

    dotnet-passbook:一个.Net库,用于为iOS生成Apple Passbook(钱包)文件。 请通过创建请求请求和打开问题来参与其中!

    .NET标准库,用于为iOS电子钱包生成Passbook包(以前称为Passbook) 正在安装 还可以从NuGet下载dotnet-passbook。 Install-Package dotnet-passbook 为什么 为Apple的Passbook创建通行证非常简单,但是需要使用PKI...

    iOS DevCamp幻灯片分享:《Passbook实战详解》| 爱图腾 廉洁

    通过详细的讲解Passbook的原理、Pass的生命周期以及Pass数据包的制作流程等内容,我们不仅可以了解到Passbook的基本操作方法,还能够掌握如何开发与之相关的应用和服务,从而更好地服务于最终用户。

    IOS开发指南(中英版)官方文档

    《iOS开发指南(中英版)官方文档》是一份极其宝贵的资源,对于任何希望进入或深化iOS应用开发领域的开发者来说,都是不容错过的宝藏。这份文档涵盖了从基础到高级的各种主题,旨在帮助开发者掌握Apple的iOS平台上的...

    iOS 8应用开发实战-205个快速上手的开发技巧源代码

    在iOS 8应用开发实战中,开发者们会面临各种挑战,而掌握一系列快速上手的开发技巧是提高效率的关键。这个资源提供了205个源代码示例,旨在帮助开发者们深入理解iOS 8开发的核心概念和技术。这些技巧涵盖了从界面...

    passbook开发案例

    java 开发passbook案例 java实现增加 更新passbook 非常适合开发passbook的人们学习

    passbook程序开发相关的文档,apple官方的

    根据所提供的文件信息,这份文档是关于Apple官方的Passbook程序开发指南,主要内容涵盖了Passbook的程序设计、生成制作、生态系统设计、Pass设计和创建、以及与PassKit的交互和最佳实践等方面。以下将详细阐述这些...

    Acktie-Mobile-iOS-Passbook-Scanner:Acktie Mobile Passbook Scanner 模块是一款易于使用但功能强大的扫描仪,支持所有 Apple Passbook 格式

    Acktie 移动存折扫描仪 (iOS) 例子 在上的 Github 上可以找到如何使用此模块的工作示例。 描述 该模块允许快速集成支持 Apple Passbook 条码格式 (QR/Aztec/PDF417) 的扫描仪。 扫描仪支持在单个扫描窗口中检测所有...

    ios6开发进阶与实战源码

    《iOS6开发进阶与实战源码》是一个针对苹果iOS6平台深入学习和实践的资源集合,主要面向已经掌握基础iOS开发的开发者,旨在提升他们的技能并提供实战经验。这个资源包,名为"MoreiOS6Development-master",包含了...

    iOS开发商计划许可协议2014-12月多国语言版本

    该许可协议是苹果公司与想要为iOS平台开发应用的第三方开发者之间的重要法律文件。通过阅读和同意此协议中的条款和条件,开发者才能合法使用苹果公司的软件和服务。协议中明确指出,若开发者不同意这些条款,则不...

    ios开发教程和源码

    “Beginning-iOS6-Dev_sourcecode.zip”则很可能包含了与教程配套的源代码,这些源代码实例将帮助开发者理解理论知识的实际运用,通过动手实践,加深对iOS开发的理解。源代码通常包括了各种常见功能的实现,如网络...

    iOS编程揭秘iPhone与iPad应用开发入门教材源代码

    《iOS编程揭秘:iPhone与iPad应用开发入门教材源代码》是一本专为初学者设计的教程,旨在引导读者深入理解并掌握iOS应用开发的核心技术。该书以iOS 6为开发环境,涵盖了从基础概念到高级特性的全方位知识。通过本书...

    iOS9应用开发基础教程

    ### iOS9应用开发基础教程知识点概览 #### 一、iOS9系统简介及新特性 - **Siri语音助手智能化**:iOS9中的Siri变得更加智能,能够理解上下文并根据用户的行为习惯提供更加个性化的服务。 - **新增News新闻聚合应用...

    passbookDemo

    用passbook生成票据的demo 参考:http://www.raywenderlich.com/zh-hans/23066/ios-6-passbook-%E5%85%A5%E9%97%A8-12 http://www.raywenderlich.com/zh-hans/23068/ios-6-passbook-%E5%85%A5%E9%97%A8-22

    iOS+9应用开发基础教程.pd

    iOS开发是苹果公司为使用MacOS操作系统的开发者提供的一个开发平台,用于构建在苹果设备上运行的移动应用程序。在2015年6月8日的WWDC(世界开发者大会)上,苹果公司发布了iOS9操作系统。iOS9引入了多项新特性和功能...

    PDF-Ios6ProgrammingCookbook-英文版.rar

    《iOS 6 Programming Cookbook》是iOS开发者们的重要参考资料,尤其对于那些希望深入探索iOS 6开发的程序员来说,这本书提供了一系列实用的解决方案和代码示例。这个英文版的PDF文件包含了许多关于iOS应用开发的关键...

    CSS3+jQuery 模拟 iOS passbook

    在本项目中,"CSS3+jQuery 模拟 iOS passbook" 的目标是利用现代Web技术,即CSS3和jQuery,来创建一个视觉上与苹果iOS设备上的Passbook应用相似的网页元素。Passbook是iOS系统中的一款应用程序,用于存储各种电子...

Global site tag (gtag.js) - Google Analytics