Я углубляюсь в новые возможности CoreNFC в iOS 13 и пытаюсь заставить работать NFCTagReaderSession.После настройки моих прав и создания экземпляра NFCTagReaderSession и делегата я пытаюсь начать сеанс, вызвав nfcTagReaderSession?.begin()
.Мой сеанс немедленно становится недействительным с этой ошибкой:
Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}
Я следовал приведенной здесь документации для моего файла разрешений: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_nfc_readersession_formats
Я также добавил соответствующее "Конфиденциальность - описание использования сканирования NFC "в моем Info.plist.
Кто-нибудь еще заставил это работать?Это просто проблема с Xcode 11 или iOS 13?
Вот код в моем ViewController:
import UIKit
import CoreNFC
class ViewController: UIViewController {
var nfcTagReaderSession: NFCTagReaderSession?
override func viewDidLoad() {
super.viewDidLoad()
nfcTagReaderSession = NFCTagReaderSession(pollingOption: [.iso14443, .iso15693, .iso18092], delegate: self)
nfcTagReaderSession?.begin()
print("isReady: \(nfcTagReaderSession?.isReady)")
}
}
extension ViewController: NFCTagReaderSessionDelegate {
func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
print("Tag reader did become active")
}
func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) {
print("\(error)")
}
func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
print("\(tags)")
}
}
Вот мой файл разрешений:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
<string>NDEF</string>
</array>
</dict>
</plist>