标准NFC-Tag TagSession

2024-01-23 17:13 更新

本模块是对NFC TagSession的使用说明。

说明

本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

  1. import tag from '@ohos.nfc.tag';

tagSession

tagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。

需要通过其子类来访问以下接口。在下面的示例中 统一用 getXXX()表示获取子类实例的方法。

具体使用时,请根据实际采用的Nfc tag技术,选择对应的方法,具体请参见nfcTag文档。

tagSession.getTagInfo

getTagInfo(): tag.TagInfo

获取该Tag被分发时,NFC服务所提供的Tag数据对象。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tag.getTagInfo替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
TagInfoNFC服务所提供的Tag数据对象。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let tagInfo = tag.getIsoDep(tagInfo).getTagInfo();
  5. console.log("tag tagInfo: " + tagInfo);

tagSession.connectTag

connectTag(): boolean;

和标签建立连接。在从标签读取数据或将数据写入标签之前,必须调用此方法。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.connect替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
boolean连接建立成功返回true,失败返回false。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let connectStatus = tag.getIsoDep(tagInfo).connectTag();
  5. console.log("connectStatus: " + connectStatus);

tagSession.connect9+

connect(): void;

和标签建立连接。在从标签读取数据或将数据写入标签之前,必须调用此方法。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. try {
  5. tag.getIsoDep(tagInfo).connect();
  6. console.log("tag connect success");
  7. } catch (busiError) {
  8. console.log("tag connect busiError: " + busiError);
  9. }

tagSession.reset()

reset(): void

重置与标签的连接。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.resetConnection替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. tag.getIsoDep(tagInfo).reset();

tagSession.resetConnection()9+

resetConnection(): void

重置与标签的连接。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. try {
  5. tag.getIsoDep(tagInfo).resetConnection();
  6. console.log("tag resetConnection success");
  7. } catch (busiError) {
  8. console.log("tag resetConnection busiError: " + busiError);
  9. }

tagSession.isTagConnected

isTagConnected(): boolean

检查是否已与标签建立连接。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.isConnected替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
boolean已建立连接返回 true,未建立连接返回false。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let isTagConnected = tag.getIsoDep(tagInfo).isTagConnected();
  5. console.log("isTagConnected: " + isTagConnected);

tagSession.isConnected9+

isConnected(): boolean

检查是否已与标签建立连接。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
boolean已建立连接返回 true,未建立连接返回false。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. try {
  5. var isConnected = tag.getIsoDep(tagInfo).isConnected();
  6. console.log("tag isConnected = " + isConnected);
  7. } catch (busiError) {
  8. console.log("tag isConnected busiError: " + busiError);
  9. }

tagSession.getMaxSendLength

getMaxSendLength(): number

查询可以发送到标签的最大数据长度。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.getMaxTransmitSize替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
number可以发送到标签的最大数据长度,非负数。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let maxSendLen = tag.getIsoDep(tagInfo).getMaxSendLength();
  5. console.log("tag maxSendLen: " + maxSendLen);

tagSession.getMaxTransmitSize9+

getMaxTransmitSize(): number

查询可以发送到标签的最大数据长度。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
number可以发送到标签的最大数据长度,非负数。

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. try {
  5. var maxTransmitSize = tag.getIsoDep(tagInfo).getMaxTransmitSize();
  6. console.log("tag maxTransmitSize = " + maxTransmitSize);
  7. } catch (busiError) {
  8. console.log("tag getMaxTransmitSize busiError: " + busiError);
  9. }

tagSession.getSendDataTimeout

getSendDataTimeout(): number

查询发送数据到Tag的等待超时时间,单位是毫秒。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.getTimeout替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
number发送数据到Tag的等待超时时间,单位是毫秒,非负数。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let sendDataTimeout = tag.getIsoDep(tagInfo).getSendDataTimeout();
  5. console.log("tag sendDataTimeout: " + sendDataTimeout);

tagSession.getTimeout9+

getTimeout(): number

查询发送数据到Tag的等待超时时间,单位是毫秒。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

返回值:

类型说明
number发送数据到Tag的等待超时时间,单位是毫秒,非负数。

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. try {
  5. var timeout = tag.getIsoDep(tagInfo).getTimeout();
  6. console.log("tag timeout = " + timeout);
  7. } catch (busiError) {
  8. console.log("tag getTimeout busiError: " + busiError);
  9. }

tagSession.setSendDataTimeout

setSendDataTimeout(timeout: number): boolean

查询发送数据到Tag的等待超时时间,单位是毫秒。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.setTimeout替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

参数:

参数名类型必填说明
timeoutnumber超时时间,单位毫秒,非负值。

返回值:

类型说明
boolean设置超时时间成功返回true,设置失败返回false。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let timeoutMs = 700; // change it to be correct.
  5. let setStatus = tag.getIsoDep(tagInfo).setSendDataTimeout(timeoutMs);
  6. console.log("tag setSendDataTimeout setStatus: " + setStatus);

tagSession.setTimeout9+

setTimeout(timeout: number): void

查询发送数据到Tag的等待超时时间,单位是毫秒。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

参数:

参数名类型必填说明
timeoutnumber超时时间,单位毫秒,非负值。

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. let timeoutMs = 700; // change it to be correct.
  5. try {
  6. tag.getIsoDep(tagInfo).setTimeout(timeoutMs);
  7. console.log("tag setTimeout success");
  8. } catch (busiError) {
  9. console.log("tag setTimeout busiError: " + busiError);
  10. }

tagSession.sendData

sendData(data: number[]): Promise<number[]>

发送指令到Tag上,使用Promise方式作为异步方法。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.transmit替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

参数:

参数名类型必填说明
datanumber[]要发送的指令。每个number十六进制表示,范围是0x00~0xFF。

返回值:

类型说明
Promise<number[]>对端Tag对指令的响应数据。每个number十六进制表示,范围是0x00~0xFF。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. // connect the tag at first if not connected.
  5. if (!tag.getIsoDep(tagInfo).isTagConnected()) {
  6. if (!tag.getIsoDep(tagInfo).connectTag()) {
  7. console.log("tagSession connectTag failed.");
  8. return;
  9. }
  10. }
  11. let cmdData = [0x01, 0x02, 0x03, 0x04]; // change the raw data to be correct.
  12. tag.getIsoDep(tagInfo).sendData(cmdData).then((response) => {
  13. console.log("tagSession sendData Promise response: " + response);
  14. }).catch((err)=> {
  15. console.log("tagSession sendData Promise err: " + err);
  16. });

tagSession.sendData

sendData(data: number[], callback: AsyncCallback<number[]>): void

发送指令到Tag上,使用AsyncCallback方式作为异步方法。

说明

从 API version 7 开始支持,从 API version 9 开始废弃,建议使用tagSession.transmit替代。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

参数:

参数名类型必填说明
datanumber[]要发送的指令。每个number十六进制表示,范围是0x00~0xFF。
callbackAsyncCallback<number[]>回调函数,返回响应数据。每个number十六进制表示,范围是0x00~0xFF。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. // connect the tag at first if not connected.
  5. if (!tag.getIsoDep(tagInfo).isTagConnected()) {
  6. if (!tag.getIsoDep(tagInfo).connectTag()) {
  7. console.log("tagSession connectTag failed.");
  8. return;
  9. }
  10. }
  11. let cmdData = [0x01, 0x02, 0x03, 0x04]; // change the raw data to be correct.
  12. tag.getIsoDep(tagInfo).sendData(cmdData, (err, response)=> {
  13. if (err) {
  14. console.log("tagSession sendData AsyncCallback err: " + err);
  15. } else {
  16. console.log("tagSession sendData AsyncCallback response: " + response);
  17. }
  18. });

tagSession.transmit9+

transmit(data: number[]): Promise<number[]>

发送指令到Tag上,使用Promise方式作为异步方法。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

参数:

参数名类型必填说明
datanumber[]要发送的指令。每个number十六进制表示,范围是0x00~0xFF。

返回值:

类型说明
Promise<number[]>对端Tag对指令的响应数据。每个number十六进制表示,范围是0x00~0xFF。

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. // connect the tag at first if not connected.
  5. try {
  6. if (!tag.getIsoDep(tagInfo).isConnected()) {
  7. tag.getIsoDep(tagInfo).connect();
  8. }
  9. } catch (busiError) {
  10. console.log("tag connect busiError: " + busiError);
  11. return;
  12. }
  13. let cmdData = [0x01, 0x02, 0x03, 0x04]; // change the raw data to be correct.
  14. try {
  15. tag.getIsoDep(tagInfo).transmit(cmdData).then((response) => {
  16. console.log("tagSession transmit Promise response: " + response);
  17. }).catch((err)=> {
  18. console.log("tagSession transmit Promise err: " + err);
  19. });
  20. } catch (busiError) {
  21. console.log("tag transmit busiError: " + busiError);
  22. return;
  23. }

tagSession.transmit9+

transmit(data: number[], callback: AsyncCallback<number[]>): void

发送指令到Tag上,使用AsyncCallback方式作为异步方法。

需要权限: ohos.permission.NFC_TAG

系统能力: SystemCapability.Communication.NFC.Tag

参数:

参数名类型必填说明
datanumber[]要发送的指令。每个number十六进制表示,范围是0x00~0xFF。
callbackAsyncCallback<number[]>回调函数,返回响应数据。每个number十六进制表示,范围是0x00~0xFF。

错误码:

以下错误码的详细介绍请参见NFC错误码

错误码ID错误信息
3100201Tag running state is abnormal in service.

示例:

  1. import tag from '@ohos.nfc.tag';
  2. // see 'tag.TagInfo' at 'js-apis-nfcTag.md', tagInfo is an Object given by nfc service when tag is dispatched.
  3. // the folowing getXXX, can be one of getIsoDep, getNdef, getMifareClassic, ...
  4. // connect the tag at first if not connected.
  5. try {
  6. if (!tag.getIsoDep(tagInfo).isConnected()) {
  7. tag.getIsoDep(tagInfo).connect();
  8. }
  9. } catch (busiError) {
  10. console.log("tag connect busiError: " + busiError);
  11. return;
  12. }
  13. let cmdData = [0x01, 0x02, 0x03, 0x04]; // change the raw data to be correct.
  14. try {
  15. tag.getIsoDep(tagInfo).transmit(cmdData, (err, response)=> {
  16. if (err) {
  17. console.log("tagSession transmit AsyncCallback err: " + err);
  18. } else {
  19. console.log("tagSession transmit AsyncCallback response: " + response);
  20. }
  21. });
  22. } catch (busiError) {
  23. console.log("tag transmit busiError: " + busiError);
  24. return;
  25. }
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号