在 Android Chrome 81 上实现 NFC 不起作用

Posted

技术标签:

【中文标题】在 Android Chrome 81 上实现 NFC 不起作用【英文标题】:Implementation of NFC on Android Chrome 81 not working 【发布时间】:2020-05-10 22:45:19 【问题描述】:

我正在尝试使用以下代码从 android 上的 chrome 81 读取 NFC 标签:

<html>
<head>
    <title>NFC</title>
</head>
<body>
    <button onclick="reader()">Scan</button>

    <script>
        function reader()
            const reader = new NDEFReader();
            reader.scan().then(() => 
                alert("Scan started successfully.");
                reader.onerror = () => 
                    alert("Cannot read data from the NFC tag. Try another one?");
                ;
                reader.onreading = event => 
                    alert("NDEF message read.");
                ;
            ).catch(error => 
                alert(`Error! Scan failed to start: $error.`);
            );
        
    </script>
</body>

我遇到的问题是它从 nfc 标签中读取条目,但没有像代码建议的那样发出警报,而是尝试将我引导到手机上已安装的应用程序。但是,当我使用使用完整 API 的 https://googlechrome.github.io/samples/web-nfc/ 时,它可以工作并作为数据显示在网页中。主要区别在于我使用通过 chrome://flags 方法启用 NFC API。

除了阅读标签之外,我唯一的目的是将内容作为变量保存到 sessionStorage 以供网站的其他部分使用。

提前致谢

【问题讨论】:

您在“catch(error)”部分遇到的错误是什么? 【参考方案1】:

https://googlechrome.github.io/samples/web-nfc/ 和您的代码之间的一个重要区别是这个演示曾经在其网页中包含一个原始试用令牌。

目前,要在 Android 上试验 Web NFC,请启用 chrome://flags 中的 #experimental-web-platform-features 标志,如 https://web.dev/nfc/#use 中所述

希望这个标志一旦发布到网络平台就不需要了。

【讨论】:

以上是关于在 Android Chrome 81 上实现 NFC 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android上实现FrameBuffer和Overlay的blend

在我的 .NET Windows 窗体上实现从 Chrome 拖放

Android WebView 因最新的 Chrome 81.x 更新而崩溃,特别是在 Android 9.x 上

在 Android 上实现后台位置跟踪

如何在 Android 1.5 上实现推送?

在 Android 上实现推送通知的简单方法