【问题标题】:Nativescript NFC between two phones两部手机之间的 Nativescript NFC
【发布时间】:2026-02-12 00:45:02
【问题描述】:

我刚刚了解了 NFC 以及通过将手机放在一起来交换数据的可能性,我想知道是否可以通过带有 nativescript 的 NFC 在两部手机之间传输数据。

我的应用流程是这样的:

用户将他的手机放在我的平板电脑或手机旁边,我的手机接收到另一个手机的用户 id 并以 id 作为有效负载执行 axios 调用,很简单吧?但它在 nativescript 中可行吗?

我正在使用 Nativescript-vue。

【问题讨论】:

  • {N} 提供了一个 JavaScript 运行时,使您能够用 JavaScript 编写您的原生应用程序。访问任何设备/第三方 API 没有任何限制。因此,几乎可以在原生 Android / iOS 中完成所有您可以做的事情。您可以在市场上找到 NFC 和蓝牙的插件,如果您发现缺少特定功能,您仍然可以直接访问原生 API。

标签: javascript android ios vue.js nativescript


【解决方案1】:

在 Nativescript 中不知道,但在 Java 中你可以,但你不应该。

Android Beam(NFC 设备到 NFC 设备的术语)在 API 29 中已弃用(https://developer.android.com/reference/android/nfc/NfcAdapter.html#setNdefPushMessage(android.nfc.NdefMessage,%20android.app.Activity,%20android.app.Activity...) 并且很可能在 Android 11 中被删除/不支持

删除它的原因是它太慢而且太不可靠(我在尝试使用它时发现它)

距离也很小,两个设备需要背靠背放置。

替代品应该是基于蓝牙/Wifi的,但尚未发布。

还要补充一点,即使 Android Beam 消失了,Android 仍然可以使用它,因为它们仍然支持 NFC 卡模拟(因此一部手机模拟 NFC 卡,而另一部手机读取它,就好像它是 NFC 卡一样)。这仍然会得到支持,但是你需要做很多低级编码,我不知道 Nativescript 会支持它(快速浏览一下 NFC 插件,答案是否定的,NativeScript 不能很好地支持 NFC 并且不事件支持Android Beam)

我认为蓝牙也是如此,技术上可行并且在 Java 中是可行的,但是 Nativescript 不支持所需级别的蓝牙(同样,它实际上只支持读取和写入其他设备,它不支持模拟设备本身)。

您当然可以编写自己的插件,但您必须编写适用于 Android 和 iOS 的 Java 以及插件接口。

也应该可以使用 WiFi Direct https://developer.android.com/training/connect-devices-wirelessly/wifi-direct 但再次使用您必须使用本机 API

【讨论】:

  • 我明白了,我今天用蓝牙写的东西有可能吗?所以不要让手机接触,只需让两部手机都启用蓝牙,用户 A 将 ID 发送给用户 B。
  • 更新了蓝牙和wifi答案