V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyws2012
V2EX  ›  Android

为什么 Android 不提供门卡、公交卡等功能需要的完整 NFC API?

  •  
  •   yyws2012 · 2023-04-01 19:09:36 +08:00 via Android · 10424 次点击
    这是一个创建于 608 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,目前已知的门卡模拟,要么是系统应用,要么要写系统分区( root + 读写挂载 /Magisk )。公交也全是靠系统应用。为什么 Android 不能开放相关 API ,允许普通 app 实现这些功能?
    11 条回复    2023-04-03 17:48:32 +08:00
    Biggoldfish
        1
    Biggoldfish  
       2023-04-01 19:29:46 +08:00
    公交完全是可以通过现有的系统 API 实现的,之前有微信小程序可以支持 NFC 公交卡,只是大多数手机厂商直接做成了系统应用

    而且在美国 NFC 公交卡都是 Google Wallet/Apple Pay 里添加一下就行了,没有第三方应用自己实现公交卡的需求(也很少会有人用
    fromzero
        2
    fromzero  
       2023-04-01 19:34:22 +08:00
    可能觉得不安全吧
    kangyue9999
        3
    kangyue9999  
       2023-04-01 19:43:02 +08:00
    为什么要提供 NFC 的 API, android 又没有要求所有手机内置 NFC. NFC 对于手机来说本来就像是蓝牙一样的选配外设,顶多是一个分享功能。对于支付和门禁这种的应用就更是选配中的选配了。
    只不过因为国内厂商很卷,所以大家看起来好像是标配,但是这不代表说 anroid 就得把这个应用包进系统里啊
    CEBBCAT
        4
    CEBBCAT  
       2023-04-01 20:10:40 +08:00
    @kangyue9999 #3 是不是我理解不太对?我觉得楼主的重点是 API
    ysc3839
        5
    ysc3839  
       2023-04-01 22:18:30 +08:00 via Android   ❤️ 2
    那些 NFC 功能都是 NFC 芯片提供的,没有标准接口的。
    Android 有 NFC 卡模拟接口,是因为市面上绝大多数 NFC 芯片都支持这种模式,且实际应用场景很广泛,如模拟银行卡。
    目前银行卡交易系统都是实时联网的,所以卡模拟只需要交换一个一次性授权密钥即可,其他数据是联网验证的。
    而公交卡系统中很多刷卡机只能做到定时联网同步数据,做不到实时联网,那刷卡机不可避免要信任卡中的数据,这就涉及到了数据复制的问题,那就不能用纯软件的模拟方案了。因此大部分 NFC 芯片不会支持这种模拟方式,即使 Android 定义了这个接口,结果也会是没有厂商支持。实际上 Android 是支持 NFC SIM 的,利用 SIM 卡来充当公交卡的安全芯片。
    datou
        6
    datou  
       2023-04-01 22:45:00 +08:00
    我记得 16 年左右很多手机都支持和包的 nfc-sim 呀
    yolee599
        7
    yolee599  
       2023-04-02 00:09:40 +08:00 via Android   ❤️ 1
    andriod 太容易 hack 了,和支付相关的越开放风险越高
    felixlong
        8
    felixlong  
       2023-04-02 09:42:27 +08:00
    yyws2012
        9
    yyws2012  
    OP
       2023-04-02 11:19:13 +08:00 via Android
    @felixlong 用这个可以实现读取门卡后,用手机模拟它?
    wanghui22718
        10
    wanghui22718  
       2023-04-03 16:22:11 +08:00
    安全问题。刚好深入研究过一点,api 是有的,但是对 m1 卡数据扇区的模拟依赖 nfc 芯片,需要一个芯片密钥才能进行,因安全问题只能设备制造商存有,不可能提供第三方随意使用。
    lc5900
        11
    lc5900  
       2023-04-03 17:48:32 +08:00
    安全问题吧,ESE 的权限不能随便开放,不过可以用 HCE 来软实现部分功能
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2652 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.