簡體   English   中英

Cordova/Phonegap NFC 插件 NDEF_PUSH_DISABLED [已解決]

[英]Cordova/Phonegap NFC Plugin NDEF_PUSH_DISABLED [Solved]

我正在嘗試使用插件phonegap-nfc構建一個基本的 Cordova NFC 應用程序,該插件使用 NDEF Peer-to-Peer Messaging 從一台設備發送一條消息到另一台設備。 因此我有兩個 Android (8+) 設備。 我的問題與此處的問題類似: https://forum.ionicframework.com/t/ndef-push-disabled-ionic-3/142617但給定的解決方案不適合該問題。

每當我嘗試使用nfc.share([ndef.textRecord("Hello"))發送 NDEF 消息時,我都會收到錯誤NDEF_PUSH_DISABLED 我嘗試了很多東西,最后我找到了解決方案 - 請參閱下面的答案

有這個問題的帖子不多,所以我想在這里提供一個詳細的描述如何解決這個問題。

為了找到問題的根源,我查看了phonegap-nfc 插件本身的源代碼,其中包含:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
if (!nfcAdapter.isNdefPushEnabled()) {
   callbackContext.error(STATUS_NDEF_PUSH_DISABLED);
}

所以問題不在於代碼本身,而是來自 Android 設備的 NFC 適配器返回 NDEF 消息推送被禁用。 所以我在設備上查看了我的 NFC 設置並啟用了 Android Beam,它特別使用了 NDEF 點對點共享。 通常,您禁用此功能,因為它總是彈出並嘗試默認連接兩個啟用 NFC 的設備共享您當前的應用程序信息,這真的很煩人......

但在這種情況下,您必須啟用並特別使用 Android Beam。 我發現的解決方案是,僅當您執行應用程序代碼然后點擊 Android Beam 彈出窗口時才會發送您要使用nfc.share()發送的消息。 在此操作之后,您的 NDEF 消息將使用 Android Beam 和您給定的消息發送到其他設備。 要發送和接收消息,我使用以下代碼:

nfc.addNdefListener(
    function (nfcEvent) {
        var tag = nfcEvent.tag,
            ndefMessage = tag.ndefMessage;

        // dump the raw json of the message, note: real code will need to decode the payload from each record
        alert("NDS1 " + JSON.stringify(ndefMessage));

        // assuming the first record in the message has a payload that can be converted to a string.
        alert("NDS2 " + nfc.bytesToString(ndefMessage[0].payload).substring(3));

        nfc.share([ndef.textRecord("Hello")], () => {alert("Success")}, (err) => alert(JSON.stringify(err)));
    },
    function () { // success callback when listener was enabled
        alert("Waiting for NDEF tag");
    },
    function (error) { // error callback
        alert("Error adding NDEF listener " + JSON.stringify(error));
    }
)

您不必等到 NdefListener 可用,您可以在任何地方使用nfc.share() ,當您單擊 Android Beam tap 時,您只會收到回調。 您使用nfc.share()提供的最后一條消息將使用 Android Beam 發送。

Cordova Android Beam NDEF 消息接收

我希望這個錯誤描述可以幫助一些人使用 Cordova、Phonegap 或 Ionic 獲得 NFC - NDEF 點對點消息傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM