iPhone6开始有NFC硬件但此功能未开发,所以最低支持iPhone7以上 系统iOS11以上
限制
需要且只能开启一个session‘
需要App完全在前台
每个session最多扫描60秒 超时需重新开启新的session
可以读取一个或者多个标签,一个读完结束,多个最多时效只有60s
有三种使用场景,但是只有一种iOS可用
Reader/Writer mode 读写器模式 (iOS只支持只读模式)
Peer-to-Peer mode 点对点模式 (iOS不支持)
Card-emulation 卡模拟模式 (iOS不支持)
开发步骤
配置信息
在Capabilitles中开启NFC Tag Reading
在info.plis中添加Privacy - NFC Scan Usage Description
在开发者网站激活NFC Tag Reading 功能
引入文件
<CoreNFC/CoreNFC.h>
设置代理
NFCNDEFReaderSessionDelegate
创建对象
/**
三个参数
第一个参数:代理对象
第二个参数:线程
第三个参数:Session读取一个还是多个NDEF。YES:读取一个结束,NO:读取多个
*/
NFCNDEFReaderSession *session = [[NFCNDEFReaderSession alloc] initWithDelegate:self queue:dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT) invalidateAfterFirstRead:YES];
[session beginSession];
实现代理方法
/**
具体父子关系看官方文档
*/
- (void) readerSession:(nonnull NFCNDEFReaderSession *)session didDetectNDEFs:(nonnull NSArray<NFCNDEFMessage *> *)messages {
for (NFCNDEFMessage *message in messages) {
for (NFCNDEFPayload *payload in message.records) {
NSLog(@"Payload data:%@",payload.payload);
}
}
}
- (void)readerSession:(NFCNDEFReaderSession *)session didInvalidateWithError:(NSError *)error{
}
网友评论