iOS NFC开发——Core NFC

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

NFC

上图是WWDC上苹果提供的NFC技术细分图,由于苹果支持所有格式的Tag,所以只需做大致了解即可。
使用NFC前需要注意一下几点:

  • 需要开启一个session,与其他session类似,同时只能开启一个
  • 需要App完全在前台模式
  • 每个session最多扫描60s,超时需再次开启新session
  • 配置读取单个或多个Tag,配置为单个时,会在读取到第一个Tag时自动结束session
  • 隐私描述(后文会写到如何配置)会在扫描页面显示

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


Capabilities

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


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开发,文档已经可以查看。Xcode 9 Beta 2已支持NFC开发。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,672评论 7 249
  • 原文链接: http://fighting300.com... 大家可能听过NFC这项功能,或者有可能你每天都在使...
    fighting300阅读 10,083评论 10 8
  • 文/丁水汀 连续三天循环薛之谦的《丑八怪》。心情欣然。要唱歌,发现五音不全,要跳舞,发现舞步也不行。 那就写文章吧...
    丁水汀阅读 3,122评论 0 0
  • 今年之前我一直不以为自己的胃会有什么问题,从小看我姐胃疼到哭,吃什么药都不行,看她胃疼特别难受,我从来没有胃疼过。...
    cora的生活手册阅读 1,859评论 0 0