首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NFCTagReaderSession的“缺失所需权利”

NFCTagReaderSession的“缺失所需权利”
EN

Stack Overflow用户
提问于 2019-06-05 02:23:05
回答 4查看 14.7K关注 0票数 18

我正在深入研究iOS 13的新CoreNFC功能,并且正在努力使NFCTagReaderSession工作。在设置了我的权限并实例化了一个NFCTagReaderSession和委托之后,我尝试通过调用nfcTagReaderSession?.begin()来启动会话。我的会话立即因以下错误而失效:

Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}

我按照这里的文档为我的权利文件:格式

我还在我的Info.plist中添加了适当的“隐私- NFC扫描使用描述”。

有人成功了吗?这仅仅是Xcode 11或iOS 13的问题吗?

下面是我的ViewController中的代码:

代码语言:javascript
运行
复制
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)")
    }
}

这是我的权利档案:

代码语言:javascript
运行
复制
<?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>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-05 12:22:25

我也遇到了同样的问题,但是在删除和添加近场通信标记读取的功能之后,它就消失了。

我的权利文件有一点不同:

代码语言:javascript
运行
复制
<?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.associated-domains</key>
    <array>
        <string>applinks:example.com</string>
    </array>
    <key>com.apple.developer.nfc.readersession.formats</key>
    <array>
        <string>NDEF</string>
        <string>TAG</string>
    </array>
</dict>
</plist>

但我不认为是这样。

此外,您还可以尝试修改Apple示例以满足您的需要:应用程序

或者从轮询选项中删除.iso18092就可以了。我认为这个标准需要具体的权利。

票数 13
EN

Stack Overflow用户

发布于 2019-06-07 06:14:53

info.plist添加以下密钥

代码语言:javascript
运行
复制
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
    <string>D2760000850101</string>
</array>
<key>com.apple.developer.nfc.readersession.felica.systemcodes</key>
<array>
    <string>12FC</string>
</array>
票数 7
EN

Stack Overflow用户

发布于 2019-06-08 00:36:27

要读取ePassports,除了在功能中添加近场通信标记读取之外,还需要在info.plist中添加以下AID键和值:

代码语言:javascript
运行
复制
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
    <string>A0000002471001</string>
</array>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56453525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档