当前位置: 首页 > news >正文

NFC标签读写开发指南

文章目录

    • 一、简介
    • 二、场景介绍
    • 三、接口说明
    • 四、开发步骤

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

一、简介

近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行,通信距离一般在10厘米距离内。电子设备可以通过NFC通信技术和NFC标签通信,从标签中读取数据,或写入数据到标签。

NFC标签可能会支持一种或多种通信技术,具体技术如下:

  • NfcA (也称为 ISO 14443-3A)
  • NfcB (也称为 ISO 14443-3B)
  • NfcF (也称为 JIS 6319-4)
  • NfcV (也称为 ISO 15693)
  • IsoDep
  • NDEF
  • MifareClassic
  • MifareUltralight

在这里插入图片描述

二、场景介绍

电子设备通过NFC天线位置触碰NFC标签卡片,完成NFC标签卡片的读取或写入。从使用场景上,可以分成NFC标签前台读写,和NFC标签后台读写。

  • NFC标签前台读写

前台读写是指在触碰NFC标签之前,用户先在电子设备上打开特定的应用程序,用户明确想使用所打开的应用程序和NFC标签进行读写操作。用户打开应用程序在前台,并且进入应用的刷卡页面之后,电子设备触碰NFC标签,只会把读取到的卡片分发给前台应用。

  • NFC标签后台读写

后台读写是指不打开特定的NFC标签应用程序,电子设备触碰发现NFC标签后,根据NFC标签的技术类型,分发给能够处理的应用程序。如果能匹配到多个应用程序,则弹出应用选择器列举出应用列表给用户手动选择。用户选择指定的应用后,自动跳转到应用程序的NFC标签读写卡页面。

  • 标签读写约束条件

不管是前台读写,还是后台读写,电子设备能够发现NFC标签的前提条件是设备必须是亮屏和解锁状态。

在这里插入图片描述

三、接口说明

NFC标签读写完整的JS API说明以及实例代码请参考:NFC标签接口。

获取不同技术类型标签对象的接口说明如下表,根据不同技术的标签对象来执行NFC标签的读写。

接口名 功能描述
getNfcA(tagInfo: TagInfo): NfcATag 获取NfcA技术类型的标签对象。
getNfcB(tagInfo: TagInfo): NfcBTag 获取NfcB技术类型的标签对象。
getNfcF(tagInfo: TagInfo): NfcFTag 获取NfcF技术类型的标签对象。
getNfcV(tagInfo: TagInfo): NfcVTag 获取NfcV技术类型的标签对象。
getIsoDep(tagInfo: TagInfo): IsoDepTag 获取IsoDep技术类型的标签对象。
getNdef(tagInfo: TagInfo): NdefTag 获取NDEF技术类型的标签对象。
getMifareClassic(tagInfo: TagInfo): MifareClassicTag 获取MifareClassic技术类型的标签对象。
getMifareUltralight(tagInfo: TagInfo): MifareUltralightTag 获取MifareUltralight技术类型的标签对象。

在这里插入图片描述

四、开发步骤

前台读取标签

  1. 在module.json5文件中声明NFC标签读取的权限,以及声明NFC标签特定的action。
  2. import需要的tag模块和其他相关的模块。
  3. 判断设备是否支持NFC能力。
  4. 调用tag模块中前台优先的接口,使能前台应用程序优先处理所发现的NFC标签功能。
  5. 获取特定技术类型的NFC标签对象。
  6. 执行读写接口完成标签数据的读取或写入数据到标签。
  7. 退出应用程序NFC标签页面时,调用tag模块退出前台优先功能。
    "abilities": [
      {
   
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
   
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home",

              // Add the nfc tag action to filter out for this application.
              "ohos.nfc.tag.action.TAG_FOUND"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
   
        // Add the permission for nfc tag operations.
        "name": "ohos.permission.NFC_TAG",
        "reason": "$string:app_name",
      }
    ]
import {
    tag } from '@kit.ConnectivityKit';
import {
    BusinessError } from '@kit.BasicServicesKit';
import {
    hilog } from '@kit.PerformanceAnalysisKit';
import {
    AbilityConstant, UIAbility, Want, bundleManager } from '@kit.AbilityKit';

let nfcTagElementName: bundleManager.ElementName;
let foregroundRegister: boolean;

async function readerModeCb(error : BusinessError, tagInfo : tag.TagInfo) {
   
  if (!error) {
   
    // 获取特定技术类型的NFC标签对象
    if (tagInfo == null || tagInfo == undefined) {
   
      hilog.error(0x0000, 'testTag', 'readerModeCb tagInfo is invalid');
      return;
    }
    if (tagInfo.uid == null || tagInfo.uid == undefined) {
   
      hilog.error(0x0000, 'testTag', 'readerModeCb uid is invalid');
      return;
    }
    if (tagInfo.technology == null || tagInfo.technology == undefined || tagInfo.technology.length == 0) {
   
      hilog.error(0x0000, 'testTag', 'readerModeCb technology is

相关文章:

  • 《反脆弱》:从不确定性中获益的智慧✨
  • DHCP配置(二)— 接口模式
  • 【神经网络】python实现神经网络(二)——正向推理的模拟演练
  • 【Qt】成员函数指针
  • 【机器学习chp12】半监督学习(自我训练+协同训练多视角学习+生成模型+半监督SVM+基于图的半监督算法+半监督聚类)
  • ngx_openssl_module
  • 97.在 Vue 3 中使用 OpenLayers 根据两行根数 (TLE) 计算并显示卫星轨迹(EPSG:3857)
  • 特辣的海藻!9
  • 数据库基本建表操作
  • 介绍一下Qt 中的QSizePolicy 布局策略
  • 内网激活JRebel插件(无网络环境)
  • Cannot resolve symbol ‘view‘ Androidstudio报错解决办法
  • golang从入门到做牛马:第九篇-Go语言条件语句与循环语句:掌控程序的“指挥棒”
  • Zabbix监控进程报警(Zabbix Monitoring Process Alarm)
  • EG8200Mini导轨版
  • Android 11 DAC和MAC
  • LabVIEW伺服阀高频振动测试
  • babeltrace的使用
  • 解锁Android BroadcastReceiver:从原理到实战的深度剖析
  • uni-app开发的App和H5嵌套封装的App,以及原生App有什么区别
  • 网站建设作业指导书/seo网站排名优化服务