如何开启Passbook
2016-03-18 20:44
85 查看
事出有因
之所以想了解这个技术是因为今天看了场电影,用微票儿购买的《荒野猎人》的电影票,只为欣赏小李子能赢得奥斯卡的演技。可是“把玩”微票儿的时候,发现购买的电影票据右下角有一个iPhone里面的wallet标志按钮,原谅土包子的我之前并没有见过这个,也没注意过。但是今天恰巧看到了觉得甚是神奇,使用过Apple Pay,但没用过“凭证”,今日一看,甚是炫酷,不愧是装逼圣器,于是萌生了了解这个技术并写到我的博客里的想法···
名人名言
如果暴力不是为了杀戮那就毫无意义。——盲僧如果学技术不是为了装逼那就毫无意义。 ——某
技术前景
如果说Wallet在之前不是很火的话,那我想说它马上要火,因为Apple Pay的火热很可能会为“凭证”造势,使用量会增高,不管其他用户怎么想,我觉得很好,我觉得可用。就像一个钱包里面放上会员卡、优惠券一样,真正使iPhone物尽其用。不管用户量的多少,作为一名iOS开发人员,没有理由不学习这个技术,毕竟这是我们丰富自我的食粮。不吃饱饭怎么上班啊?所以赶紧学习吧!
Passbook
这里附上苹果官网上的文章《使用Passbook》给需要的人参考。博客正文
这又是一篇比较老的博客了,因为Passbook是iOS6出现的时候出现的,所以时间有那么一丢丢长,资料有那么一丢丢的老,但是技术的核心不变,我也不废话,附上原文地址,希望能给需要帮助的同行一丢丢帮助。今天只做摘抄,摘抄代码部分资料,需要详细博客的朋友劳驾转到原文地址仔细阅读。
Pass Kit编程:实例:MyPass实例设计与说明
下面我们通过一个实例(MyPass)介绍一下Pass Kit的编程过程,MyPass实例设计原型草图。MyPass启动的时候,首页是表视图画面,它查询本地设备上的Passbook中特定一些Pass,然后然后显示的表视图画面中。用户点击“+”按钮,如果登机牌Pass存在则替换,否则添加登机牌Pass到Passbook,登机牌Pass是从iosbook3.com服务器请求下载的。如果在表视图画面点击其中的单元格,则画面跳转到Pass的详细画面,在详细画面中可以点击导航栏右上角的“Remove”按钮把当前Pass从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: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文件。当点击这个附件“Store Card”后页面会跳转,点击导航栏右边的“Add”按钮,会将这个Pass添加到Passbook中。
如果用户没有在它的iPhone或iPod touch中接收Email,可以在Mac OS X 10.8.2以上系统中,使用邮件应用程序接收这个邮件。
点击邮件中的“查看凭证…”按钮,会弹出添加Pass的对话框。
如果这个Pass没有添加到Passbook,右下角的按钮为“添加到Passbook”,如果已经添加到Passbook则这个按钮是“完成”或“更新”。
Passbook就到这里了。
下期见~
相关文章推荐
- 【Code Art / C#】圆形组合图像效果生成
- 接口
- 作业四:系统调用的工作机制
- 51Nod 1021 石子归并(经典dp)
- hdu3746 Cyclic Nacklace--KMP
- Spark Streaming和Kafka整合保证数据零丢失
- 算法竞赛入门经典(第二版)-刘汝佳-第九章 动态规划初步 例题
- 关于css的默认宽度
- iOS-绘图(Quartz2D)的简单使用(原创)
- 交叉编译基于ARM架构的linux-3.6内核遇到的问题及解决方法
- c语言:编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果
- 到北京的日子
- 无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件。你想要在安装 VMware Workstation 前重启吗?
- Android Service完全解析,关于服务你所需知道的一切(下)
- Android与Servlet之间的通信
- 141. Linked List Cycle
- 数学#容斥原理
- 蓝桥
- android PreferenceFragment
- Android工程分析