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读取功能。配置方法参考论坛帖子。配置示例如下:
<?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 : '', //标签内容 (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及更高版本