Flutter iOS端NFC扫描开发:Info.plist需配置Felica与ISO7816代码求助
iOS NFC 配置疑问解答:Felica 系统码与 ISO 7816 选择标识符
一、这两个配置到底是什么?
Felica System Codes
这是苹果iOS对NFC功能的强制配置项——哪怕你的应用根本不用索尼的FeliCa标准卡片(这类卡片多见于日本交通、支付场景),iOS也要求你在Info.plist里声明这个字段,不能留空数组。它本质是FeliCa卡片的系统标识,不同类型的FeliCa卡对应不同的系统码。
ISO 7816 Select Identifiers
对应ISO 7816标准的智能卡(比如银行卡、身份证、各类行业IC卡),这些字符串是卡片上的应用标识符(AID)。iOS要求你明确声明应用要访问的AID,否则NFC会话无法读取对应卡片的数据。每个合规的ISO7816卡片都有专属的AID,比如国内二代身份证、Visa银行卡都有各自固定的AID值。
二、怎么获取这些配置值?
关于Felica System Codes
如果你的应用完全不需要支持FeliCa卡片,不用纠结找真实的FeliCa卡系统码,直接填一个合法的占位符就行,比如通用测试码0000,或者常见的FeliCa交通卡系统码8008,就能通过编译。要是真需要支持FeliCa卡,就得从卡片供应商那里拿对应的系统码,或者用NFC调试工具读取卡片的系统码。
关于ISO 7816 Select Identifiers
- 找供应商要:直接联系你的NFC芯片/卡片提供商,索要对应卡片的AID,这是最准确的方式。
- 用工具读取:在Android端已经能正常扫描的前提下,你可以在Android代码里加个日志,把扫描到的卡片AID打印出来,直接复制到iOS的配置里;也可以用iOS的NFC调试APP扫卡片获取AID。
- 通用AID参考:如果是要兼容多种ISO7816卡片,可填通配符
A0000000000000,但更建议填你实际需要的具体AID,避免苹果审核或功能异常。
三、配置示例(供参考)
假设你不需要支持FeliCa,只需要读取国内二代身份证,修改后的Info.plist片段如下:
<key>com.apple.developer.nfc.readersession.felica.systemcodes</key> <array> <string>0000</string> </array> <key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key> <array> <string>A000000063504B434153453130</string> </array>
另外别忘了加NFC权限描述:
<key>NFCReaderUsageDescription</key> <string>用于扫描NFC芯片获取相关信息</string>
内容的提问来源于stack exchange,提问作者maybrother
相关产品推荐
相关产品推荐

