转载

iOS NFC开发——Core NFC

原文

Core NFC在iOS 11中引入,用于处理NFC阅读Tag。由于目前只开放了读的权限,所以Core NFC是非常轻量级的一个框架。

iOS NFC开发——Core NFC

NFC

上图是WWDC上苹果提供的NFC技术细分图,由于苹果支持所有格式的Tag,所以只需做大致了解即可。

使用NFC前需要注意一下几点:

  • 需要开启一个session,与其他session类似,同时只能开启一个

  • 需要App完全在前台模式

  • 每个session最多扫描60s,超时需再次开启新session

  • 配置读取单个或多个Tag,配置为单个时,会在读取到第一个Tag时自动结束session

  • 隐私描述(后文会写到如何配置)会在扫描页面显示

第一步需要配置Capabilities

使用NFC,第一步需要配置Capabilities,这会自动为你生成entitlements文件中的必要配置。同时为你的App ID激活相关功能。

iOS NFC开发——Core NFC

Capabilities

第二步打开隐私相关设置

第二步需要打开隐私相关设置,向info.plist中添加Privacy - NFC Scan Usage Description。

iOS NFC开发——Core NFC

info.plist

第三步引入Core NFC

 import CoreNFC

第四步实现NFCNDEFReaderSessionDelegate。

public protocol NFCNDEFReaderSessionDelegate : NSObjectProtocol {
    public func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error)
    public func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage])
}

第五步开始一个session

invalidateAfterFirstRead设为true时,会在首次识别时自动停止session,并在readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error)方法中抛出NFCReaderSessionInvalidationErrorFirstNDEFTagRead错误。

let session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
session?.begin()

目前Xcode Beta版本的第一个release并不支持Core NFC开发,文档已经可以查看。

正文到此结束
Loading...