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

2023-04-01 19:09:36 +08:00
 yyws2012
如题,目前已知的门卡模拟,要么是系统应用,要么要写系统分区( root + 读写挂载 /Magisk )。公交也全是靠系统应用。为什么 Android 不能开放相关 API ,允许普通 app 实现这些功能?
6079 次点击
所在节点    Android
11 条回复
Biggoldfish
2023-04-01 19:29:46 +08:00
公交完全是可以通过现有的系统 API 实现的,之前有微信小程序可以支持 NFC 公交卡,只是大多数手机厂商直接做成了系统应用

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/929035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX