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

Setzen Sie den Eingang auf schreibgeschützt über deaktiviert und schreibgeschützt

Es gibt zwei Möglichkeiten, schreibgeschützte Eing...

W3C Tutorial (2): W3C Programme

Der W3C-Standardisierungsprozess ist in 7 verschi...

Eine kurze Analyse von MySQL - MVCC

Versionskette In den Tabellen der InnoDB-Engine g...

JavaScript implementiert den detaillierten Prozess der Stapelstruktur

Inhaltsverzeichnis 1. Die Stapelstruktur verstehe...

Implementierung von dynamischem REM für mobiles Layout

Dynamische REM 1. Lassen Sie uns zunächst die akt...

Beispielcode zur Implementierung der PC-Auflösungsanpassung in Vue

Inhaltsverzeichnis planen Abhängigkeiten installi...

Schritte zum Erstellen eines WEBSERVERS mit NODE.JS

Inhaltsverzeichnis Was ist nodejs Installieren Si...

10 HTML-Tabellen-bezogene Tags

Tatsächlich werden viele Leute sagen: „Ich habe ge...

Detaillierte Erklärung der Dreieckszeichnung und clevere Anwendungsbeispiele in CSS

führen Einige gängige Dreiecke auf Webseiten könn...

jQuery-Plugin zur Implementierung eines gestapelten Menüs

Jeden Tag ein jQuery-Plugin - gestapeltes Menü. Z...

So implementieren Sie den Vue-Mausrad-Scrolling-Umschalt-Routing-Effekt

Eine Root-Routing-Komponente (die Root-Routing-Ko...