您的位置:首页 > 其它

如何开启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就到这里了。

下期见~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: