"Missing required entitlement" 对于 NFCTagReaderSession
"Missing required entitlement" for NFCTagReaderSession
我正在研究 iOS 13 的新 CoreNFC 功能,并且正在努力让 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
我也在我的Info.plist中添加了合适的"Privacy - NFC Scan Usage Description"。
有人让这个工作了吗?这只是 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>
您必须将此键添加到 info.plist:
NFC 标签 Reader 会话
的 ISO7816 应用程序标识符
NFC 标签的 ISO18092 系统代码 Reader 会话
我不知道这个的价值。我做了一个项目示例,但无法从我的电子护照中读取任何内容。星期五将有一个事件,我希望一切都会变得清晰:link
我遇到了同样的问题,但是在功能中删除并添加近场通信标签读取后问题消失了。
我的权利文件有一点不同:
<?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 示例以满足您的需要:https://developer.apple.com/documentation/corenfc/building_an_nfc_tag-reader_app
或者只需从轮询选项中删除 .iso18092 即可。我认为这个标准需要特定的权利。
像这样将此键添加到 info.plist
<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>
读取电子护照,除了在Capabilities中添加Near Field Communication Tag Reading外,还需要在info.plist中添加以下AID key和value:
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
</array>
我正在研究 iOS 13 的新 CoreNFC 功能,并且正在努力让 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
我也在我的Info.plist中添加了合适的"Privacy - NFC Scan Usage Description"。
有人让这个工作了吗?这只是 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>
您必须将此键添加到 info.plist:
NFC 标签 Reader 会话
的 ISO7816 应用程序标识符NFC 标签的 ISO18092 系统代码 Reader 会话
我不知道这个的价值。我做了一个项目示例,但无法从我的电子护照中读取任何内容。星期五将有一个事件,我希望一切都会变得清晰:link
我遇到了同样的问题,但是在功能中删除并添加近场通信标签读取后问题消失了。
我的权利文件有一点不同:
<?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 示例以满足您的需要:https://developer.apple.com/documentation/corenfc/building_an_nfc_tag-reader_app
或者只需从轮询选项中删除 .iso18092 即可。我认为这个标准需要特定的权利。
<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>
读取电子护照,除了在Capabilities中添加Near Field Communication Tag Reading外,还需要在info.plist中添加以下AID key和value:
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
</array>