nfc

来自于:开发者立即使用

readingAvailable addEventListener removeEventListener initPageConfig writeText readText startSession endSession

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

nfc 模块概述

nfc模块封装在安卓下对NFC下的NDEF文本数据读写和iOS下对NFC下的NDEF文本数据读取,(备注:iOS系统支持11以上,iphone7以上的机型)

iOS模式下配置相关

1、进入开发者中心设置AppID支持NFC Tag Reading,并且设置项目的Bundle Identifier跟新设置的AppID同步.

描述

2、创建 entitlements文件

APICloud 平台上的开发者,可通过 创建 entitlements 文件 告诉编译服务器开通苹果NFC读取功能。配置方法参考论坛帖子。配置示例如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>com.apple.developer.nfc.readersession.formats</key>
  6. <array>
  7. <string>TAG</string>
  8. <string>NDEF</string>
  9. </array>
  10. </dict>
  11. </plist>

3、在云编译处需要勾选”NFC读取”权限。

描述

4、常见错误码。

错误码错误描述
1不支持此功能
2安全问题
100标签连接丢失
101重连次数过多
102标签响应错误
200用户取消会话
201会话时间超时
202会话意外终止
203系统正忙,会话失败
204读取的第一个NDEF
300标签配置无效参数

5、format代码含义。

代码英文描述
0NFCTypeNameFormatEmpty空信息
1NFCTypeNameFormatNFCWellKnownNFCWellKnown
2NFCTypeNameFormatMediaRFC 2046 定义的媒体类型
3NFCTypeNameFormatAbsoluteURI统一使用资源标识标准
4NFCTypeNameFormatNFCExternal使用外部类型定义的值
5NFCTypeNameFormatUnknown未知
6NFCTypeNameFormatUnchanged该数据不是分块数据记录的第一条记录

6、type代码含义。

代码描述
TTEXT
UURI

Android模式下

描述

常见错误码。

错误码错误描述
-1未知错误
1您的设备不支持NFC
2请在系统设置中开启NFC
3取消NFC操作
4写入数据不能为空
5NFC Tag是只读的
6NFC Tag的空间不足
7该NFC标签不支持NDEF格式
8从标签读取数据Parcelable对象为空
9NFC数据不是NDEF文本格式数据

固件要求

Android:4.0及以上 iOS:11.0及以上

模块接口

readingAvailable

判断设备是否支持NFC(iOS请在初始化之前进行验证)

readingAvailable(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. msg : 'Your system version is too low'
  3. }

示例代码

  1. var demo = api.require('nfc');
  2. demo.readingAvailable(function(ret, err){
  3. alert(JSON.stringify(ret) + " " +JSON.stringify(err));
  4. });

可用性

iOS、Android系统

可提供的1.0.3及更高版本

addEventListener

识别结果监听(Android模式设置此参数可以达到整个App内拦截,不会弹出手机类其他应用)

addEventListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. result : '', //标签内容 (Android是此字符串格式)
  4. tagId : '1233123' //标签ID
  5. evenType : 'Cancel',//用户取消识别:Cancel (iOS有值)
  6. //错误:Error
  7. //识别完成:Ok
  8. code : 202,//(见iOS常见错误码。)
  9. result:{//标签内容 (iOS是此JSON格式)
  10. format : '',//载体的类型名称格式,由NDEF规范定义
  11. identifier : '',//标识,由NDEF规范定义
  12. type : '',//载体的类型,由NDEF规范定义
  13. payload : ''//载体中的未解析数据,由NDEF规范定义
  14. plaloadLength : 0,//长度
  15. encoding : '',//isParseContent为true返回 type = T 有效
  16. language : '',//isParseContent为true返回type = T 有效
  17. payloadArr : '',//isParseContent为true返回
  18. data : '',//解析结果
  19. olddata : '',//isParseContent为true返回
  20. }
  21. }

示例代码

  1. var demo = api.require('nfc');
  2. demo.addEventListener(function(ret, err){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS、Android系统

可提供的1.0.2及更高版本

removeEventListener

移除NFC数据监听

removeEventListener()

示例代码

  1. var demo = api.require('nfc');
  2. demo.removeEventListener();

可用性

iOS、Android系统

可提供的1.0.0及更高版本

initPageConfig

配置读写标签界面UI元素(不执行本接口则选用模块默认UI布局方案)

initPageConfig({params}, callback(ret,err))

params

isDebug:

  • 类型:布尔型
  • 描述:开启调试模式时,不支持nfc的手机可以打开界面看UI效果。
  • 默认值:false(不开启)

backgroundColor:

  • 类型:字符串
  • 描述:页面背景色
  • 默认值:#f5f5f5

title:

  • 类型:JSON 对象
  • 描述:顶部标题样式配置
  • 默认值:见内部字段
  • 内部字段:

    1. {
    2. text : '请读卡1', //标题 默认值:请读卡
    3. color : '#000000', //标题字体颜色 默认值:#FFFFFF
    4. background : '#551A8B',//标题栏背景色 默认值:#48C997
    5. layoutHeight : 45 //标题栏高度 默认值:45
    6. }

center:

  • 类型:JSON 对象
  • 描述:页面中间提示内容样式配置
  • 默认值:见内部字段
  • 内部字段:

    1. {
    2. logo : 'widget://res/nfc_read.png', //png,jpg,gif类型的图片logo文件路径 支持fs:// widget:// 存在默认图片
    3. text : '122221', //文字说明 默认值:请将NFC标签或者贴纸靠近手机背面
    4. color : '#00EE00', //文字说明字体颜色 默认值:#000000
    5. }

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true|false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: 1 ,
  3. errorMessage : '您的设备不支持NFC'
  4. }
  5. ##示例代码
  6. ```js
  7. var demo = api.require('nfc');
  8. demo.initPageConfig({
  9. isDebug : true, //开启时,不支持nfc的手机可以打开界面看UI效果
  10. backgroundColor : '#FF4040', //页面背景色
  11. title : {
  12. text : '请读卡1', //标题
  13. color : '#000000', //标题字体颜色
  14. background : '#551A8B', //标题栏背景色
  15. layoutHeight : 45 //标题栏高度
  16. },
  17. center : {
  18. logo : 'widget://res/nfc_read.png', //图片logo文件路径
  19. text : '请将NFC标签或者贴纸靠近手机背面11', //文字说明
  20. color : '#00EE00', //文字说明字体颜色
  21. }
  22. },function(ret){
  23. alert(JSON.stringify(ret));
  24. });

可用性

Android系统

可提供的1.0.0及更高版本

writeText

写NFC标签文本数据

writeText({params}, callback(ret, err))

params

data:

  • 类型:字符串
  • 描述:(必填项)要写入NFC的字符串内容。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. result : '写入成功' //仅status: true 有值
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: 3 ,
  3. errorMessage : '取消NFC操作'
  4. }

示例代码

  1. var demo = api.require('nfc');
  2. demo.writeText({
  3. data : '我是测试数据12345678fffgs'
  4. },function(ret, err){
  5. alert(JSON.stringify(ret) + " " +JSON.stringify(err));
  6. });

可用性

Android系统

可提供的1.0.0及更高版本

readText

读NFC标签文本数据

readText(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. result : '', //标签内容
  4. tagId : '1233123' //标签ID
  5. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: 3 ,
  3. errorMessage : '取消NFC操作'
  4. }

示例代码

  1. var demo = api.require('nfc');
  2. demo.readText(function(ret, err){
  3. alert(JSON.stringify(ret) + " " +JSON.stringify(err));
  4. });

可用性

Android系统

可提供的1.0.0及更高版本

startSession

开始扫描

startSession({params}, callback(ret, err))

params

alertMessage:

  • 类型:字符串
  • 描述:(可选项)识别时提示信息内容。

isOnlyFirst:

  • 类型:布尔型
  • 描述:(可选项)是否仅解析一次 (单次:true 多次:false)[设置为true时,请参考监听返回错误代码204对逻辑进行处理]。
  • 默认值:true

isParseContent:

  • 类型:布尔型
  • 描述:(可选项)是否自动解析结果 (解析:true 不解析:false)。
  • 默认值:false

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. msg : 'Your system version is too low'
  3. }

示例代码

  1. var demo = api.require('nfc');
  2. demo.startSession({
  3. alertMessage : '你为什么要nfc识别?',
  4. isOnlyFirst : true,
  5. isParseContent : true
  6. },function(ret, err){
  7. alert(JSON.stringify(ret)+" "+JSON.stringify(err));
  8. });

可用性

iOS系统

可提供的1.0.3及更高版本

endSession

结束扫描

endSession(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. msg : 'Your system version is too low'
  3. }

示例代码

  1. var demo = api.require('nfc');
  2. demo.endSession(function(ret, err){
  3. alert(JSON.stringify(ret) + " " +JSON.stringify(err));
  4. });

可用性

iOS系统

可提供的1.0.3及更高版本