更新记录
1.0.0(2021-04-09)
用于iOS NFC数据交互,支持 1.NDEF标签读取 2.NFCISO15693Tag、NFCMiFareTag标签数据收发
平台兼容性
Android | iOS |
---|---|
× | 适用版本区间:11 - 15 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
测试环境
HBuilder X 3.1.6 基座SDK版本1.9.9.80552
引用方式
var nfcHelper = uni.requireNativePlugin("GLLNFCUniPlugin-Helper")
API
iOS 11 NFCNDEFReaderSession
- nfcNDEFReaderAvaliable()
/*!
* @method 同步判断是否支持NFCNDEFReaderSession
*/
// 示例
var ret = nfcHelper.nfcNDEFReaderAvaliable()
var tipText = null
if(ret) {
tipText = "支持NFC读取"
}else {
tipText = "不支持NFC读取"
}
console.log(tipText)
- nfcNDEFReaderAvaliableCallback(callback)
/*!
* @method 异步判断是否支持NFCNDEFReaderSession
* @param callback 回调方法,回传参数给 js端。格式为NSDictionary其中包含
* resultCode:是否支持
* resultMsg:详细信息
*/
// 示例
// 调用异步方法
nfcHelper.nfcNDEFReaderAvaliableCallback((ret) => {
var tipText = null
if(ret) {
tipText = "支持NFC读取"
}else {
tipText = "不支持NFC读取"
}
console.log(tipText)
})
- invalidateNDEFReaderSession()
/*!
* @method 关闭NFCNDEFReaderSession标签扫描功能
*/
// 示例
nfcHelper.invalidateNDEFReaderSession()
- beginNDEFReaderSessionWithParams(option, callback)
/*!
* @method 开启NFCNDEFReaderSession标签扫描功能
* @param params js 端调用方法时传递的参数。格式如下
* invalidateAfterFirstRead:读完一个NDEF数据后是否继续读取,默认NO
* alertMessage:扫描标签时弹窗下显示的提示内容,默认不显示
* @param callback 回调方法,回传参数给 js端。格式为NSDictionary其中包含
* resultCode:状态码,成功时为9000
* resultMsg:状态码描述
* payloads:读取的NDEF数据,NSDictionary格式,其中包含以下字段
* typeName:标签类型名称,字符串格式。可能为Empty、NFCWellKnown、Media、AbsoluteURI、NFCExternal、Unknown、Unchanged、空
* payload:标签数据,NSData数据格式
* type:标签类型,NSData数据格式
* indentifier:标签标识,NSData数据格式
*
* @note 开启一个session,并且同时只能开启一个
* @note session最多扫存活60s,超时必须重启新session
* @note App完全在前台模式,切入后台失效
*/
// 示例
// 调用异步方法
nfcHelper.beginNDEFReaderSessionWithParams({
'invalidateAfterFirstRead': true,
'alertMessage': '靠近NFC标签'
},
(ret) => {
nfcHelper.invalidateNDEFReaderSession()
setTimeout(() =>{
uni.showToast({
title:'异步方法 ' + JSON.stringify(ret),
icon: "none"
})
}, 2.0);
})
iOS 13 NFCTagReaderSession
- nfcTagReaderAvaliable()
/*!
* @method 同步判断是否支持NFCTagReaderSession
*/
// 示例
var ret = nfcHelper.nfcTagReaderAvaliable()
var tipText = null
if(ret) {
tipText = "支持NFC读取"
}else {
tipText = "不支持NFC读取"
}
console.log(tipText)
- nfcTagReaderAvaliableCallback(callback)
/*!
* @method 异步判断是否支持NFCTagReaderSession
* @param callback 回调方法,回传参数给 js端。格式为NSDictionary其中包含
* resultCode:是否支持
* resultMsg:详细信息
*/
// 示例
nfcHelper.nfcTagReaderAvaliableCallback((ret) => {
var tipText = null
if(ret) {
tipText = "支持NFC读取"
}else {
tipText = "不支持NFC读取"
}
console.log(tipText)
})
- beginTagReaderSessionAndConnectTagWithParams(option, callback)
/*!
* @method 开启NFCTagReaderSession标签扫描功能并建立连接
* @param params js 端调用方法时传递的参数。格式为NSDictionary其中
* alertMessage:扫描标签时弹窗下显示的提示内容,默认不显示
* @param callback 回调方法,回传参数给 js端。格式为NSDictionary其中包含
* resultCode:状态码,9000为标签靠近手机后连接成功,连接成功后才可以进行数据收发交互
* resultMsg:状态码描述,格式为NSString字符串
*
* @note 开启一个session,并且同时只能开启一个
* @note session最多扫存活60s,超时必须重启新session
* @note App完全在前台模式,切入后台失效
*/
// 示例
// 调用异步方法
nfcHelper.beginTagReaderSessionAndConnectTagWithParams({
'alertMessage': '靠近NFC标签'
},
(ret) => {
if (ret.resultCode == 9000) {
this.writeDataToTag()
}else {
setTimeout(() =>{
uni.showToast({
title:'异步方法 ' + JSON.stringify(ret),
icon: "none"
})
}, 2.0);
}
})
- invalidateTagReaderSession()
/*!
* @method 关闭NFCNDEFReaderSession标签扫描功能
*/
// 示例
nfcHelper.invalidateTagReaderSession()
- writeTo15693TagWithParams(option, callback)
/*!
* @method 对15693标签进行数据收发交互,需先建立连接再使用该方法
* @param params js 端调用方法时传递的参数。格式如下
* commandCode:标签为15693时存在,Custom command code defined by the IC manufacturer. Valid range is 0xA0 to 0xDF inclusively.
* writeData:Custom request parameters defined by the command.
* @param callback 回调方法,回传参数给 js端。格式为NSDictionary其中包含
* resultCode:状态码,9000为数据收发成功,标签返回数据请看描述信息。
* resultMsg:状态码描述,格式为NSString字符串。当数据收发成功时,此字段数据为Hex字符串类型。
*
* @discussion Custom command (0xA0 to 0xDF command code) as defined in ISO15693-3 specification. IC manufacturer code from the tag is
* automatically inserted after the command byte before appending the custom request parameters in forming the packet.
*/
// 示例
// 15693标签
nfcHelper.writeTo15693TagWithParams({
'commandCode': 0xC0,
'writeData': '0600',
},
(ret) => {
nfcHelper.invalidateTagReaderSession()
setTimeout(() =>{
uni.showToast({
title:'异步方法 ' + JSON.stringify(ret),
icon: "none"
})
}, 2.0);
})
- writeToMifareTagWithParams(option, callback)
/*!
* @method 对Mifare标签进行数据收发交互
* @param params js 端调用方法时传递的参数。格式如下
* writeData:Custom request parameters defined by the command.
* @param callback 回调方法,回传参数给 js端。格式为NSDictionary其中包含
* resultCode:状态码,9000为数据收发成功,标签返回数据请看描述信息。
* resultMsg:状态码描述,格式为NSString字符串。当数据收发成功时,此字段数据为Hex字符串类型。
*
*/
// 示例
// Mifare标签
nfcHelper.writeToMifareTagWithParams({
'commandCode': 0xC0,
'writeData': '0600',
},
(ret) => {
nfcHelper.invalidateTagReaderSession()
setTimeout(() =>{
uni.showToast({
title:'异步方法 ' + JSON.stringify(ret),
icon: "none"
})
}, 2.0);
})