iOS开发——高级技术PassBook服务
PassBook服务
Passbook是苹果推出的一个管理登机牌、会员卡、电影票、优惠券等信息的 工具。Passbook就像一个卡包,用于存放你的购物卡、积分卡、电影票、礼品卡等,而这些票据就是一个“Pass”。和物理票据不同的是你可以动态更 新Pass的信息,提醒用户优惠券即将过期;甚至如果你的Pass中包含地理位置信息的话当你到达某个商店还可以动态提示用户最近商店有何种优惠活动;当 用户将一张团购券添加到Passbook之后,用户到了商店之后Passbook可以自动弹出团购券,店员扫描之后进行消费、积分等等都是 Passbook的应用场景。Passbook可以管理多类票据,苹果将其划分为五类:
登机牌(Boarding pass)
优惠券(Coupon)
活动票据、入场券(Event ticket)
购物卡、积分卡(Store Cards)
普通票据(自定义票据)(Generic pass)
苹果的划分一方面出于不同票据功能及展示信息不同,另一方面也是为了统一票据的设计,下面是苹果官方关于五种票据的布局设计布局:
既然一个票据就是一个Pass,那么什么是Pass呢?在iOS中一个Pass其实就是一个.pkpass文件,事实上它是一个Zip压缩包,只是这个压缩包要按照一定的目录结构来设计,下面是一个Pass包的目录结构(注意不同的票据类型会适当删减):
Pass Package
├── 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
也就是说在Passbook应用中显示的内容其实就是一个按照上面文件列表来组织的一个压缩包。在.pkpass文件中除了图标icon、缩略图thumbnail和logo外最重要的就是pass.json、manifest.json和signature。
1.pass.json
这个文件描述了Pass的布局、颜色设置、文本描述信息等,也就是说具体Pass包如何展示其实就是通过这个JSON文件来配置的,关于pass.json的具体配置项在此不再一一介绍,大家可以查看苹果官方帮助文档“Pass Design and Creation”。这里主要说一下其中关键的几个配置项:
passTypeIdentifier:pass唯一标识,这个值类似于App ID,需要从开发者中心创建,并且这个标识必须以“pass”开头(例如下面的示例中取名为“pass.com.cmjstudio.mypassbook”)。
teamIdentifier:团队标识,申请苹果开发者账号时会分配一个唯一的团队标识(可以在苹果开发者中心--查看账户信息中查看”Team ID“)。
barcode:二维码信息配置,主要指定二维码内容、类型、编码格式。
locations:地理位置信息,可以配置相关位置的文本信息。
2.manifest.json
manifest.json 从名称可以看出这个文件主要用来描述当前Pass包中的文件目录组织结构。这个文件记录了除“manifest.json”、“signature”外的 文件和对应的sha1哈希值(注意:哈希值可以通过”openssl sha1 [ 文件路径]“命令获得)。
3.signature
signature是一个签名文件。虽然manifest.json存储了哈希值,但是大家都知道hash算法是公开的,如何保证一个pass包是合法的,未经修改的呢?那就是使用一个签名文件来验证。
了 解了以上内容后基本上对于如何定义一个pass包有了简单的概念。有了pass包之后对于添加pass到passbook应用是比较简单的。但事实上通常 大家看到的passbook应用中添加的pass包并不是手动组织的,而是通过程序来完成pass包制作的。举例来说:如果你在美团上购买一张电影票之 后,会告诉你一个优惠码,这个优惠码会显示到pass中。由于这个优惠码是动态生成的,所以直接手动制作出一个pass包是不现实的。通常情况下pass 包的生成都是通过后台服务器动态生成,然后返回给iOS客户端来读取和添加的,手动制作pass包的情况是比较少的,除非你的票据信息是一成不变的。当然 为了演示Passbook应用,这里还是会以手动方式演示一个pass包的生成过程,了解了这个过程之后相信在服务器端通过一些后台程序生成一个pass 包也不在话下(下面的生成过程均可通过服务器端编程来实现)。
同其他Apple服务开发类似,做Passbook开发同样需要一些准备工作:
在 苹果开发者中心新建Pass Type ID(例如这里新建一个“pass.com.cmjstudio.mypassbook”),并且基于这个Pass Type ID创建一个Passbook证书(在mac上找到钥匙串,选择”从证书颁发机构请求证书“,生成一个证书请求文件;将此文件上传到对应的Pass Type ID下生成证书文件)如下图:Pa
下载证书后,将此证书导入Mac中(此处配置的Pass Type ID对应pass.json中的”passTypeIdentitifier“,此证书用于生成签名文件signature。)。
在 Xcode中-Targets-Capabilities启用Pasbook服务,这里需要注意的是”Allow all team pass types“选项,如果勾选了这一项,那么pass.json中的passTypeIdentifier和teamIdentifier就可以是任何团队 创建的任何Pass项目了,这里使用前面创建的项目,所以选择”Allow subset of pass types“。
有了上面的准备工作,下面看一下如何制作一个Pass:
根据所选择的Passbook类型准备图片素材,由于这里以一个Store Card举例,所以需要准备icon、logo和strip三类图片。
配 置pass.json,这里还是强调一下passTypeIdentifier和teamIdentifier,前者就是上面在开发者中心创建的Pass Type ID(”pass.com.cmjstudio.mypassbook“),后者是对应的团队标识,其他信息根据实际情况配置。
1 { 2 "formatVersion":1, 3 "passTypeIdentifier":"pass.com.cmjstudio.mypassbook", 4 "serialNumber":"54afe978584e3", 5 "teamIdentifier":"JB74M3J7RY", 6 "authenticationToken":"bc83dde3304d766d5b1aea631827f84c", 7 "barcode":{"message":"userName KenshinCui","altText":"会员详情见背面","format":"PKBarcodeFormatQR","messageEncoding":"iso-8859-1"}, 8 "locations":[ 9 {"longitude":-122.3748889,"latitude":37.6189722},{"longitude":-122.03118,"latitude":37.33182}], 10 "organizationName":"CMJ Coffee", 11 "logoText":"CMJ Coffee", 12 "description":"", 13 "foregroundColor":"rgb(2,2,4)", 14 "backgroundColor":"rgb(244,244,254)", 15 "storeCard":{ 16 "headerFields":[{"key":"date","label":"余额","value":"¥8888.50"}], 17 "secondaryFields":[{"key":"more","label":"VIP会员","value":"Kenshin Cui"}], 18 "backFields":[ 19 {"key":"records","label":"消费记录(最近10次)","value":" 9/23 ¥107.00 无糖冰美式\n 9/21 ¥58.00 黑魔卡\n 8/25 ¥44.00 魔卡\n 8/23 ¥107.00 无糖冰美式\n 8/18 ¥107.00 无糖冰美式\n 7/29 ¥58.00 黑魔卡\n 7/26 ¥44.00 魔卡\n 7/13 ¥58.00 黑魔卡\n 7/11 ¥44.00 魔卡\n 6/20 ¥44.00 魔卡\n"}, 20 {"key":"phone","label":"联系方式","value":"4008-888-88"}, 21 {"key":"terms","label":"会员规则","value":
转载于:https://www.cnblogs.com/LifeTechnologySupporter/p/4762663.html
iOS开发——高级技术PassBook服务相关推荐
- iOS开发——高级技术内购服务
内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通 ...
- iOS开发——高级技术通讯录功能的实现
通讯录功能的实现 iOS 提供了对通讯录操作的组建,其中一个是直接操作通讯录,另一个是调用通讯录的 UI 组建.实现方法如下: 添加AddressBook.framework到工程中. 代码实现: 1 ...
- iOS开发——高级技术地图功能的实现
地图功能的实现 因为有个项目要在地图中显示位置,所以用到了MapKit. 记录下来,以免以后忘记. 加入MapKit library 首先得在项目中加入MapKit,如图 MapView 先增加一个V ...
- iOS开发——高级技术本地化与国际化详解
本地化与国际化详解 效果如下: 英语: 中文: 具体实现如下: 一 ...
- IOS开发高级之点餐系统的实现-01
IOS开发高级之点餐系统的实现-01 // // ViewController.m // 01-点餐系统 // // Created by 鲁军 on 2021/2/11. //#import &qu ...
- iOS开发 蓝牙技术4.0详解
前言 前端时间,同学在做项目过程中遇到关于蓝牙方面的问题,今天我就给大家进行详细的进行讲解下蓝牙在iOS开发中的具体实现.在介绍蓝牙前,大家要搞清楚什么是蓝牙? 什么是蓝牙? 随着蓝牙低功耗技术BLE ...
- iOS开发——高级篇——iOS开发之网络安全密码学
一.非对称加密 - RSA : + 公钥加密,私钥解密: + 私钥加密,公钥解密: + 只能通过因式分解来破解 二.对称加密 - DES - 3DES - AES (高级密码标准,美国国家安全局使用, ...
- iOS开发那些事-Passbook详解与开发案例
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用.它可以帮助我们管理商家发放的电子会员卡.积分卡. 优惠券等.这将对未来电子商务产生深远的影响.商家通过发放会员 ...
- iOS开发那些事-Passbook详解与开发案例(附视频)
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用.它可以帮助我们管理商家发放的电子会员卡.积分卡.优惠券等.这将对未来电子商务产生深远的影响.商家通过发放会员卡 ...
最新文章
- Linux系统下载linux系统源码
- 关于安卓录屏的权限问题
- python代码大全表解释-python中的字典用法大全的代码
- python3 字符串前字母(无前缀,前缀u,前缀b,前缀r)含义
- C#使用linq查询大数据集的方法
- 高行健---江西赣州人
- 五天学习MySQL数据库(一)1.3MySQL 基本介绍
- BZOJ4415: [Shoi2013]发牌
- [leetcode]Longest Consecutive Sequence
- 微信公众号完美解决关注后三次获取media_id重复3次的问题
- python3 用递归方法列出所有目录与文件
- 中美深度对比,资产管理行业的核心是什么?
- c语言void*指针,C语言void指针
- arcgispython空间插值_[学习总结]如何利用GIS建模批量处理气象数据-以micaps 第四类数据空间插值为例-专业气象研究-气象家园_气象人自己的家园...
- 【综述】矩阵补全问题
- 【IP 笔记 2.】北邮 互联网协议 Internet Protocol - Transport Layer
- java计算机毕业设计基于安卓Android微信小程序的共享单车租赁系统uniApp
- 表格合并怎么将多工作簿同名表合并到一起
- 计算机二级虎贲跟未来教育那个好,考计算机二级的都看看,分享几款模拟软件...
- ORA-02291: 违反完整约束条件 - 未找到父项关键字
热门文章
- E/Trace: error opening trace file: No such file or directory
- UIDatePicker的使用
- 去掉Win7资源管理器左侧不需要的项目
- 计算文档中不同单词出现的次数
- NameNode之租约管理
- FPGA状态机三段式
- hololens 仿真器安装更改位置_HoloLens开发指南(1)---安装工具
- 19. GD32F103C8T6入门教程-adc使用教程6-外部中断线11触发adc0
- 5003.c++定义hpp文件
- 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...