如何检测iPhone是否具有使用核心NFC框架提供的NFC芯片的功能?
我知道现在它只适用于iPhone 7和7 Plus,但我不想硬编码硬件字符串标识符,因为我不知道未来会出现什么设备。
如何检测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及更高型号上运行应用程序,您可以在 Info.plist
中添加NFC要求:
<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
,那么您可以使用由Core NFC
提供的所有API而不用担心应用程序崩溃。还需要检查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
}
可以从苹果https://developer.apple.com/support/required-device-capabilities/查看设备列表(很长,使用:cmd-f +“nfc”)