web-dev-qa-db-ja.com

iOS 11 CoreNFCデバイスにNFC機能があるかどうかを確認する方法は?

IPhoneがコアNFCフレームワークによって提供されるNFCチップを使用できるかどうかをどのように検出しますか?

今のところ、iPhone7と7plusでのみ動作することはわかっていますが、将来どのデバイスが発売されるかわからないため、ハードウェア文字列識別子をハードコーディングしたくありません。

11
SolidSnake4444

readingAvailable クラスプロパティを使用できます。

if NFCNDEFReaderSession.readingAvailable {
    // Set up the NFC session
} else {
    // Provide fallback option
}
14
Paulw11

iOS 12のアップデート:

1)iPhone 7以降のモデルでのみアプリを実行する場合は、Info.plistにNFC要件を追加できます:

<key>UIRequiredDeviceCapabilities</key>
    <array>
        // ... your restrictions
        <string>nfc</string>
    </array>

この要件により、NFCのデバイスのみがAppStoreからアプリをダウンロードできます。

2)iPhone 7より古いiPhoneおよびiPadのサポートについては、Core NFC含まれていないため、利用可能かどうかも確認する必要があります。デバイス。そのため、 弱いリンク を使用してCore NFCフレームワークをリンクする必要があります。

Weak Linking of Core NFC framework

次に、コードでCore NFCの可用性を確認します。

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

isNFCAvailabletrueを返す場合、アプリのクラッシュを心配することなく、Core NFCが提供するすべてのAPIを使用できます。

5
Legonaftik

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
}
2
Matt