You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:12:48