如何使用Android设备通过NFC向其他手机公开URL?

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

我尝试使用 Android 设备(Android 13、Samsung S23+)向其他手机公开 URL,这样,每当用户在我的手机周围轻敲手机时,我就可以向他们发送一个“网站 NFC 标签”,他们可以单击在手机上的通知上打开 URL。我使用的测试接收设备是 iPhone 14。两台设备都开启了 NFC。

我正在使用 Web

NDEFReader()
write()
方法,但没有成功。我的(React JS)JavaScript代码如下:

class SignUpClass extends React.Component {

    clickOnButton = async () => {

        try {
            if ('NDEFReader' in window) {
                const ndef = new window.NDEFReader();

                try {
                    await ndef.write({
                        records: [{ recordType: "url", data: "http://www.google.com/" }],
                    });
                } catch {
                    console.log("Write failed :-( try again.");
                }

            } else {
                console.log("Web NFC is not supported in this browser.");
            }
        } catch (error) {
            console.log("Argh! " + error);
        }
    }


    buttonForNfc = () => {
        return <Button onClick={() => {this.clickOnButton()}}>Click me to test NFC</Button>
    }


    render() {

        return(
            <div>
                {this.buttonForNfc()}
            </div>
        )
    }
}

当我第一次使用此代码打开页面时,网页上出现了要求 NFC 权限的通知。这可以。然而,iPhone 上没有网站 NFC 标签,两个设备之间根本没有交互。

我到底错过了什么?

提前致谢!

javascript android ios reactjs nfc
1个回答
0
投票

您缺少的是,作为读取器/写入器与模拟 NFC 标签是完全不同的模式。两个读写器设备无法相互通信,其中一个必须模拟 NFC 标签。

在 Android 上,它可以是读取器/写入器或模拟 NFC 标签。

在 iOS 上,普通开发人员只能使用读取器/写入器模式,只有 Apple 和可能选定的特殊合作伙伴可以使用硬件来模拟 NFC 标签。

此外,这只是您可以使用更原生的语言(即 Android 上的 Java/Kotlin)执行的操作。

请参阅 https://github.com/underwindfall/NFCAndroid 了解工作示例。

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