如何使用 flutter 将 NDEF 消息从 Android 手机发送到 iPhone

问题描述 投票:0回答:1

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

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

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

这种情况在 Android 设备上运行良好,但是在 iOS 设备上,当我点击 Android 设备时没有任何反应。 它不读。

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

以下是我的推测,如有错误请指正: 由于 iOS 仅支持 NDEF 格式而不支持 HCE,我应该将 NDEF 从 Android 发送到 iOS。

我对主机卡仿真的了解:

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

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

在上面example发件人创建NDEF消息并且不充当卡(HCE),因为没有创建HostApduService。

所以如果 iOS 支持 NDEF 消息,为什么 iOS 设备不能从 Android 设备上读取消息?

android ios flutter nfc core-nfc
1个回答
-1
投票

你有没有找到这个问题的解决方案?

我一直在尝试 Host Card Emulation,但它似乎只在 IOS 检测到它时才导致 Apple Pay 以及 Android 上的某些特定金融应用程序。

现在正在尝试让 NDEF 工作,但我不确定它是否可以被 IOS NFC 后台服务检测到,或者是否必须打开一个 App 并专门等待 NFC 消息。

© www.soinside.com 2019 - 2024. All rights reserved.