iOS 11 CoreNFC Как проверить, поддерживает ли устройство NFC?
Как определить, есть ли у iPhone возможность использовать чип NFC, предоставляемый базовой платформой NFC?
Я знаю, что сейчас он работает только на iPhone 7 и 7 плюс, но я не хочу жестко кодировать аппаратные строковые идентификаторы, так как не знаю, какие устройства появятся в будущем.
4 ответа
Вы можете использовать readingAvailable
свойство класса:
if NFCNDEFReaderSession.readingAvailable {
// Set up the NFC session
} else {
// Provide fallback option
}
Обновление для iOS 12:
1) Если вы хотите запустить свое приложение только для iPhone 7 и более новых моделей, вы можете добавить требование NFC в Info.plist
:
<key>UIRequiredDeviceCapabilities</key>
<array>
// ... your restrictions
<string>nfc</string>
</array>
С этим требованием только устройства с NFC смогут загружать наше приложение из App Store.
2) Для iPhone старше iPhone 7 и для поддержки iPad также необходимо проверить, Core NFC
доступен, потому что он не включен для этих устройств. Вот почему вы должны связать Core NFC
фреймворк с использованием Weak Linking:
а затем проверьте Core NFC
наличие в коде:
var isNFCAvailable: Bool {
if NSClassFromString("NFCNDEFReaderSession") == nil { return false }
return NFCNDEFReaderSession.readingAvailable
}
Если isNFCAvailable
возвращается true
тогда вы можете использовать все API, предоставляемые Core NFC
не беспокоясь о сбое вашего приложения.
Также проверьте устройства с 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
}
Можно проверить список устройств от Apple https://developer.apple.com/support/required-device-capabilities/ (он длинный, используйте: cmd-f + "nfc")