zoukankan      html  css  js  c++  java
  • Passbook详解与开发案例

    转自http://www.cnblogs.com/iOS-Blog/archive/2013/05/29/3105488.html

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

    Passbook与Pass

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

    1

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

    2

     Pass的5种风格

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

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

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

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

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

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

    3

    Pass的内部结构

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

    Pass

    ├── 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

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

    4

    开始Passbook

    5

    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

    6

    2、配置Pass可用

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

    7

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

    3、创建配置概要文件

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

    8

    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。

    9

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

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

    配置授权信息与iCloud应用类似,选择TAGETS→MyPass→Summary→Entitlements,我们可以在这里配置授权信息。

    10

    授权信息项目说明如下:

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

    11

    当点击这个附件“Store Card”后页面会跳转,点击导航栏右边的“Add”按钮,会将这个Pass添加到Passbook中。

    12

    如果用户没有在它的iPhone或iPod touch中接收Email,可以在Mac OS X 10.8.2以上系统中,使用邮件应用程序接收这个邮件。

    13

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

    14

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

    Passbook就到这里!更多Passbook内容可以参考作者的新书《iOS网络编程与云端应用最佳实践》以及多贝免费公开课5月30日《苹果电子商务探讨-iOS6 Passbook解析与开发》

  • 相关阅读:
    Go语言中通过结构体匿名字段实现方法的继承和重载
    项目组:ouc海票票 第十一周Scrum meeting博客作业
    SQL Server数据库
    微信小程序界面美化
    Linux中的fork函数
    ouc2021秋软件工程“海票票”小组 Alpha冲刺阶段博客
    SQL Server数据库的分离和附加
    微信小程序玄学bug记录
    项目组:ouc海票票 alpha阶段测试报告
    项目组:ouc海票票 第十二周Scrum meeting会议记录
  • 原文地址:https://www.cnblogs.com/jiangshiyong/p/3115669.html
Copyright © 2011-2022 走看看