IOS收发NFCTagType.iso7816

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

我使用以下代码在 iOS 上将 NFC 标签读取为卡 ID:

if (tag.type == NFCTagType.iso7816) {
  String result1 = await FlutterNfcKit.transceive("00a40400");
  setState(() {
    _result = '1: $result1\n';
  });
}

我遇到了一个错误:

[CoreNFC] -[NFCTagReaderSession setAlertMessage:]:101 (null)
[CoreNFC] -[NFCTagReaderSession transceive:tagUpdate:error:]:883 Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}

我已将以下内容添加到

info.plist
文件中:

<key>com.apple.developer.nfc.readersession.felica.systemcodes</key>
<array>
  <string>12FC</string>
  <string>6A82</string>
  <string>8008</string>
</array>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
  <string>A0000002471001</string>
  <string>A0000002472001</string>
  <string>A000000151000000</string>
  <string>A00000000386980701</string>
  <string>A000000003101001</string>
  <string>A000000003101002</string>
  <string>A0000000041010</string>
  <string>A0000000042010</string>
  <string>A0000000044010</string>
  <string>44464D46412E44466172653234313031</string>
  <string>D2760000850100</string>
  <string>D2760000850101</string>
  <string>00000000000000</string>
</array>

还有

Runner.entitlements
文件:

<?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>
ios flutter nfc
1个回答
0
投票

我会一劳永逸地解释你发送的命令是如何工作的!

FlutterNfcKit.transceive("00a40400");
  • 第 1 个字节:指令类 CLA == '00'
  • 第 2 个字节:指令代码 INS == 'a4'*
  • 第 3 个字节:p1参数 P1 == '04'*
  • 第 4 个字节:p2参数 P2 == '00'
  • 第 5 个字节:数据字节计数 CL == '00'
  • 6..字节:数据

(*) 在 javacard A4 0A 中是选择卡上小程序的命令,您没有发布哪个小程序!显然它不起作用

CL 参数(字节数)是强制性的,如果您不必传递任何字节,则您将传递“00”,否则它将不起作用。但正如我之前写给您的几行,您在卡上选择的小程序的 AID 或十六进制标识符丢失了

一个例子: 00 A4 04 00 09 D1 56 00 01 32 83 26 01 01 以粗体显示,您会注意到我正在从“0xA4,0x04”卡中选择一个小程序。 以斜体显示的小程序 ID [正是 IOS 权利中的 ID

09:这是我发送到卡的字节数

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