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

时间:2017-08-28 03:27:43

标签: ios iphone nfc ios11 core-nfc

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

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

3 个答案:

答案 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框架的原因:

Weak Linking of Core NFC framework

,然后在代码中检查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
}