天天看点

iOS开发那些事-Passbook详解与开发案例(附视频)

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

passbook与pass

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

iOS开发那些事-Passbook详解与开发案例(附视频)

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

iOS开发那些事-Passbook详解与开发案例(附视频)

pass的5种风格

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

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

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

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

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

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

iOS开发那些事-Passbook详解与开发案例(附视频)

pass的内部结构

每一个pass是一个zip格式的压缩文件,这文件文件的后缀名是pkpass,它通过一些特殊的方式发给用户使用,这些特殊的方式我们会在后面介绍。如果我们把pkpass文件使用解压缩软件打开,会看到如下内容:

pass

├── icon.png

├── [email protected]

├── logo.png

├── [email protected]

├── thumbnail.png

├── [email protected]

├── background.png

├── [email protected]

├── strip.png

├── [email protected]

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

iOS开发那些事-Passbook详解与开发案例(附视频)

开始passbook

iOS开发那些事-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

iOS开发那些事-Passbook详解与开发案例(附视频)

2、配置pass可用

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

iOS开发那些事-Passbook详解与开发案例(附视频)

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

3、创建配置概要文件

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

iOS开发那些事-Passbook详解与开发案例(附视频)

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。

iOS开发那些事-Passbook详解与开发案例(附视频)

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

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

配置授权信息与icloud应用类似,选择tagets→mypass→summary→entitlements,我们可以在这里配置授权信息。

iOS开发那些事-Passbook详解与开发案例(附视频)

授权信息项目说明如下:

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文件。

iOS开发那些事-Passbook详解与开发案例(附视频)

当点击这个附件“store card”后页面会跳转,点击导航栏右边的“add”按钮,会将这个pass添加到passbook中。

iOS开发那些事-Passbook详解与开发案例(附视频)

如果用户没有在它的iphone或ipod touch中接收email,可以在mac os x 10.8.2以上系统中,使用邮件应用程序接收这个邮件。

iOS开发那些事-Passbook详解与开发案例(附视频)

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

iOS开发那些事-Passbook详解与开发案例(附视频)

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