iOS11中NFC的使用

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

构建工程

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

iOS11中NFC的使用_第1张图片
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,当你读取超时后得重新创建实例

运行结果


iOS11中NFC的使用_第2张图片
3.png


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

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

项目demo:github.com/rickierYun/NFCDemo

你可能感兴趣的:(iOS11中NFC的使用)