uni-app implementiert NFC-Lesefunktion

uni-app implementiert NFC-Lesefunktion

In diesem Artikel wird der spezifische Code der Uni-App zur Implementierung der NFC-Lesefunktion zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Ich habe schon lange keinen Blog mehr geschrieben. Heute habe ich die seltene Gelegenheit, alles, was ich gelernt habe, aufzuzeichnen.

1. NFC-Methode.js

//Paketpfad const package_NdefRecord = 'android.nfc.NdefRecord';
const Paket_NdefMessage = "android.nfc.NdefMessage";
const package_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
const package_Intent = "android.content.Intent";
const package_Activity = "android.app.Activity";
const package_PendingIntent = "android.app.PendingIntent";
const package_IntentFilter = "android.content.IntentFilter";
const Paket_NfcAdapter = "android.nfc.NfcAdapter";
const Paket_Ndef = "android.nfc.tech.Ndef";
const package_NdefFormatable = "android.nfc.tech.NdefFormatable";
const package_Parcelable = "android.os.Parcelable";
const package_String = "java.lang.String";

lass NfcAdapter;
lass NdefRecord;
lass NdefMessage;
let readyRead = true; //Mit dem Lesen beginnen let noNFC = false;
let techListsArray = [
 ['android.nfc.tech.IsoDep'],
 ['android.nfc.tech.NfcA'],
 ['android.nfc.tech.NfcB'],
 ['android.nfc.tech.NfcF'],
 ['android.nfc.tech.Nfcf'],
 ['android.nfc.tech.NfcV'],
 ['android.nfc.tech.NdefFormatable'],
 ['android.nfc.tech.MifareClassi'],
 ['android.nfc.tech.MifareUltralight']
];
// Zu schreibende Daten let text = '{id:8888,name:nfc,stie:wangqin.com}';
let readResult = '';

Standard exportieren {
 listenNFCStatus: Funktion() {
  console.log("---------listenNFCStatus--------------")
  lass das = dies;
  versuchen {
   let main = plus.android.runtimeMainActivity();
   let Intent = plus.android.importClass('android.content.Intent');
   let Aktivität = plus.android.importClass('android.app.Aktivität');
   let PendingIntent = plus.android.importClass('android.app.PendingIntent');
   let IntentFilter = plus.android.importClass('android.content.IntentFilter');
   NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');
   let nfcAdapter = NfcAdapter.getDefaultAdapter(main);
   if (nfcAdapter == null) {
    uni.showToast({
     Titel: ,,Das Gerät unterstützt kein NFC! ',
     Symbol: „keine“
    })
    keinNFC = wahr;
    zurückkehren;
   }
   wenn (!nfcAdapter.isEnabled()) {
    uni.showToast({
     Titel: ,,Bitte aktivieren Sie zuerst die NFC-Funktion in den Systemeinstellungen! ',
     Symbol: „keine“
    });
    keinNFC = wahr;
    zurückkehren;
   } anders {
    keinNFC = falsch;
   }

   let intent = neue Absicht(main, main.getClass());
   intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
   let pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);
   let ndef = neuer IntentFilter("android.nfc.action.TECH_DISCOVERED");
   ndef.addDataType("*/*");
   let intentFiltersArray = [ndef];

   //Schlüsselcode const promise = new Promise((resolve, reject) => {
    plus.globalEvent.addEventListener('neuerIntent', Funktion() {
     // Polling-Anruf NFC
     // setTimeout(that.nfcRuning(auflösen), 1000);
     setzeTimeout(() => {
         that.nfcRunning(auflösen)
     }, 1000);
    });
   })
   
   nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
   Rückgabeversprechen
  } fangen (e) {
  }
 },
 nfcRunning: Funktion (auflösen) {
  // console.log("--------------nfcRunning---------------")
  NdefRecord = plus.android.importClass("android.nfc.NdefRecord");
  NdefMessage = plus.android.importClass("android.nfc.NdefMessage");
  let main = plus.android.runtimeMainActivity();
  let intent = main.getIntent();
  lass das = dies;
  wenn (package_TECH_DISCOVERED == intent.getAction()) {
    wenn (readyRead) {
     //Hier erhalten wir die NFC-Daten über die Lesemethode const id = that.read(intent);
    // bereitLesen = false;
    //Gib die Daten zurück, resolve(id)
   }
  }
 },
 
 lesen(Absicht) {
  // toast('Label nicht entfernen, Daten werden gelesen');
  lass das = dies;
  // NFC-ID
  let bytesId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
  Lassen Sie nfc_id = that.byteArrayToHexString(bytesId);

  NFC-ID zurückgeben;
 },
 byteArrayToHexString: function(inarray) { // konvertiert Byte-Arrays in Strings  
  lass i, j, inn;
  let hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
  rauslassen = "";

  für (j = 0; j < inarray.length; ++j) {
   inn = inarray[j] & 0xff;
   i = (inn >>> 4) & 0x0f;
   aus += hex[i];
   i = Gasthaus & 0x0f;
   aus += hex[i];
  }
  Rückkehr raus;
 },

}

Funktion Toast (Inhalt) {
 uni.showToast({
  Titel: Inhalt,
  Symbol: „keine“
 })
}

2. Aufrufmethoden auf Seiten mit NFC

<Ansichtsklasse="flex nfc-ewm">
  <view class="nfc-ewm-item" style="border-right: 1px solid #ccc;" @click="testNFC">
   <image src="@/assets/images/application/icon-nfc.png" alt=""></image>NFC-Erkennung</view>
  <view class="nfc-ewm-item" @click="openScanCode">
   <image src="@/assets/images/application/icon-ewm.png" alt=""></image>QR-Code scannen</view>
</Ansicht>


importiere testtest aus "../../../../../components/hexiii-nfc/hexiii-nfc.js"

 Methoden: {
  asynchroner Test NFC () {
   //Hier verwenden wir eine asynchrone Methode, um die gelesenen NFC-Daten abzurufen const nfcId = await testtest.listenNFCStatus();
   //Konsole.log(nfcId)

   //Die folgenden Daten sind mein Geschäftslogikcode. Wenn Sie nur die NFC-Daten lesen müssen, reicht die obige Codezeile aus.
   const arr = []
   diese.list2.forEach(e => {
    arr.push(e.code)
   })
   wenn(!nfcId) return
   wenn ( arr.indexOf(nfcId) === -1) {
    uni.showToast({
     Symbol: „keine“,
     Titel: 'Kein entsprechender Prüfpunkt gefunden!',
     Dauer: 2000
    });
   } anders {
    uni.showToast({
     Symbol: „keine“,
     Titel: 'Erkennung erfolgreich!',
     Dauer: 2000
    });
    uni.navigateTo({
     URL: `/Seiten/Anwendung/XunJianGuanLi/XunJianRenWu/KaiShiXunJian3/index?id=${this.id}&spotCode=${nfcId}&delta=${this.delta+1}`,
    });
   }
  },
}

3. Seitendarstellungen

4. Zusammenfassung

Das Obige ist meine Implementierung zum Lesen von NFC-Daten. Es springt automatisch zum entsprechenden Check-in-Kontrollpunkt entsprechend den vom Benutzer durch NFC-Scannen gelesenen Daten. Der Code muss verbessert werden. Bitte geben Sie mir weitere Hinweise. Im ersten Teil der NFC-Methode habe ich viele redundante und nicht verwendete Codes gelöscht, da ich nur den Code lesen muss, sodass nur der erforderliche Code übrig bleibt.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • JavaScript implementiert Funktionen zum Schreiben, Lesen und Löschen von Cookies
  • JavaScript implementiert die Funktion zum Lesen der Zwischenablage und zum Einfügen von Screenshots in Webseiten

<<:  Detaillierte Erklärung zur Verwendung von MySQL mysqldump

>>:  So ändern Sie die Ubuntu-Quellliste (Quellliste) - detaillierte Erklärung

Artikel empfehlen

Adaptive HTML-Tabellenmethode

<body style="scroll:no"> <Tabe...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel werden die Installations- und K...

Nexus nutzt API für den Betrieb

Nexus bietet RestApi, aber einige APIs müssen noc...

Installieren Sie MySQL offline mit RPM unter CentOS 6.4

Verwenden Sie das RPM-Installationspaket, um MySQ...

Kann die wiederholbare Leseebene von MySQL Phantomlesevorgänge lösen?

Einführung Als ich mehr über die Datenbanktheorie...

Beispiel zur Erhöhung des Swap-Speichers im CentOS7-System

Vorwort Swap ist eine spezielle Datei (oder Parti...

Eine einfache Möglichkeit, Desktop-Exe-Programme auf einer Webseite aufzurufen

Dieser Artikel stellt hauptsächlich vor, wie Deskt...

Docker verpackt das lokale Image und stellt es auf anderen Maschinen wieder her

1. Verwenden Sie Docker-Images, um alle Image-Dat...

Tutorial zur Samba-Konfiguration für die Dateifreigabe im Linux-System

Inhaltsverzeichnis Deinstallieren und installiere...

Font Treasure House 50 exquisite kostenlose englische Schriftartenressourcen Teil 1

Designer verfügen über eine eigene Schriftartenbi...