Bạn đã từng nghe đến công nghệ NFC (Near-Field Communication) nhưng chưa biết cách sử dụng? Với khả năng kết nối nhanh chóng và an toàn, NFC đang ngày càng trở nên phổ biến trong các ứng dụng như thanh toán di động, chia sẻ dữ liệu, hay mở khóa thiết bị. Cùng xem hướng dẫn sử dụng NFC trên điện thoại của Coming trong bài viết sau!
Giới thiệu về NFC
Khái niệm NFC là gì?
NFC (Near-Field Communication) hay Kết nối trường gần là công nghệ giao tiếp không dây tầm ngắn, cho phép hai thiết bị điện tử giao tiếp với nhau khi được đặt gần, thường dưới 4 cm.
- Phân biệt NFC và RFID:
- NFC hoạt động trên tần số cố định 13,56 MHz, trong khi RFID có thể hoạt động trên nhiều tần số (125 KHz, 13,56 MHz, UHF).
- NFC được coi là một tập hợp con của RFID và kế thừa nhiều ưu điểm từ công nghệ này.
NFC hoạt động như thế nào?
- Khoảng cách ngắn: Hoạt động khi các thiết bị gần nhau, thường chạm vào nhau.
- Giao tiếp nhanh: Thiết lập kết nối nhanh chóng, không cần nhiều cấu hình.
- An toàn: Với phạm vi hoạt động hạn chế, NFC được xem là công nghệ bảo mật tốt.
Ứng dụng của NFC
NFC có nhiều ứng dụng trong đời sống:
- Thanh toán di động: Chạm điện thoại vào máy quét để thanh toán.
- Chia sẻ dữ liệu: Gửi nhanh liên hệ, hình ảnh, video, URL…
- Kết nối phụ kiện: Kết nối tai nghe Bluetooth, đồng hồ thông minh…
- Mở khóa: Một số thiết bị dùng NFC để mở khóa.
- Vé điện tử: Lưu trữ và kiểm tra vé tàu, xe.
Ưu điểm của sử dụng NFC trên điện thoại
- Dễ sử dụng: Chỉ cần chạm hai thiết bị vào nhau.
- Nhanh chóng: Kết nối tức thì.
- An toàn: Khoảng cách ngắn giúp hạn chế nguy cơ rò rỉ thông tin.
Nhược điểm của NFC
- Khoảng cách ngắn: Giới hạn phạm vi sử dụng.
- Hạn chế thiết bị: Không phải thiết bị nào cũng hỗ trợ NFC.
Hướng dẫn cài đặt và sử dụng NFC trên điện thoại
Hướng dẫn cài đặt môi trường sử dụng NFC
Chuẩn bị:
- Sử dụng thẻ NFC 13.56 MHz (ntag215).
Cài đặt thư viện (React Native):
codenpm i --save react-native-nfc-manager
yarn add react-native-nfc-manager
cd ios && pod install && cd ..
Cấu hình trên iOS:
- Thêm khả năng NFC:
- Mở dự án trên Xcode.
- Vào Targets > Signing & Capabilities > + Capability.
- Tìm kiếm và thêm Near Field Communication Tag Reading.
- Chỉnh sửa file
info.plist
:
xmlCopy code<key>NFCReaderUsageDescription</key>
<string>We need to use NFC</string>
- Thêm trên Apple Developer:
- Đăng nhập vào Apple Developer.
- Vào Certificates, Identifiers & Profiles.
- Tạo Identifiers, chọn NFC Tag Reading.
Cấu hình trên Android:
- Thêm quyền trong
AndroidManifest.xml
:
xmlCopy code<uses-permission android:name="android.permission.NFC" />
Lưu ý: Trên Android, không thể sử dụng NFC và camera đồng thời.
Ví dụ sử dụng NFC
Kích hoạt NFC:
javascriptCopy codeNfcManager.start();
Đăng ký sự kiện quét NFC (Android):
javascriptCopy codeuseEffect(() => {
if (Platform.OS === 'android') {
NfcManager.registerTagEvent()
.then(() => console.log('Register TAG success!'))
.catch(e => console.log('Register TAG error', e));
NfcManager.setEventListener(NfcEvents.StateChanged, async () => {});
NfcManager.setEventListener(NfcEvents.DiscoverTag, async (tag) => {
const code = await Ndef.text.decodePayload(tag?.ndefMessage[0]?.payload);
const dataDecode = JSON.parse(code);
console.log('Data decoded:', dataDecode);
});
}
return () => {
NfcManager.setEventListener(NfcEvents.DiscoverTag, null);
NfcManager.setEventListener(NfcEvents.StateChanged, null);
};
}, []);
Ghi nội dung vào thẻ NFC:
Lưu ý:
- Thẻ NFC NTAG215 có dung lượng khoảng 504 byte.
- Vị trí chip NFC:
- iPhone: gần camera.
- Android: gần camera hoặc dưới màn hình (tùy dòng máy).
Hàm ghi nội dung:
javascriptCopy codeasync function writeNdef() {
try {
await NfcManager.requestTechnology(NfcTech.Ndef);
const bytes = Ndef.encodeMessage([
Ndef.textRecord(`{"id":"${Math.floor(Math.random() * 10)}","title":"${inputNfc}"}`)
]);
if (bytes) {
await NfcManager.ndefHandler.writeNdefMessage(bytes);
console.log('Write success!');
}
} catch (error) {
console.warn('Error writing NFC:', error);
} finally {
NfcManager.cancelTechnologyRequest();
}
}
Đọc nội dung từ thẻ NFC:
javascriptCopy codeasync function readNdef() {
try {
await NfcManager.requestTechnology(NfcTech.Ndef);
const tagRead = await NfcManager.getTag();
if (tagRead) {
const code = Ndef.text.decodePayload(tagRead?.ndefMessage[0]?.payload);
const dataRead = JSON.parse(code);
console.log('Data read:', dataRead);
}
} catch (error) {
console.warn('Error reading NFC:', error);
} finally {
NfcManager.cancelTechnologyRequest();
}
}
Kết luận
Hy vọng hướng dẫn trên sẽ giúp bạn thực hành thành công việc sử dụng NFC trên điện thoại để scan thẻ NFC. Chúc bạn áp dụng hiệu quả công nghệ này vào các dự án của mình!