如何检测 iPhone 是否具备使用核心 NFC 框架提供的 NFC 芯片的能力?
我现在知道它只适用于 iPhone 7 和 7 plus,但我不想硬编码硬件字符串标识符,因为我不知道将来会出现什么设备。
您可以使用readingAvailable
类属性:
if NFCNDEFReaderSession.readingAvailable {
// Set up the NFC session
} else {
// Provide fallback option
}
iOS 12 更新:
1) 如果您只想为 iPhone 7 和更新型号运行您的应用程序,您可以在以下位置添加 NFC 要求Info.plist
:
<key>UIRequiredDeviceCapabilities</key>
<array>
// ... your restrictions
<string>nfc</string>
</array>
有了这个要求,只有带有 NFC 的设备才能从 App Store 下载我们的应用程序。
2) 对于 iPhone 7 之前的 iPhone 和 iPad 支持,您还必须检查是否Core NFC
可用,因为这些设备不包含它。这就是为什么你应该使用弱链接Core NFC
来链接框架:
然后检查Core NFC
代码中的可用性:
var isNFCAvailable: Bool {
if NSClassFromString("NFCNDEFReaderSession") == nil { return false }
return NFCNDEFReaderSession.readingAvailable
}
如果isNFCAvailable
返回true
,那么您可以使用提供的所有 API,Core NFC
而不必担心您的应用程序崩溃。
还要检查 iOS < 11.0 的设备,即。iphone 5
import CoreNFC
.
.
// Check if NFC supported
if #available(iOS 11.0, *) {
if NFCNDEFReaderSession.readingAvailable {
// available
}
else {
// not
}
} else {
//iOS don't support
}
可以从 Apple https://developer.apple.com/support/required-device-capabilities/查看设备列表(很长,使用:cmd-f + "nfc")