我希望更新我的应用程序并使用 xCode 11.0 进行构建。
我在 iOS13 之前就已经实现了 NFC,并且我想继续从 iOS11 及更高版本的设备读取标签。这时候我不需要写标签,也不需要不断地轮询。我只想听按钮按下的声音,并在阅读后使我的会话无效。
我的代码可以在 iOS12 设备上运行,但是当我使用 iOS13 设备时,会话会立即失效,并且我没有看到内置的弹出窗口指示它正在侦听。
[CoreNFC] 00000002 815b8b00 -[NFCNDEFReaderSession beginSession]:318 error:Error Domain=nfcd Code=2 "Busy" UserInfo={NSLocalizedDescription=Busy}, errorCode: 0xcb
The session was invalidated: System resource unavailable
我在签名和功能中打开了近场通信标签读取。
我还在会员中心为我的应用程序标识符启用了此功能。我了解到您可能需要在会员中心关闭和打开 NFC 开关,然后重新下载配置文件。我在这里以及在我自己的项目中已经多次这样做了。我尝试让 xCode 管理我的证书并手动下载它们。
我的权利文件包含以下内容:
com.apple.developer.nfc.readersession.formats NDEF 标签
我的 VC 实现 NFC 包含:
import CoreNFC
import os
@available(iOS 11.0, *)
class NFC_VC: UIViewController
{
var nfcSession: NFCNDEFReaderSession?
override func viewDidLoad()
{
super.viewDidLoad()
configureAppearance()
logViewLoad()
nfcSession = NFCNDEFReaderSession.init(delegate: self, queue: nil, invalidateAfterFirstRead: true)
nfcSession?.begin()
}
}
@available(iOS 11.0, *)
extension NFC_VC: NFCNDEFReaderSessionDelegate{
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
print("The session was invalidated: \(error.localizedDescription)")
}
@available(iOS 11.0, *)
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
self.nfcSession?.invalidate()
}
}
@可用(iOS 11.0,*) func readerSession(_ 会话: NFCNDEFReaderSession, didDetectNDEFs 消息: [NFCNDEFMessage]) {
self.nfcSession?.invalidate()
}
尝试将 self.nfcSession?.invalidate() 替换为 session.invalidate()