我正在尝试使用NFC。我遵循了这些步骤:
此后,我导入了CoreNFC并实现了这些代码:
@available(iOS 11.0, *)
extension EventPreviewViewController: NFCNDEFReaderSessionDelegate {
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
let alert = UIAlertController.withOkButton(andTitle: NSLocalizedString("TitleWarning"), andText: NSLocalizedString("ErrorNFCInvalidate"), okHandler: nil)
self.present(alert, animated: true, completion: nil)
}
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
// TODO
}
}
class EventPreviewViewController: UITableViewController {
@available(iOS 11.0, *)
var nfcSession: NFCNDEFReaderSession {
return NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
}
@IBAction func startAccess(_ sender: UIButton) {
if #available(iOS 11.0, *) {
nfcSession.begin()
} else {
let alert = UIAlertController.withOkButton(andTitle: NSLocalizedString("TitleWarning"), andText: NSLocalizedString("ErrorNFCUnsupported"), okHandler: nil)
self.present(alert, animated: true, completion: nil)
}
}
}
为什么我不断收到“错误域= NFC错误代码= 202“会话意外失效” UserInfo = {NSLocalizedDescription =会话意外失效}”?
答案 0 :(得分:0)
我不确定但在导致此错误Session is invalidated unexpectedly
的行下
当我与CoreNFC
合作时,遇到了类似的问题。通过定义为property
let nfcSession = NFCNDEFReaderSession(delegate: self, queue: DispatchQueue(label: "queueName", attributes: .concurrent), invalidateAfterFirstRead: true)
我建议您需要将nfcSession
定义为属性。
var nfcSession: NFCNDEFReaderSession?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.nfcSession = NFCNDEFReaderSession(delegate: self, queue: DispatchQueue.global(qos: .background), invalidateAfterFirstRead: false)
self.nfcSession?.begin()
return true
}
您可以为iOS 11定义一个属性,如下所示。
@available(iOS 10.0, *)
var session: NFCNDEFReaderSession?
答案 1 :(得分:0)
更新ios13 / swift 5.1
a)苹果公司的原始样本有时会失败,并导致同一错误。
(https://developer.apple.com/documentation/corenfc/building_an_nfc_tag-reader_app)
b)如果失败(似乎是愚蠢的。无论如何..都可以工作。)重启设备。它发生了;(