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

MySQL-Integritätsbeschränkungen – Definition und Beispiel-Tutorial

Inhaltsverzeichnis Integritätsbeschränkungen Defi...

Detaillierte Erklärung des Flex-Layouts in CSS

Flex-Layout wird auch elastisches Layout genannt....

Docker erstellt Schritte zur Implementierung von Kubectl-Images

Wenn der Programmdienst mit k8s bereitgestellt wi...

Detaillierte Erklärung der MySQL-Partitionstabelle

Vorwort: Partitionierung ist ein Tabellenentwurfs...

Verwenden von CSS3 zum Implementieren eines Schriftfarbverlaufs

Beim Verwenden von Animation.css habe ich festges...

jQuery erzielt Vollbild-Scrolling-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...

Drei Möglichkeiten zur Implementierung von Animationen in CSS3

Hiermit werden die Grundkenntnisse des Interviewt...

Drei Möglichkeiten zum Sperren und Entsperren von Benutzerkonten in Linux

Wenn in Ihrer Organisation bereits eine Kennwortr...

Verständnis und Anwendungsszenarien von Enumerationstypen in TypeScript

Inhaltsverzeichnis 1. Was ist 2. Verwendung Numer...

Detaillierte Erläuterung der Angular-Datenbindung und ihrer Implementierung

Inhaltsverzeichnis Vorwort Was ist Datenbindung? ...

So finden Sie langsame MySQL-Abfragen

Vorwort Ich glaube, dass jeder in seiner tägliche...

Wie viele Ports kann ein Linux-Server maximal öffnen?

Inhaltsverzeichnis Hafenbezogene Konzepte: Bezieh...

Detaillierte Erklärung zur Verwendung von $emit in Vue.js

1. Übergeordnete Komponenten können Props verwend...