nfc 代码适用于 ios 11,但不适用于 iOS13

问题描述 投票:0回答:1

我希望更新我的应用程序并使用 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 swift nfc ios13 core-nfc
1个回答
0
投票

@可用(iOS 11.0,*) func readerSession(_ 会话: NFCNDEFReaderSession, didDetectNDEFs 消息: [NFCNDEFMessage]) {

    self.nfcSession?.invalidate()
}

尝试将 self.nfcSession?.invalidate() 替换为 session.invalidate()

© www.soinside.com 2019 - 2024. All rights reserved.