iOS11中NFC的使用

iOS11开放了NFC的功能,但是仅限于iPhone7和7plus上使用,并且只开放了读取功能,所以这个版本的NFC所做的功能有限。下面就介绍一下它的使用。(这里项目代码基于iOS8.0+,Xcode9)

构建工程

首先使用NFC需要开启NFC的权限。

1.png

在info中添加Privacy - NFC Scan Usage Description

2.png

要使用NFC就要使用CoreNFC框架,在VC中import这个框架,并且遵循NFCNDEFReaderSessionDelegate或NFCReaderSession协议。

梳理一下CoreNFC中的类和协议

NFCError// 错误信息

NFCReaderSession// 读取数据功能抽象基类

NFCReaderSessionDelegate// 读取到的数据回调

NFCTag// 支持的NFC/RFID协议

NFCTagCommandConfiguration// 读取配置

NFCNDEFReaderSession// 读取基类的子类

NFCNDEFPayload// 读取到数据内容

NFCNDEFMessage// 读取到的数据

NFCNDEFReaderSessionDelegate// 读取数据回调

建立实例

@property(nonatomic,strong)NFCReaderSession*nfcReaderSession;

_nfcReaderSession= [[NFCNDEFReaderSessionalloc]initWithDelegate:selfqueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)invalidateAfterFirstRead:YES];

实现NFCNDEFReaderSessionDelegate

- (void)readerSession:(NFCNDEFReaderSession*)session didDetectNDEFs:(NSArray *)messages {

NSLog(@"读取的数据%s",messages);

}

- (void)readerSession:(NFCNDEFReaderSession*)session didInvalidateWithError:(NSError*)error {

NSLog(@"读取失败%s",error);

}

注意:现在的session,每次只能存在一个实例,且读取时间是60s,当你读取超时后得重新创建实例

运行结果


3.png


Apple给出的NFC还不能支持全部的设备,所以测试的时候,拿门禁卡测试没有反应。

以上就是iOS11发布后,NFC的使用方法。希望以后开放更多功能,解放我的公交卡和门禁卡。

项目demo:github.com/rickierYun/NFCDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,425评论 11 349
  • About Core NFC Core NFC支持的读取数据类型: Core NFC框架特性/要求 目前支持NFC...
    EchoZuo阅读 13,180评论 39 14
  • 原文链接: http://fighting300.com... 大家可能听过NFC这项功能,或者有可能你每天都在使...
    fighting300阅读 10,079评论 10 8
  • 你走的第六十四天,还有49天。 想你想你想你,回北京就离你近了一点,我想你。 我晚上的车到北京,我怕我回去的太晚了...
    rainll阅读 1,176评论 0 0