NFC(Near Field Communication)简介
近场通信技术,能以非接触方式读取标签信息。
常见的银行卡、公交IC卡都是NFC标签。
WWDC17上iOS11 引入CoreNFC框架,开发者可以在iPhone 7和iPhone 7 Plus上使用这一技术,参考session 718。
Xcode 9 beta中,CoreNFC框架对simulator会编译失败,需使用真机。
需要注意的几点
Session is on demand
- ReaderSession按需创建,整个系统在一个时刻最多只能有一个session处于工作状态,其余session会在FIFO队列中等待。
Foreground mode only
- NFC标签读取操作只能在前台运行时进行,无法后台运行
Maximum 60 seconds of scanning per session
- 一个session的扫描时间最长为60秒,超时未读取成功需要重新创建session
Configurable for single or multi-tag read operation
- 可配置成单标签(读取成功一个后session关闭)或者多标签(可在60秒内读取多个标签)读取模式
Usage description will be shown over the top of your application
- 隐私使用说明会悬浮显示在应用程序之上
集成步骤
1. 打开App ID中的NFC Tag Reading选项
2. 重新生成Provisioning Profile
3. 在工程中链接CoreNFC.framework
4. 在Capabilities中打开NFC Tag Reading选项(在Xcode 9 beta版中没找到这个选项,略过)
5. 在entitlements文件中添加键值对
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
</array>
6. Info.plist中添加隐私说明
<key>NFCReaderUsageDescription</key>
<string>银行卡</string>