nfc

论坛示例

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

概述

nfc 插件概述

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

iOS模式下配置相关

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

描述

2、创建 entitlements文件

YonBuilder移动开发 平台上的开发者,可通过 创建 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>TAG</string>
                <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文本格式数据

固件要求

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

插件接口

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 : '',       //标签文本内容数据 
    resultHex : '',    //标签16进制数据
    tagId : '1233123'  //标签ID
    resultJson:{//标签内容 (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 : '',//解析结果
    }		
}

示例代码

var demo = api.require('nfc');
demo.addEventListener(function(ret, err){
    api.alert({msg: 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效果(Android有效)。
  • 默认值:false(不开启)

backgroundColor:

  • 类型:字符串
  • 描述:页面背景色(Android有效)
  • 默认值:#f5f5f5

title:

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

center:

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

alertMessages:

  • 类型:JSON 对象
  • 描述:iOS提示信息多语言配置(iOS有效)
  • 默认值:见内部字段
  • 内部字段:
{
    tips0 : '准备扫描,请将卡片贴近手机', 
    tips1 : '读取成功', 
    tips2 : '写入失败', 
    tips3 : '存在多个标签', 
    tips4 : '连接NFC标签失败', 
    tips5 : '查询NFC标签状态失败', 
    tips6 : '标签不是NDEF格式', 
    tips7 : '读取NFC标签失败', 
    tips8 : 'NFC标签为空', 
    tips9 : '写入成功', 
}

callback(ret,err)

ret:

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

err:

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

示例代码

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){
     api.alert({msg: JSON.stringify(ret)});
});

可用性

Android系统

可提供的1.0.0及更高版本

writeText

写NFC标签文本或者16进制数据

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

params

isOnlyFirst:

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

type:

  • 类型:字符串
  • 描述:(必填项)写入数据类型(text,byte)。
  • 默认值:text

mimeType:

  • 类型:字符串
  • 描述:(必填项)mimeType(byte时有效)。
  • 默认值:app/bytes

data:

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

isTag:

  • 类型:布尔型
  • 描述:(可选项)是否是ISO14443,ISO15693,ISO18092类型卡数据写入(仅iOS有效)
  • 默认值:false

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));
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

readText

读NFC标签文本数据

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

params

isOnlyFirst:

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

isParseContent:

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

isTag:

  • 类型:布尔型
  • 描述:(可选项)是否是ISO14443,ISO15693,ISO18092类型卡读取(仅iOS有效)
  • 默认值:false

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔型;true||false
    result : '',       //标签内容 
    resultHex : '',    //16进制内容
    tagId : '1233123',  //标签ID
    resultJson:{//标签内容 (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 : '',//解析结果
    }		
}

err:

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

示例代码

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

可用性

iOS、Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/12/2