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

在info中添加Privacy - NFC Scan Usage Description

要使用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,当你读取超时后得重新创建实例
运行结果

Apple给出的NFC还不能支持全部的设备,所以测试的时候,拿门禁卡测试没有反应。
以上就是iOS11发布后,NFC的使用方法。希望以后开放更多功能,解放我的公交卡和门禁卡。
网友评论