首页 > 解决方案 > 如何通过颤振将 NDEF 消息从 Android 手机发送到 iPhone

问题描述

我正在用 Flutter 开发一个 Android+iOS 应用程序,它有几个用户交互屏幕和 NFC 屏幕。

在 NFC 屏幕上,用户背靠背点击手机(就像我们使用 Android Beam 数据传输所做的那样):一部手机是 Android 手机,它运行应用程序并发送 NFC NDEF 消息,就像在这个例子中一样。

在第二部手机上,带有 NFC 屏幕的“我的应用程序”正在运行并使用nfc_in_flutter读取 NDEF(flutter中只有 3 个 nfc 插件,这似乎是目前唯一维护的)插件并显示在屏幕上。

这种情况在 Android 设备上运行良好,但是在 iOS 设备上,当我点击 Android 设备时,什么也没有发生。它不读。

我用 iOS 设备测试了简单的 NFC 标签(不是 Android 设备),它会读取标签。有人可以解释是什么原因吗?

这是我的假设,如果我错了,请纠正我:由于 iOS 仅支持 NDEF 格式而不支持 HCE,我应该将 NDEF 从 Android 发送到 iOS。

我对主机卡仿真的了解:

为了让设备像卡片一样工作(或使用 HCE),应用程序需要创建 HostApduService。当此服务运行时,手机(以及应用程序本身)能够识别阅读器,如果一切正常,它会发送有效负载。消息的格式是 IsoDep(不是 NDEF)。

另一方面,阅读器端发送 ADPU 以建立连接,如果正常,它会接收有效负载。

在上面的示例中,发送者创建 NDEF 消息并且不充当卡 (HCE),因为没有创建 HostApduService。

那么,如果 iOS 支持 NDEF 消息,为什么 iOS 设备无法从 Android 设备上读取消息呢?

标签: androidiosflutternfccore-nfc

解决方案


推荐阅读