# Swift Package Manager

![](https://pub.dev/static/hash-4ut0obnn/img/pub-dev-logo.svg align="left")

เข้าสู่ระบบ

ช่วย

# flutter\_nfc\_kit 3.6.2

เผยแพร่[เมื่อ 28 วันที่แล้ว](https://pub.dev/packages/flutter_nfc_kit) •

# ชุด NFC Flutter

[![เวอร์ชันผับ](https://img.shields.io/pub/v/flutter_nfc_kit align="left")](https://pub.dev/packages/flutter_nfc_kit)

ปลั๊กอินอีกตัวหนึ่งที่ให้ฟังก์ชัน NFC บน Android, iOS และเว็บเบราว์เซอร์ (ผ่าน WebUSB ดูรายละเอียดด้านล่าง)

ปลั๊กอินนี้มีฟังก์ชันการทำงานดังต่อไปนี้:

* อ่านข้อมูลเมตาและอ่านและเขียนระเบียน NDEF ของแท็ก/การ์ดที่สอดคล้องกับ:
    
    * มาตรฐาน ISO 14443 ประเภท A และประเภท B (NFC-A / NFC-B / MIFARE Classic / MIFARE Plus / MIFARE Ultralight / MIFARE DESFire)
        
    * ISO 18092 (NFC-F / FeliCa)
        
    * ISO 15693 (NFC-V)
        
* อ่าน/เขียนข้อมูลระดับบล็อก/หน้า/เซกเตอร์ของแท็กที่สอดคล้องกับ:
    
    * MIFARE Classic / Ultralight (สำหรับ Android เท่านั้น, บล็อกการอ่านและเขียน MIFARE Classic สำหรับ iOS)
        
    * ISO 15693 (สำหรับ iOS เท่านั้น)
        
* รับส่งคำสั่งดิบด้วยแท็ก/การ์ดที่ตรงตามข้อกำหนดดังต่อไปนี้:
    
    * สมาร์ทการ์ด ISO 7816 (เลเยอร์ 4 ใน APDU)
        
    * เทคโนโลยีอื่นๆ ที่อุปกรณ์รองรับ (เลเยอร์ 3 ในคำสั่งดิบ โปรดดูเอกสารประกอบสำหรับความสามารถในการรองรับเฉพาะแพลตฟอร์ม)
        

โปรดทราบว่าเนื่องจากข้อจำกัดของ API การดำเนินการบางอย่างอาจไม่ได้รับการสนับสนุนในทุกแพลตฟอร์ม **คุณสามารถส่ง Pull Request (PR) เพื่อเพิ่มการสนับสนุนสำหรับการดำเนินการเฉพาะมาตรฐานใดๆ ก็ได้**

ไลบรารีนี้ใช้[ndef](https://pub.dev/packages/ndef)สำหรับการเข้ารหัสและถอดรหัสระเบียน NDEF

## การมีส่วนร่วม

โปรดดูข้อมูลเพิ่มเติม ได้ในไฟล์ [CONTRIBUTING.md](https://github.com/nfcim/flutter_nfc_kit/blob/develop/CONTRIBUTING.md)

## การตั้งค่า

### แอนดรอยด์

เรามีข้อกำหนดเวอร์ชันขั้นต่ำต่อไปนี้สำหรับปลั๊กอิน Android:

* Java 17
    
* กราเดิล 8.9
    
* Android SDK 24 (คุณต้องตั้งค่าที่เกี่ยวข้อง`jvmTarget`ในแอปของคุณ`build.gradle`)
    
* ปลั๊กอิน Android Gradle เวอร์ชัน 8.7
    

ในการใช้งานปลั๊กอินนี้บน Android คุณต้องดำเนินการดังต่อไปนี้ด้วย:

* เพิ่ม[android.permission.NFC](https://developer.android.com/reference/android/Manifest.permission.html#NFC)ลงใน`AndroidManifest.xml`ไฟล์ .NET ของคุณ
    

### แอป iOS

ปลั๊กอินนี้รองรับ Swift Package Manager แล้ว และต้องใช้ iOS 13 ขึ้นไป

* เพิ่ม[สิทธิ์การใช้งานรูปแบบเซสชันเครื่องอ่านแท็ก Near Field Communication (NFC)](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_nfc_readersession_formats)ลงในสิทธิ์การใช้งานของคุณ
    
* เพิ่ม[NFCReaderUsageDescription](https://developer.apple.com/documentation/bundleresources/information_property_list/nfcreaderusagedescription)ลงในไฟล์`Info.plist`.
    
* เพิ่ม[com.apple.developer.nfc.readersession.felica.systemcodes](https://developer.apple.com/documentation/bundleresources/information_property_list/systemcodes)และ[com.apple.developer.nfc.readersession.iso7816.select-identifiers](https://developer.apple.com/documentation/bundleresources/information_property_list/select-identifiers)ลงในไฟล์การกำหนดค่า NFC ของคุณ`Info.plist`ตามความจำเป็น คำเตือน: สำหรับ iOS 14.5 และเวอร์ชันก่อนหน้า คุณ**ต้อง**เพิ่มไฟล์เหล่านี้ก่อนเรียกใช้งาน`poll`หรือ`readIso18092`เปิด`readIso15693`ใช้งาน มิฉะนั้น NFC ของคุณ**จะใช้งานไม่ได้เลยจนกว่าจะรีบูตเครื่อง**เนื่องจากบั๊ก[ของ CoreNFC](https://github.com/nfcim/flutter_nfc_kit/issues/23)
    
* เปิด Runner.xcworkspace ด้วย Xcode แล้วไปที่การตั้งค่าโปรเจ็กต์ จากนั้นเลือกแท็บ*Signing & Capabilities*
    
* เลือก Runner ในเป้าหมายที่แถบด้านข้างซ้าย จากนั้นกด "+ ความสามารถ" ที่มุมบนซ้าย และเลือก*Near Field Communication Tag Reading*
    

### เว็บ

ปลั๊กอินเวอร์ชันเว็บนี้**ไม่ได้รองรับ NFC**ในเบราว์เซอร์โดยตรง แต่ใช้[โปรโตคอล WebUSB](https://github.com/nfcim/flutter_nfc_kit/blob/master/WebUSB.md) เฉพาะ เพื่อให้โปรแกรม Flutter สามารถสื่อสารกับอุปกรณ์แบบสองอินเทอร์เฟซ (NFC/USB) ได้อย่างเป็นอิสระจากแพลตฟอร์ม

โปรดทำความเข้าใจข้อความข้างต้นและขั้นตอนการใช้งานก่อนใช้ปลั๊กอินนี้

## การใช้งาน

เราได้จัดเตรียมตัว[อย่างโค้ดอย่างง่าย](https://github.com/nfcim/flutter_nfc_kit/blob/develop/example/example.md)และ[แอปพลิเคชันตัวอย่าง](https://github.com/nfcim/flutter_nfc_kit/blob/develop/example/lib) ไว้ให้ แล้ว

โปรดดู[เอกสารประกอบ](https://pub.dev/documentation/flutter_nfc_kit/)สำหรับข้อมูลเพิ่มเติม

### รหัสข้อผิดพลาด

เราใช้รหัสข้อผิดพลาดที่มีความหมายคล้ายกับรหัสสถานะ HTTP นอกจากนี้ ระบบจะแสดงคำอธิบายโดยย่อและสาเหตุของข้อผิดพลาดในรูปแบบสตริง (ถ้ามี) เมื่อเกิดข้อผิดพลาดขึ้น

### โหมดการทำงาน

เรามีโหมดการทำงานสองโหมด ได้แก่ การตรวจสอบเป็นระยะ (ค่าเริ่มต้น) และการสตรีมเหตุการณ์ ทั้งสองโหมดสามารถให้ผลลัพธ์เดียวกัน`NFCTag`ได้ โปรดดู[ตัวอย่าง](https://github.com/nfcim/flutter_nfc_kit/blob/develop/example/example.md)เพื่อดูรายละเอียดเพิ่มเติม

### การเพิ่มประสิทธิภาพการทำงาน (Android)

สำหรับแอปพลิเคชัน Android คุณสามารถเพิ่มประสิทธิภาพการตรวจจับแท็ก NFC ได้โดยใช้`androidReaderModeFlags`พารามิเตอร์:

```dart
// Skip automatic NDEF discovery for ~500ms faster detection
// and disable platform sounds for custom feedback
const flags = 0x80 | 0x100; // FLAG_READER_SKIP_NDEF_CHECK | FLAG_READER_NO_PLATFORM_SOUNDS

final tag = await FlutterNfcKit.poll(
  androidReaderModeFlags: flags,
);
```

ธงทั่วไปจาก[`NfcAdapter`](https://developer.android.com/reference/android/nfc/NfcAdapter#enableReaderMode\(android.app.Activity,%20android.nfc.NfcAdapter.ReaderCallback,%20int,%20android.os.Bundle\)):

* `0x80`\- `FLAG_READER_SKIP_NDEF_CHECK`: ข้ามการค้นหา NDEF อัตโนมัติ ช่วยเพิ่มความเร็วในการตรวจจับได้ประมาณ 500 มิลลิวินาที
    
* `0x100`\- `FLAG_READER_NO_PLATFORM_SOUNDS`: ปิดเสียงบี๊บ/การสั่นของระบบเพื่อปรับแต่งเสียง/การตอบสนองแบบสัมผัส
    

ธงเหล่านี้มีประโยชน์อย่างยิ่งสำหรับแอปพลิเคชันที่:

* ต้องการระบบตรวจจับแท็กที่รวดเร็ว (เช่น ระบบควบคุมการเข้าออก การชำระเงินด่วน)
    
* ใช้เสียงตอบรับจากผู้ใช้แบบกำหนดเองแทนเสียงระบบ
    
* ใช้ตรรกะการอ่าน NDEF แบบกำหนดเองแทนการค้นหาอัตโนมัติ
