如何检测iPhone是否能够使用核心NFC框架提供的NFC芯片?
我现在知道它只适用于iPhone 7和7 plus但我不想硬编码硬件字符串标识符,因为我不知道将来会出现什么设备。
答案 0 :(得分:12)
您可以使用readingAvailable
类属性:
if NFCNDEFReaderSession.readingAvailable {
// Set up the NFC session
} else {
// Provide fallback option
}
答案 1 :(得分:5)
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
是否可用,因为这些设备未包含。这就是为什么您应该使用Weak Linking链接Core NFC
框架的原因:
,然后在代码中检查Core NFC
的可用性:
var isNFCAvailable: Bool {
if NSClassFromString("NFCNDEFReaderSession") == nil { return false }
return NFCNDEFReaderSession.readingAvailable
}
如果isNFCAvailable
返回true
,则可以使用Core NFC
提供的所有API,而不必担心应用程序崩溃。
答案 2 :(得分:1)
还要检查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
}