11

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

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

4

4 回答 4

22

您可以使用readingAvailable类属性:

if NFCNDEFReaderSession.readingAvailable {
    // Set up the NFC session
} else {
    // Provide fallback option
}
于 2017-08-28T03:35:08.260 回答
9

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来链接框架:

核心 NFC 框架的弱链接

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

var isNFCAvailable: Bool {
    if NSClassFromString("NFCNDEFReaderSession") == nil { return false }
    return NFCNDEFReaderSession.readingAvailable
}

如果isNFCAvailable返回true,那么您可以使用提供的所有 API,Core NFC而不必担心您的应用程序崩溃。

于 2018-10-17T13:21:54.960 回答
4

还要检查 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
}
于 2019-01-30T01:51:35.907 回答
-1

可以从 Apple https://developer.apple.com/support/required-device-capabilities/查看设备列表(很长,使用:cmd-f + "nfc")

于 2022-02-14T15:21:52.313 回答