Passbook


技术博客http://www.cnblogs.com/ChenYilong/ 
新浪微博http://weibo.com/luohanchenyilong 




















































Passbook 
技术博客http://www.cnblogs.com/ChenYilong/ "新浪微博http://weibo.com/luohanchenyilong "
 
电子商务 
年开始研发NFC,并且目前已经开始申请相关的专利

Passbook简介 
• Passbook是苹果公司于北京时间2012年6月12日上午,在全球开发者大会 
(WWDC)上宣布了iOS 6系统将提供操作一个全新的应用--Passbook 
• 这是一款可以存放登机牌、会员卡和电影票的工具。该功能将整合来自各类 
服务的票据,包括电影票、登机牌、积分卡和礼品卡等

*60 
• 商标 logo:58*58 最好只使用纯色,不要增加效果 
• 缩略图 thumbnail:200*200 
• 背景图 background(background-568@2x.png):640*960/ 640*1136 
• 条带图 strip.png:640*244 
,!
"passTypeIdentifier" :"pass.cn.itcast.FreeCoffee",!"serialNumber" : "001",!
"teamIdentifier" : "J9XHDK444E",!
"organizationName" : "itcast",!
"description" : "优惠券 蓝山咖啡1杯",!
"logoText" : "爱心咖啡",!
"foregroundColor" : "rgb(255, 255, 255)",!"backgroundColor" : "rgb(135, 129, 189)",!"labelColor" : "rgb(45, 54, 129)" 
}!


创建Pass Type ID 

注册Pass Type ID 

确认Pass Type ID 

创建Pass Type ID验证字 

选择对应的Pass Type ID 

申请验证字 

生成并下载验证字 

将验证字导入到钥匙串管理器 

继续完善pass.json--二维码 
"barcode" : {!
“message" : “用户姓名、手机号码、优惠额度8折",! "format" :"PKBarcodeFormatQR",!"messageEncoding" : "iso-8859-1"!
},
• 格式:Ø PKBarcodeFormatQR
Ø PKBarcodeFormatPDF417 ØPKBarcodeFormatAztec • messageEncoding:

添加优惠券内容 
"coupon" : {! "primaryFields" :! [!
{!
"key" : "offer",! "label" : "蓝山咖啡",!"value" : "免费" 
} ]! } 

添加图片&manifest.json 
作为密码导出passkey.pem密钥文件 • 如果要用更复杂的密码生成指纹文件,可以直接修改123456
导出WWDR文件 

生成签名文件 
• 在终端输入:
 

压缩生成pass文件 • 在终端输入:
zip -r freecoffee.pkpass manifest.json pass.json
signature logo.png logo@2x.png icon.png icon@2x.png
strip.png strip@2x.png
提示:也可以使用其他压缩工具压缩,但是注意只能压缩pass包含的文 件,不能包含其他的文件 

生成的咖啡优惠券 

Pass的获取方式 
• 邮件• 网站• 应用程序内部(通过网络服务器实现)

  
  
二维码的生成 
• 从iOS7开始集成了二维码的生成和读取功能•此前被广泛使用的zbarsdk目前不支持64位处理器
• 生成二维码的步骤:1. 导入CoreImage框架2.通过滤镜CIFilter生成二维码
• 二维码的内容(传统的条形码只能放数字): Ø纯文本Ø 名片Ø URL

生成二维码 
// 1. 实例化二维码滤镜 CIFilter *filter = [CIFilterfilterWithName:@"CIQRCodeGenerator"];! // 2. 恢复滤镜的默认属性 [filter setDefaults];!
!
// 3. 将字符串转换成NSData NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];!
!
// 4. 通过KVO设置滤镜inputMessage数据!
[filter setValue:data forKey:@"inputMessage"];!
!
// 5. 获得滤镜输出的图像 CIImage *outputImage = [filter outputImage];!
!
// 6. 将CIImage转换成UIImage,并放大显示!
return [UIImage imageWithCIImage:outputImagescale:20.0 orientation:UIImageOrientationUp]; 

读取二维码 
• 读取二维码需要导入AVFoundation框架• 利用摄像头识别二维码中的内容(模拟器不行)
1. 输入(摄像头)2. 由会话将摄像头采集到的二维码图像转换成字符串数据 3. 输出(数据)4. 由预览图层显示扫描场景 

设置拍摄会话 
// 1. 实例化拍摄设备 AVCaptureDevice *device = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];!
// 2. 设置输入设备 AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
error:nil];!
// 3. 设置元数据输出 // 3.1 实例化拍摄元数据输出AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];! // 3.3 设置输出数据代理 [output setMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];! // 4. 添加拍摄会话 // 4.1实例化拍摄会话 AVCaptureSession *session = [[AVCaptureSession alloc] init];!
// 4.2 添加会话输入 [session addInput:input];!
// 4.3 添加会话输出 [session addOutput:output];!
// 4.3 设置输出数据类型,需要将元数据输出添加到会话后,才能指定元数据类型,否则会报错 [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]]; 

设置拍摄视频预览图层 
// 5. 视频预览图层 // 5.1 实例化预览图层 
AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayerlayerWithSession:_session];!
preview.videoGravity =AVLayerVideoGravityResizeAspectFill;! preview.frame = self.view.bounds;!
// 5.2 将图层插入当前视图 [self.view.layerinsertSublayer:preview atIndex:100];!self.previewLayer = preview;!
!
// 6. 启动会话 [_session startRunning]; 

 

© chenyilong. Powered by Postach.io

最新文章

  1. 【C#】新建服务自动发送邮件
  2. Java NIO使用及原理分析(1-4)(转)
  3. React.js常识
  4. Java 网络编程 字符流的发送与接收 自定义数据边界
  5. CSU-ACM2016暑假集训训练2-DFS(C - Network Saboteur)
  6. MongoDB Java 连接配置
  7. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(1)
  8. chrome地址栏命令
  9. 深入理解ES6之——JS类的相关知识
  10. CAGradientLayer简介 实现颜色渐变
  11. Sqlsession 的理解
  12. JSF生存指南P1
  13. itoa()函数和atoi()函数详解
  14. USE " cc.exports.* = value " INSTEAD OF SET GLOBAL VARIABLE"
  15. android studio 将自己的项目生成jar包
  16. Qt深入浅出(十五)QTableView
  17. hung task机制
  18. 工作所用的日常 Git 命令
  19. Redis 入门指令
  20. 关于InputStream类的available()方法

热门文章

  1. Harbor 学习分享系列1 - centos7.4安装harbor1.5.2
  2. PAT甲题题解-1039. Course List for Student (25)-建立映射+vector
  3. Spring sprint @ first day
  4. 剑指offer:数组中出现次数超过一半的数
  5. 为什么java的main方法必须是静态的
  6. We are a team----sh_6666
  7. 团队作业5——英语学习/词典App行业Top5
  8. PhpStorm 配置本地断点调试
  9. php代码编写
  10. [知乎]BAT占线