小编dre*_*rek的帖子

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

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

在 NFC 屏幕上,用户连续点击手机(就像我们处理 Android 波束数据传输一样):一部手机是 Android 手机,它运行应用程序并发送 NFC NDEF 消息,就像本中一样。

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

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

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

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

我对主机卡模拟的了解:

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

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

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

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

android nfc ios flutter core-nfc

6
推荐指数
0
解决办法
1072
查看次数

在 flutter 插件类中捕获 onNewIntent()

问题标题可能有点令人困惑。我会尝试解释更多细节。

我正在编写一个 flutter 插件来使用 NFC。

我有示例 Android Activity,它在收到 NDEF 消息时触发 onNewIntent()。此时消息有效负载就可以使用了。

class MainActivity : AppCompatActivity() {
    private var mNfcAdapter: NfcAdapter? = null
    private var mPendingIntent: PendingIntent? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mNfcAdapter = NfcAdapter.getDefaultAdapter(this)

        mPendingIntent = PendingIntent.getActivity(
                this, 0,
                Intent(this, this.javaClass)
                    .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0
            )
    }

    override fun onResume() {
        super.onResume()
        mNfcAdapter?.enableForegroundDispatch(this, mPendingIntent, null, null)
    }

    override fun onPause() {
        super.onPause()
        mNfcAdapter?.disableForegroundDispatch(this)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) {
            intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)?.also { rawMessages …
Run Code Online (Sandbox Code Playgroud)

android nfc flutter

3
推荐指数
1
解决办法
2692
查看次数

标签 统计

android ×2

flutter ×2

nfc ×2

core-nfc ×1

ios ×1