当我在android中运行时,运行顺利,但是当我在IOS设备IOS 14.6中运行时,出现此错误
XPC 错误:错误域 = NSCocoaErrorDomain 代码 = 4099 “与名为 com.apple.nfcd.service.corenfc 的服务的连接在此进程中无效。” UserInfo={NSDebugDescription=与名为 com.apple.nfcd.service.corenfc 的服务的连接在此进程中无效。}
屏幕文件
@override
void initState() {
super.initState();
_registerNFC();
}
void _registerNFC() async {
NfcManager.instance.startSession(
pollingOptions: {
NfcPollingOption.iso14443,
NfcPollingOption.iso15693,
NfcPollingOption.iso18092,
},
onDiscovered: (NfcTag tag) async {
print(tag.toString());
String mytag = "";
if (tag.data.containsKey("mifareclassic")) {
mytag = tag.data["mifareclassic"]["identifier"]
.map((e) => e.toRadixString(16).padLeft(2, '0'))
.join('')
.toString()
.toUpperCase();
print("classic");
} else if (tag.data.containsKey("mifareultralight")) {
mytag = tag.data["mifareultralight"]["identifier"]
.map((e) => e.toRadixString(16).padLeft(2, '0'))
.join('')
.toString()
.toUpperCase();
print("ultralight");
} else if (tag.data.containsKey("mifareplus")) {
mytag = tag.data["mifareplus"]["identifier"]
.map((e) => e.toRadixString(16).padLeft(2, '0'))
.join('')
.toString()
.toUpperCase();
print("plus");
} else if (tag.data.containsKey("mifaredesfire")) {
mytag = tag.data["mifaredesfire"]["identifier"]
.map((e) => e.toRadixString(16).padLeft(2, '0'))
.join('')
.toString()
.toUpperCase();
print("des fire");
} else {
mytag = 'unknown type card';
}
// var lastID = mytag[mytag.length - 1];
result.value = mytag;
uid = result.value;
NfcManager.instance.stopSession();
print("close session");
_updateNFC();
try {
// await ndef.write(message);
result.value = 'Success to "Ndef Write"';
NfcManager.instance.stopSession();
//_ndefWriteLock(); jangan letak kalau tak nnt tak boleh unlock balik
} catch (e) {
result.value = e;
NfcManager.instance
.stopSession(errorMessage: result.value.toString());
return;
}
});
}
void _updateNFC() {
if (uid != 'unknown type card') {
Navigator.pop(context, uid);
} else {
CustomDialog.show(context,
isDissmissable: false,
title: "Unknown NFC tag",
description:
"Please use another type. Type allowed: [MifareClassic] [MifareUltralight] [MifareDesFire]",
btnOkText: "I Understand", btnOkOnPress: () {
Navigator.pop(context);
print("open session");
_registerNFC();
});
}
}
info.plist 文件
<key>NFCReaderUsageDescription</key>
<string>to scan the NFC Tag on the fire extinguisher</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>nfc</string>
</array>
<key>com.apple.developer.nfc.readersession.felica.systemcodes</key>
<array>
<string>0003</string>
<string>04D1</string>
<string>8008</string>
<string>80DE</string>
<string>865E</string>
<string>8592</string>
<string>8B5D</string>
<string>8FC1</string>
<string>FE00</string>
</array>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>TAG</string>
<string>NDEF</string>
</array>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002310100000000000000000000</string>
<string>A0000002310200000000000000000000</string>
<string>A0000002480300000000000000000000</string>
</array>
有人知道如何设置吗? 我还使用了其他软件包,例如 flutter_nfc_kit 但仍然遇到相同的错误
您必须添加 近场通信标签阅读器会话格式权利。
(我只是尝试运行您的代码而不添加它,并收到相同的错误消息)。
打开
Runner.xcodeproj
并单击:
“签名与能力”
+ Capability
添加“近场通信标签读取”