Passbook(Wallet)学习笔记

概述

2012年WWDC上iOS6发布了一个全新的应用–Passbook,管理电子票券,包括登机牌,电影票,优惠卡,购物卡等。2015年WWDC大会发布的iOS9将Passbook改名为Wallet,其改名和应用升级也是为了配合Apple Pay的一些功能,此时Wallet除了支持原本的电子票券,还支持信用卡,借记卡,即Apple Pay。
在苹果里的框架: PassKit.framework

Pass简介

增:服务端创建pass,客户端可通过email,URL或者应用下载pass;(邮箱跟Safari知道如何处理pass,iOS中会直接下载passes,OS X中会通过iCloud下载,可以通过这两个下载,也可以通过使用PassKit框架下载passes)
改:客户端可通过推送通知更新pass;也可通过客户端删除passes
查:客户端还可以请求最新版本的pass凭证。

Passes are updated by providing the latest version of the pass, not by providing a list of what changed.

r: 凭证是通过更新整个pass,而不是提供修改的列表进行更新。

Anything in the pass can be updated except for the pass type ID and serial number.

r: 除了pass type ID 与serial number之外的信息都可以更新。

pass生命周期: 创建,管理,redemption(撤回)。 其中wallet负责管理,服务端负责生成pass

your app should not remove expired passes without the user’s consent.

一个pass其实是一个.pkpass文件,也就是一个压缩包,其中目录结构如下图所示:
Passbook(Wallet)学习笔记_第1张图片

1.pass.json

该文件主要描述布局等跟展示相关的信息

2. manifest.json

纪录当前pass包中除了本文件与Signature之外的的文件对应的哈希值。

3. signature

凭证主要分为五类:
1. 登机牌(Boarding pass)
Passbook(Wallet)学习笔记_第2张图片
2. 优惠券(Coupon)
Passbook(Wallet)学习笔记_第3张图片
3. 入场券,活动票据(Event ticket)
Passbook(Wallet)学习笔记_第4张图片
4. 购物卡,积分卡(Store Cards)
Passbook(Wallet)学习笔记_第5张图片
5. 普通票去(自定义票据)(Generic pass)
Passbook(Wallet)学习笔记_第6张图片
五种类型pass的布局from:苹果官方文档-Pass Design and Creation

生成.pkpass文件

  1. 苹果开发者中心新建pass Type ID,基于该ID创建Passbook证书
  2. Xcode开启Passbook
  3. 制作.pkpass
    • 需准备icon,logo和strip图片。还需准备@2x大小照片
    • 配置pass.json
    • 创建manifest.json,通过”openssl sha1 [文件路径]”获取哈希值
    • 生成signature文件:a. 导出pass Type证书的.p12文件并设置密码;b. 找到”Apple Worldwide Developer Relations CA - G2证书导出增强保密邮件(.pem);c. 将.p12证书转换为pem文件: openssl pkcs12 -in mypassbook.p12 -clcerts -nokeys -out mypassbook.pem -passin pass:456789; d. 证书p12文件导出私钥pem文件(passkey.pem)
      openssl pkcs12 -in Certificates.p12 -nocerts -out passkey.pem -passin pass: -passout pass:12345;e. 根据AWDRCA.pem、mypassbook.pem、mypassbookkey.pem、manifest.json生成signature文件(按照提示输入mypassbookkey.pem导出时设置的密码123456):
      openssl smime -binary -sign -certfile AWDRCA.pem -signer mypassbook.pem -inkey mypassbookkey.pem -in manifest.json -out signature -outform DER
    • 将icon.png、[email protected]、logo.png、[email protected]、strip.png、[email protected] 、pass.json、manifest.json、signature压缩成pass包(这里命名为”mypassbook.pkpass“)。
      zip -r mypassbook.pkpass manifest.json pass.json signature logo.png [email protected] icon.png [email protected] strip.png [email protected]

PassKit

该框架可让应用跟passes交互,相关的应用不应该重复Wallet的功能,而应实现Wallet不具备的功能以提高用户体验。即使用户没有下载你的应用凭证也应该是有效可用。

Your app can interact only with passes whose pass type identifier matches the app’s entitlements—either passes you created or some subset of those passes.

r: 应用只可访问Entitlements设置的pass type identifier.

服务端

连接参考如下,来自苹果官方文档:
Passbook(Wallet)学习笔记_第7张图片

Header
The Authorization header is supplied; its value is the word ApplePass, followed by a space, followed by the pass’s authorization token as specified in the pass.

Talk is cheap,show the code

展示,添加Pass

Passbook(Wallet)学习笔记_第8张图片

未完待续,敬请期待

你可能感兴趣的:(iOS录)