nfc

来自于:开发者立即使用

概述

nfc 模块概述

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

iOS模式下配置相关

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

描述

2、创建 entitlements文件

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.developer.nfc.readersession.formats</key>
        <array>
            <string>NDEF</string>
        </array>
    </dict>
</plist>

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

描述

4、常见错误码。

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

5、format代码含义。

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

6、type代码含义。

代码 描述
T TEXT
U URI

Android模式下

描述

常见错误码。

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

模块接口

readingAvailable

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

readingAvailable(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.3及更高版本

addEventListener

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

addEventListener(callback(ret))

callback(ret)

ret:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.2及更高版本

removeEventListener

移除NFC数据监听

removeEventListener()

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

initPageConfig

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

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

params

isDebug:

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

backgroundColor:

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

title:

  • 类型:JSON 对象
  • 描述:顶部标题样式配置
  • 默认值:见内部字段
  • 内部字段:
    {
      text : '请读卡1',       //标题  默认值:请读卡
       color : '#000000',     //标题字体颜色  默认值:#FFFFFF
       background : '#551A8B',//标题栏背景色 默认值:#48C997
       layoutHeight : 45      //标题栏高度 默认值:45
    }
    

center:

  • 类型:JSON 对象
  • 描述:页面中间提示内容样式配置
  • 默认值:见内部字段
  • 内部字段:
    {
      logo : 'widget://res/nfc_read.png', //png,jpg,gif类型的图片logo文件路径 支持fs:// widget://   存在默认图片
       text : '122221', //文字说明  默认值:请将NFC标签或者贴纸靠近手机背面
       color : '#00EE00',   //文字说明字体颜色  默认值:#000000
    }
    

callback(ret,err)

ret:

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

err:

  • 类型:JSON 对象
  • 内部字段:
{
    errorCode: 1 ,
    errorMessage : '您的设备不支持NFC'
}

##示例代码

```js
var demo = api.require('nfc');
demo.initPageConfig({
    isDebug : true,    //开启时,不支持nfc的手机可以打开界面看UI效果
    backgroundColor : '#FF4040',     //页面背景色
    title : {
         text : '请读卡1',     //标题
         color : '#000000',   //标题字体颜色
         background : '#551A8B',      //标题栏背景色
         layoutHeight : 45            //标题栏高度
     },
     center : {
          logo : 'widget://res/nfc_read.png', //图片logo文件路径
          text : '请将NFC标签或者贴纸靠近手机背面11', //文字说明
          color : '#00EE00',   //文字说明字体颜色
      }
},function(ret){
     alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

writeText

写NFC标签文本数据

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

params

data:

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

callback(ret, err)

ret:

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

err:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

readText

读NFC标签文本数据

readText(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

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

可用性

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 对象
  • 内部字段:
{
    status: true,      //布尔型;true||false
}

err:

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

示例代码

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

可用性

iOS系统

可提供的1.0.3及更高版本

endSession

结束扫描

endSession(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

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

可用性

iOS系统

可提供的1.0.3及更高版本