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

Implementierungsmethode für die Datenspeicherung im WeChat-Applet

Inhaltsverzeichnis Globale Variable „globalData“ ...

CSS3-Implementierungscode für einfaches Karussellbildschneiden

Umsetzungsideen Erstellen Sie zunächst einen über...

Detaillierte Erläuterung der ECharts-Mausereignisverarbeitungsmethode

Ein Ereignis ist eine vom Benutzer oder dem Brows...

JavaScript realisiert Lupen-Spezialeffekte

Der zu erzielende Effekt: Wenn die Maus auf das k...

So verbinden Sie Navicat mit der Docker-Datenbank auf dem Server

Starten Sie den MySQL-Container in Docekr Verwend...

Div adaptive Höhe füllt automatisch die verbleibende Höhe

Szenario 1: HTML: <div Klasse="äußere&quo...

11 allgemeine CSS Tipps und Erfahrungssammlung

1. Wie entferne ich den leeren Bereich von einigen...

Docker konfiguriert den Speicherort lokaler Images und Container

Verwenden Sie den Befehl „Find“, um Dateien zu fi...

Natives JS zur Implementierung der E-Mail-Eingabeaufforderung im Anmeldefeld

Dieser Artikel beschreibt eine native JS-Implemen...

Zusammenfassung der MySQL-Datenbanknutzungsspezifikationen

Einführung: Ich glaube, dass jeder einige Dokumen...

Grundsätze und Nutzungsdetails für MySQL 8.0-Benutzer- und Rollenverwaltung

Dieser Artikel beschreibt die Benutzer- und Rolle...

So überwachen Sie Array-Änderungen in JavaScript

Vorwort Als ich zuvor „defineProperty“ vorgestell...

Installationsprozess von VMware vCenter 6.7 (grafisches Tutorial)

Hintergrund Ursprünglich wollte ich ein 6.7 Vcent...