iOS11新特性NFC检测
Core NFC是在iOS11中引入,用于处理NFC阅读Tag。目前NFC只开启了读权限,据分析应该是为了Apply Pay的安全问题。使用NFC前需要注意以下几点:
1、需要开启一个session,与其他session类似,同时只能开启一个。
2、需要App完全在前台模式。
3、每个session最多扫描60s,超时需再次开启新session。
4、配置读取单个或多个Tag,配置为单个时,会在读取到第一个Tag时自动结束session。
5、隐私描述。
第一步需要配置Capabilitles。使用NFC需要配置Capabilitles,这会自动为你生成entitlements文件中的必要配置。
文章图片
2
第二步打开隐私相关设置。向info.plist中添加Privacy - NFC Scan Usage Description。
文章图片
第三步激活App ID的相关功能。如下图所示。
文章图片
第四步在项目中引入Core NFC。引入Core NFC和相关代理delegate.
#import "ViewController.h"
#import
@interface ViewController ()
@end
第五步代码实现。值得注意的是:1、当invalidateAfterFirstRead为YES时表示会在读取到第一个Tag时自动结束session,否则会话会持续。2、NFC只能在iPhone7及其以上设备中使用。
- (IBAction)click:(id)sender {
if (@available(ios 11.0,*)) {
if ([NFCNDEFReaderSession readingAvailable]) {
NFCNDEFReaderSession * message = [[NFCNDEFReaderSession alloc] initWithDelegate:self queue:nil invalidateAfterFirstRead:YES];
[message beginSession];
}
}
}
#pragma arguments
-(void)readerSession:(NFCNDEFReaderSession *)session didDetectNDEFs:(NSArray *)messages
{
if (@available( ios 11, *)) {
for (NFCNDEFMessage * message in messages) {
for (NFCNDEFPayload * payload in message.records) {
NSLog(@"type===%@",payload.type);
NSLog(@"typeNameFormat====%d",payload.typeNameFormat);
NSLog(@"identifier===%@",payload.identifier);
NSLog(@"payload===%@",payload.payload);
}
}
}
}
-(void)readerSession:(NFCNDEFReaderSession *)session didInvalidateWithError:(NSError *)error
{
NSLog(@"error=====%@",error);
【iOS11新特性NFC检测】}
推荐阅读
- 我们重新了解付费。
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 感恩之旅第75天
- 涉毒患者(新诗)
- 危险也是机会
- 新年第一部电影,一本满足
- 六步搭建ES6语法环境
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- 六月更新的......
- 绘本讲师训练营【18期】14/21《我的情绪小怪兽》故事会新体验