NFC

2020-04-20  本文已影响0人  进击的阿三姐

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{

}

上一篇 下一篇

猜你喜欢

热点阅读