操作及管理NFC Tag

2024-01-23 16:52 更新

本模塊主要用于操作及管理NFC Tag。

說明

本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

聲明技術(shù)

開發(fā)Tag讀寫相關(guān)應(yīng)用時(shí),需要在應(yīng)用的屬性配置文件中,聲明與NFC相關(guān)的屬性值,比如,在module.json5文件中,聲明下面屬性值:

  1. {
  2. "module": {
  3. // other declared attributes.
  4. "abilities": [
  5. {
  6. "skills": [
  7. {
  8. "actions": [
  9. // other declared actions,
  10. // add the nfc tag action
  11. "ohos.nfc.tag.action.TAG_FOUND"
  12. ]
  13. }
  14. ],
  15. "metadata": [
  16. {
  17. "name": "tag-tech",
  18. "value": "NfcA"
  19. },
  20. {
  21. "name": "tag-tech",
  22. "value": "IsoDep"
  23. },
  24. // add other technology if neccessary,
  25. // such as: NfcB/NfcF/NfcV/Ndef/MifareClassic/MifareUL/NdefFormatable
  26. ]
  27. }
  28. ],
  29. "requestPermissions": [
  30. "name": "ohos.permission.NFC_TAG",
  31. "reason": "tag",
  32. ]
  33. }
  34. }
注意
  1. 聲明"actions"字段的內(nèi)容填寫,必須是"ohos.nfc.tag.action.TAG_FOUND",不能更改。
  2. 聲明技術(shù)時(shí)"metadata"中的"name"字段的內(nèi)容填寫,必須是"tag-tech",不能更改。
  3. 聲明技術(shù)時(shí)"metadata"中的"value"字段的內(nèi)容填寫,必須是"NfcA/NfcB/NfcF/NfcV/IsoDep/Ndef/MifareClassic/MifareUL/NdefFormatable"中的一個(gè)或多個(gè)。填寫錯(cuò)誤會造成解析失敗。
  4. 聲明權(quán)限時(shí)"requestPermissions"中的"name"字段的內(nèi)容填寫,必須是"ohos.permission.NFC_TAG",不能更改。

導(dǎo)入模塊

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

tag.TagInfo

在對相關(guān)Tag類型卡片進(jìn)行讀寫之前,必須先獲取TagInfo相關(guān)屬性值,以確認(rèn)設(shè)備讀取到的Tag卡片支持哪些技術(shù)類型。這樣Tag應(yīng)用程序才能調(diào)用正確的接口和所讀取到的Tag卡片進(jìn)行通信。

  1. import tag from '@ohos.nfc.tag';
  2. onCreate(want, launchParam) {
  3. // add other code here...
  4. // want is initialized by nfc service, contains tag info for this found tag
  5. var tagInfo;
  6. try {
  7. tagInfo = tag.getTagInfo(want);
  8. } catch (error) {
  9. console.log("tag.getTagInfo catched error: " + error);
  10. }
  11. if (tagInfo == null || tagInfo == undefined) {
  12. console.log("no TagInfo to be created, ignore it.");
  13. return;
  14. }
  15. // get the supported technologies for this found tag.
  16. var isNfcATag = false;
  17. var isIsoDepTag = false;
  18. for (var i = 0; i < tagInfo.technology.length; i++) {
  19. if (tagInfo.technology[i] == tag.NFC_A) {
  20. isNfcATag = true;
  21. }
  22. if (tagInfo.technology[i] == tag.ISO_DEP) {
  23. isIsoDepTag = true;
  24. }
  25. // also check for technology: tag.NFC_B/NFC_F/NFC_V/NDEF/MIFARE_CLASSIC/MIFARE_ULTRALIGHT/NDEF_FORMATABLE
  26. }
  27. // use NfcA APIs to access the found tag.
  28. if (isNfcATag) {
  29. var nfcA;
  30. try {
  31. nfcA = tag.getNfcATag(taginfo);
  32. } catch (error) {
  33. console.log("tag.getNfcATag catched error: " + error);
  34. }
  35. // other code to read or write this found tag.
  36. }
  37. // use getIsoDep APIs to access the found tag.
  38. if (isIsoDepTag) {
  39. var isoDep;
  40. try {
  41. isoDep = tag.getIsoDep(taginfo);
  42. } catch (error) {
  43. console.log("tag.getIsoDep catched error: " + error);
  44. }
  45. // other code to read or write this found tag.
  46. }
  47. // use the same code to handle for "NfcA/NfcB/NfcF/NfcV/Ndef/MifareClassic/MifareUL/NdefFormatable".
  48. }

tag.getNfcATag

getNfcATag(tagInfo: TagInfo): NfcATag

獲取NFC A類型Tag對象,通過該對象可訪問NfcA技術(shù)類型的Tag。

說明

從 API version 7 開始支持,從 API version 9 開始廢棄,建議使用tag.getNfcA替代。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcATag

NFC A類型Tag對象。

tag.getNfcA9+

getNfcA(tagInfo: TagInfo): NfcATag

獲取NFC A類型Tag對象,通過該對象可訪問NfcA技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcATag

NFC A類型Tag對象。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getNfcBTag

getNfcBTag(tagInfo: TagInfo): NfcBTag

獲取NFC B類型Tag對象,通過該對象可訪問NfcB技術(shù)類型的Tag。

說明

從 API version 7 開始支持,從 API version 9 開始廢棄,建議使用tag.getNfcB替代。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcBTag

NFC B類型Tag對象。

tag.getNfcB9+

getNfcB(tagInfo: TagInfo): NfcBTag

獲取NFC B類型Tag對象,通過該對象可訪問NfcB技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcBTag

NFC B類型Tag對象。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getNfcFTag

getNfcFTag(tagInfo: TagInfo): NfcFTag

獲取NFC F類型Tag對象,通過該對象可訪問NfcF技術(shù)類型的Tag。

說明

從 API version 7 開始支持,從 API version 9 開始廢棄,建議使用tag.getNfcF替代。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcFTag

NFC F類型Tag對象。

tag.getNfcF9+

getNfcF(tagInfo: TagInfo): NfcFTag

獲取NFC F類型Tag對象,通過該對象可訪問NfcF技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcFTag

NFC F類型Tag對象。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getNfcVTag

getNfcVTag(tagInfo: TagInfo): NfcVTag

獲取NFC V類型Tag對象,通過該對象可訪問NfcV技術(shù)類型的Tag。

說明

從 API version 7 開始支持,從 API version 9 開始廢棄,建議使用tag.getNfcV替代。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcVTag

NFC V類型Tag對象。

tag.getNfcV9+

getNfcV(tagInfo: TagInfo): NfcVTag

獲取NFC V類型Tag對象,通過該對象可訪問NfcV技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NfcVTag

NFC V類型Tag對象。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getIsoDep9+

getIsoDep(tagInfo: TagInfo): IsoDepTag

獲取IsoDep類型Tag對象,通過該對象可訪問支持IsoDep技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

IsoDepTag

IsoDep類型Tag對象,通過該對象訪問IsoDep類型的相關(guān)接口。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getNdef9+

getNdef(tagInfo: TagInfo): NdefTag

獲取NDEF類型Tag對象,通過該對象可訪問支持NDEF技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

NdefTag

NDEF類型Tag對象,通過該對象訪問NDEF類型的相關(guān)接口。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getMifareClassic9+

getMifareClassic(tagInfo: TagInfo): MifareClassicTag

獲取MIFARE Classic類型Tag對象,通過該對象訪問支持MIFARE Classic技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

MifareClassicTag

MIFARE Classic類型Tag對象,通過該對象訪問MIFARE Classic類型的相關(guān)接口。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getMifareUltralight9+

getMifareUltralight(tagInfo: TagInfo): MifareUltralightTag

獲取MIFARE Ultralight類型Tag對象,通過該對象可訪問支持MIFARE Ultralight技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

taginfo

TagInfo

包含Tag技術(shù)類型和相關(guān)參數(shù),從tag.getTagInfo(want: Want)獲取。

返回值:

類型

說明

MifareUltralightTag

MIFARE Ultralight類型Tag對象,通過該對象訪問MIFARE Ultralight類型的相關(guān)接口。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getNdefFormatable9+

getNdefFormatable(tagInfo: TagInfo): NdefFormatableTag

獲取NDEF Formatable類型Tag對象,通過該對象可訪問支持NDEF Formatable技術(shù)類型的Tag。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

返回值:

類型

說明

NdefFormatableTag

NDEF Formatable類型Tag對象,通過該對象訪問NDEF Formatable類型的相關(guān)接口。

錯(cuò)誤碼:

以下錯(cuò)誤碼的詳細(xì)介紹請參見NFC錯(cuò)誤碼。

錯(cuò)誤碼ID

錯(cuò)誤信息

3100201

Tag running state is abnormal in service.

tag.getTagInfo9+

getTagInfo(want: Want): TagInfo

從Want中獲取TagInfo,Want是被NFC服務(wù)初始化,包含了TagInfo所需的屬性值。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

want

Want

分發(fā)Ability時(shí),在系統(tǒng)onCreate入口函數(shù)的參數(shù)中獲取。

返回值:

類型

說明

TagInfo

TagInfo對象,用于獲取不同技術(shù)類型的Tag對象。

tag.ndef.makeUriRecord9+

makeUriRecord(uri: string): NdefRecord;

根據(jù)輸入的URI,構(gòu)建NDEF標(biāo)簽的Record數(shù)據(jù)對象。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

uri

string

寫入到NDEF Record里面的數(shù)據(jù)內(nèi)容。

返回值:

類型

說明

NdefRecord

NDEF標(biāo)簽的Record,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. try {
  3. let uri = "https://gitee.com/openharmony"; // change it to be correct.
  4. let ndefRecord = tag.ndef.makeUriRecord(uri);
  5. if (ndefRecord != undefined) {
  6. console.log("ndefMessage makeUriRecord rtdType: " + ndefRecord.rtdType);
  7. console.log("ndefMessage makeUriRecord payload: " + ndefRecord.payload);
  8. } else {
  9. console.log("ndefMessage makeUriRecord ndefRecord: " + ndefRecord);
  10. }
  11. } catch (busiError) {
  12. console.log("ndefMessage makeUriRecord catched busiError: " + busiError);
  13. }

tag.ndef.makeTextRecord9+

makeTextRecord(text: string, locale: string): NdefRecord;

根據(jù)輸入的文本數(shù)據(jù)和編碼類型,構(gòu)建NDEF標(biāo)簽的Record。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

text

string

寫入到NDEF Record里面的文本數(shù)據(jù)內(nèi)容。

locale

string

文本數(shù)據(jù)內(nèi)容的編碼方式。

返回值:

類型

說明

NdefRecord

NDEF標(biāo)簽的Record,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. try {
  3. let text = "Hello World"; // change it to be correct.
  4. let locale = "en"; // change it to be correct.
  5. let ndefRecord = tag.ndef.makeTextRecord(text, locale);
  6. if (ndefRecord != undefined) {
  7. console.log("ndefMessage makeTextRecord rtdType: " + ndefRecord.rtdType);
  8. console.log("ndefMessage makeTextRecord payload: " + ndefRecord.payload);
  9. } else {
  10. console.log("ndefMessage makeTextRecord ndefRecord: " + ndefRecord);
  11. }
  12. } catch (busiError) {
  13. console.log("ndefMessage makeTextRecord catched busiError: " + busiError);
  14. }

tag.ndef.makeMimeRecord9+

makeMimeRecord(mimeType: string, mimeData: number[]): NdefRecord;

根據(jù)輸入的MIME數(shù)據(jù)和類型,構(gòu)建NDEF標(biāo)簽的Record。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

mimeType

string

符合RFC規(guī)則的MIME類型,比如"text/plain"或"image/jpeg"。

mimeData

number[]

MIME數(shù)據(jù)內(nèi)容,每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。

返回值:

類型

說明

NdefRecord

NDEF標(biāo)簽的Record,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. try {
  3. let mimeType = "text/plain"; // change it to be correct.
  4. let mimeData = [0x01, 0x02, 0x03, 0x04]; // change it to be correct.
  5. let ndefRecord = tag.ndef.makeMimeRecord(mimeType, mimeData);
  6. if (ndefRecord != undefined) {
  7. console.log("ndefMessage makeMimeRecord rtdType: " + ndefRecord.rtdType);
  8. console.log("ndefMessage makeMimeRecord payload: " + ndefRecord.payload);
  9. } else {
  10. console.log("ndefMessage makeMimeRecord ndefRecord: " + ndefRecord);
  11. }
  12. } catch (busiError) {
  13. console.log("ndefMessage makeMimeRecord catched busiError: " + busiError);
  14. }

tag.ndef.makeExternalRecord9+

makeExternalRecord(domainName: string, type: string, externalData: number[]): NdefRecord;

根據(jù)應(yīng)用程序特定的外部數(shù)據(jù),構(gòu)建NDEF標(biāo)簽的Record。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

domainName

string

外部數(shù)據(jù)發(fā)布組織的域名,一般是應(yīng)用程序的包名。

type

string

外部數(shù)據(jù)的指定類型。

externalData

number[]

外部數(shù)據(jù)內(nèi)容,每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。

返回值:

類型

說明

NdefRecord

NDEF標(biāo)簽的Record,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. try {
  3. let domainName = "ohos.nfc.application"; // change it to be correct.
  4. let type = "test"; // change it to be correct.
  5. let externalData = [0x01, 0x02, 0x03, 0x04]; // change it to be correct.
  6. let ndefRecord = tag.ndef.makeExternalRecord(domainName, type, externalData);
  7. if (ndefRecord != undefined) {
  8. console.log("ndefMessage makeExternalRecord rtdType: " + ndefRecord.rtdType);
  9. console.log("ndefMessage makeExternalRecord payload: " + ndefRecord.payload);
  10. } else {
  11. console.log("ndefMessage makeExternalRecord ndefRecord: " + ndefRecord);
  12. }
  13. } catch (busiError) {
  14. console.log("ndefMessage makeExternalRecord catched busiError: " + busiError);
  15. }

tag.ndef.messageToBytes9+

messageToBytes(ndefMessage: NdefMessage): number[];

把輸入的NDEF消息數(shù)據(jù)對象,轉(zhuǎn)換為字節(jié)格式的數(shù)據(jù)。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

ndefMessage

NdefMessage

NDEF消息數(shù)據(jù)對象。

返回值:

類型

說明

number[]

NDEF消息數(shù)據(jù)對象,所轉(zhuǎn)換成的字節(jié)格式的數(shù)據(jù)。每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. let rawData = [0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]; // MUST can be parsed as NDEF Record.
  3. let ndefMessage;
  4. try {
  5. ndefMessage = tag.ndef.createNdefMessage(rawData);
  6. console.log("ndef createNdefMessage, ndefMessage: " + ndefMessage);
  7. } catch (busiError) {
  8. console.log("ndef createNdefMessage busiError: " + busiError);
  9. }
  10. try {
  11. let rawData2 = tag.ndef.messageToBytes(ndefMessage);
  12. console.log("ndefMessage messageToBytes rawData2: " + rawData2);
  13. } catch (busiError) {
  14. console.log("ndefMessage messageToBytes catched busiError: " + busiError);
  15. }

tag.ndef.createNdefMessage9+

createNdefMessage(data: number[]): NdefMessage

使用原始字節(jié)數(shù)據(jù)創(chuàng)建NDEF標(biāo)簽的Message。該數(shù)據(jù)必須符合NDEF Record數(shù)據(jù)格式,如果不符合格式,則返回的NdeMessage數(shù)據(jù)對象,所包含的NDE Record列表會為空。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

data

number[]

原始字節(jié),每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。要求必須滿足NDEF Record的格式。

返回值:

類型

說明

NdefMessage

NDEF標(biāo)簽的Message,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. let rawData = [0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]; // MUST can be parsed as NDEF Record.
  3. let ndefMessage;
  4. try {
  5. ndefMessage = tag.ndef.createNdefMessage(rawData);
  6. console.log("ndef createNdefMessage, ndefMessage: " + ndefMessage);
  7. } catch (busiError) {
  8. console.log("ndef createNdefMessage busiError: " + busiError);
  9. }

tag.ndef.createNdefMessage9+

createNdefMessage(ndefRecords: NdefRecord[]): NdefMessage

使用NDEF Records列表,創(chuàng)建NDEF Message。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

參數(shù):

參數(shù)名

類型

必填

說明

ndefRecords

NdefRecord[]

NDEF標(biāo)簽的Record列表,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

返回值:

類型

說明

NdefMessage

NDEF標(biāo)簽的Message,詳見NDEF技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》。

示例:

  1. import tag from '@ohos.nfc.tag';
  2. let uriRecord = tag.ndef.makeUriRecord("https://gitee.com/openharmony");
  3. let textRecord = tag.ndef.makeTextRecord("Hello World", "en");
  4. let ndefRecords = [uriRecord, textRecord];
  5. let ndefMessage;
  6. try {
  7. ndefMessage = tag.ndef.createNdefMessage(ndefRecords);
  8. console.log("ndef createNdefMessage ndefMessage: " + ndefMessage);
  9. } catch (busiError) {
  10. console.log("ndef createNdefMessage busiError: " + busiError);
  11. }

TagInfo

NFC服務(wù)在讀取到標(biāo)簽時(shí)給出的對象,通過改對象屬性,應(yīng)用知道該標(biāo)簽支持哪些技術(shù)類型,并使用匹配的技術(shù)類型來調(diào)用相關(guān)接口。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

需要權(quán)限: ohos.permission.NFC_TAG

名稱

類型

可讀

可寫

說明

uid9+

number[]

標(biāo)簽的uid,每個(gè)number值是十六進(jìn)制表示,范圍是0x00~0xFF。

technology9+

number[]

支持的技術(shù)類型,每個(gè)number值表示所支持技術(shù)類型的常量值。

supportedProfiles

number[]

支持的技術(shù)類型,從API9開始不支持,使用tag.TagInfo#technology替代。

NdefRecord9+

NDEF標(biāo)簽Record屬性的定義,參考NDEF標(biāo)簽技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》的定義細(xì)節(jié)。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

類型

可讀

可寫

說明

tnf

number

NDEF Record的TNF(Type Name Field)。

rtdType

number[]

NDEF Record的RTD(Record Type Definition)類型值,每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。

id

number[]

NDEF Record的ID,每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。

payload

number[]

NDEF Record的PAYLOAD,每個(gè)number十六進(jìn)制表示,范圍是0x00~0xFF。

技術(shù)類型定義

NFC Tag有多種不同的技術(shù)類型,定義常量描述不同的技術(shù)類型。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

NFC_A

1

NFC-A (ISO 14443-3A)技術(shù)。

NFC_B

2

NFC-A (ISO 14443-3B)技術(shù)。

ISO_DEP

3

ISO-DEP (ISO 14443-4)技術(shù)。

NFC_F

4

NFC-F (JIS 6319-4)技術(shù)。

NFC_V

5

NFC-V (ISO 15693)技術(shù)。

NDEF

6

NDEF技術(shù)。

NDEF_FORMATABLE9+

7

可以格式化的NDEF技術(shù)。

MIFARE_CLASSIC

8

MIFARE Classic技術(shù)。

MIFARE_ULTRALIGHT

9

MIFARE Utralight技術(shù)。

TnfType9+

NDEF Record的TNF(Type Name Field)類型值,參考NDEF標(biāo)簽技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》的定義細(xì)節(jié)。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

TNF_EMPTY

0x0

Empty。

TNF_WELL_KNOWN

0x1

NFC Forum well-known type [NFC RTD]。

TNF_MEDIA

0x2

Media-type as defined in RFC 2046 [RFC 2046]。

TNF_ABSOLUTE_URI

0x3

Absolute URI as defined in RFC 3986 [RFC 3986]。

TNF_EXT_APP

0x4

NFC Forum external type [NFC RTD]。

TNF_UNKNOWN

0x5

Unknown。

TNF_UNCHANGED

0x6

Unchanged (see section 2.3.3)。

NDEF Record RTD類型定義

NDEF Record的RTD(Record Type Definition)類型值,參考NDEF標(biāo)簽技術(shù)規(guī)范《NFCForum-TS-NDEF_1.0》的定義細(xì)節(jié)。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

RTD_TEXT9+

[0x54]

文本類型的NDEF Record。

RTD_URI9+

[0x55]

URI類型的NDEF Record。

NfcForumType9+

NFC Forum標(biāo)準(zhǔn)里面Tag類型的定義。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

NFC_FORUM_TYPE_1

1

NFC論壇類型1。

NFC_FORUM_TYPE_2

2

NFC論壇類型2。

NFC_FORUM_TYPE_3

3

NFC論壇類型3。

NFC_FORUM_TYPE_4

4

NFC論壇類型4。

MIFARE_CLASSIC

101

MIFARE Classic類型。

MifareClassicType9+

MIFARE Classic標(biāo)簽類型的定義。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

TYPE_UNKNOWN

0

未知的MIFARE類型。

TYPE_CLASSIC

1

MIFARE Classic類型。

TYPE_PLUS

2

MIFARE Plus類型。

TYPE_PRO

3

MIFARE Pro類型。

MifareClassicSize9+

MIFARE Classic標(biāo)簽存儲大小的定義。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

MC_SIZE_MINI

320

每個(gè)標(biāo)簽5個(gè)扇區(qū),每個(gè)扇區(qū)4個(gè)塊。

MC_SIZE_1K

1024

每個(gè)標(biāo)簽16個(gè)扇區(qū),每個(gè)扇區(qū)4個(gè)塊。

MC_SIZE_2K

2048

每個(gè)標(biāo)簽32個(gè)扇區(qū),每個(gè)扇區(qū)4個(gè)塊。

MC_SIZE_4K

4096

每個(gè)標(biāo)簽40個(gè)扇區(qū),每個(gè)扇區(qū)4個(gè)塊。

MifareUltralightType9+

MIFARE Ultralight標(biāo)簽類型的定義。

系統(tǒng)能力: SystemCapability.Communication.NFC.Tag

名稱

說明

TYPE_UNKNOWN

0

未知的 MIFARE 類型。

TYPE_ULTRALIGHT

1

MIFARE Ultralight類型。

TYPE_ULTRALIGHT_C

2

MIFARE UltralightC 類型。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號