iOS 11 CoreNFC如何检查设备是否具有NFC功能?

Sol*_*444 10 iphone nfc ios ios11 core-nfc

如何检测iPhone是否能够使用核心NFC框架提供的NFC芯片?

我现在知道它只适用于iPhone 7和7 plus但我不想硬编码硬件字符串标识符,因为我不知道将来会出现什么设备.

Pau*_*w11 14

您可以使用readingAvailableclass属性:

if NFCNDEFReaderSession.readingAvailable {
    // Set up the NFC session
} else {
    // Provide fallback option
}
Run Code Online (Sandbox Code Playgroud)


Leg*_*tik 5

iOS 12更新:

1)如果您只想为iPhone 7和更新型号运行您的应用程序,您可以在Info.plist以下位置添加NFC要求:

<key>UIRequiredDeviceCapabilities</key>
    <array>
        // ... your restrictions
        <string>nfc</string>
    </array>
Run Code Online (Sandbox Code Playgroud)

有了这个要求,只有具有NFC功能的设备才能从App Store下载我们的应用程序.

2)对于iPhone 7以上的iPhone以及iPad支持,您还必须检查是否Core NFC可用,因为它们不包含在这些设备中.这就是为什么你应该Core NFC使用弱链接链接框架:

核心NFC框架的弱连接

然后检查Core NFC代码中的可用性:

var isNFCAvailable: Bool {
    if NSClassFromString("NFCNDEFReaderSession") == nil { return false }
    return NFCNDEFReaderSession.readingAvailable
}
Run Code Online (Sandbox Code Playgroud)

如果isNFCAvailable返回,true则可以使用提供的所有API,Core NFC而无需担心应用程序崩溃.