更新记录
1.0.0(2022-09-09)
1:初次提交
2:实现读卡器插件初始化、读卡、写卡、预设密码等功能
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:4.4 - 9.0 |
armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 |
× |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
1. 插件使用
插件引入方式: const NFCCard = uni.requireNativePlugin('king-nfc-card');
2.API说明
初始化SDK initSDK()
隐藏客屏 setCallBack(result=>{})
参数 |
类型 |
默认值 |
说明 |
result |
function |
无 |
返回数据 |
返回的是Json字符串需要进行JSOPN.parse(data);
callBack(data){
console.log("返回值",data);
let json = JSON.parse(data);
if (json.code == 'fail') {
return;
}
switch (json.type) {
case 'findCard':
break;
case 'setPassword':
break;
case 'rFicClicked':
break;
case 'readData':
break;
case 'writeData':
break;
case 'writeAndSet':
break;
}
}
打开设备 openDev()
关闭设备 closeDev()
蜂鸣 deep()
关闭设备 closeDev()
关闭设备 closeDev()
寻卡 findCardClicked()
认证 rFICClicked(secNr,keyModel)
参数 |
类型 |
默认值 |
说明 |
secNr |
number |
无 |
扇区 |
keyModel |
number |
无 |
密码Key值1-6 |
读块 readCardInfoClicked(secNr,becNr)
参数 |
类型 |
默认值 |
说明 |
secNr |
number |
无 |
扇区 |
becNr |
number |
无 |
块 |
写块 writeCardInfoClicked(secNr,becNr,data)
参数 |
类型 |
默认值 |
说明 |
secNr |
number |
无 |
扇区 |
becNr |
number |
无 |
块 |
data |
string |
无 |
数据:“FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00” |
写数据并修改密码 writeCardInfoAndSetPassword(secNr,becNr,data,newPassword)
参数 |
类型 |
默认值 |
说明 |
secNr |
number |
无 |
扇区 |
becNr |
number |
无 |
块 |
data |
string |
无 |
数据:“FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00” |
newPassword |
string |
无 |
数据:newPassword=this.passwordA+this.passwordCtrl+this.passwordB; |
写密码 setPassword(secNr,key,password)
参数 |
类型 |
默认值 |
说明 |
secNr |
number |
无 |
扇区 |
keyModel |
number |
无 |
密码Key值1-6 A密码1-3,B密码:4-6 |
password |
string |
无 |
密码:“FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00” |
寻卡-认证-读卡 readCardInfo(secNr,becNr,key)
参数 |
类型 |
默认值 |
说明 |
secNr |
number |
无 |
扇区 |
becNr |
number |
无 |
块 |
key |
number |
无 |
密码Key值1-6 |
json参数说明 json参数完全自定义:state设置消息类型,data设置消息数据
参数 |
类型 |
默认值 |
说明 |
state |
String |
无 |
消息类型,用于客屏html接收数据后判断消息类型 |
data |
Object |
无 |
消息内容{xx:aa} |
Demo
<template>
<view>
<view style="display: flex;flex-direction: row;">
<view>新卡</view>
<switch color="#FFCC33" style="transform:scale(0.7)" :checked="isNewCard" @change="changeCardType"/>
</view>
<button @click="initSDK">初始化SDK</button>
<button @click="openDev">连接设备</button>
<button @click="closeDev">断开设备</button>
<button @click="findCardClicked">寻卡</button>
<button @click="rFICClicked">认证</button>
<button @click="readCardInfoClicked">读块</button>
<button @click="writeCardInfoClicked">写块</button>
<button @click="writeCardInfoAndSetPassword">写数据并修改密码</button>
<button @click="deep">蜂鸣</button>
<button @click="setPassword">写密码</button>
<button @click="setPreinstallPassword">设置预设密码</button>
<button @click="readCardInfo">寻卡-认证-读卡</button>
</view>
</template>
<script>
const NFCCard = uni.requireNativePlugin('king-nfc-card');
export default {
data() {
return {
isNewCard:true,
defaultPassword:"FFFFFFFFFFFF",
passwordA:"FFFFFFFFFFFF",
passwordB:"FFFFFFFFFFFF",
passwordCtrl:"08778F69",//AB密码权限,不建议修改
secNr:2,
becNr:0,
keyModel:4,
}
},
methods: {
changeCardType(value){
console.log("选择状态",value.detail.value);
this.isNewCard=value.detail.value;
},
initSDK(){
NFCCard.initSDK();
NFCCard.setCallBack(this.callBack)
},
callBack(data){
console.log("返回值",data);
console.log(data.code)
let json = JSON.parse(data);
if (json.code == 'fail') {
return;
}
switch (json.type) {
case 'findCard':
console.log("寻卡结束-认证");
// this.rFICClicked();
break;
case 'setPassword':
// nfcSDK.rFICClicked();
break;
case 'rFicClicked':
this.readCardInfoClicked();
break;
case 'readData':
break;
case 'writeData':
break;
case 'writeAndSet':
break;
}
},
openDev(){
NFCCard.openDev();
let password=this.isNewCard?this.defaultPassword:this.passwordB;
setTimeout(()=>{ NFCCard.setPassword(this.secNr,this.keyModel,password);},1000)
},
closeDev(){
NFCCard.closeDev();
},
findCardClicked(){
console.log("寻卡-----")
NFCCard.findCardClicked();
},
rFICClicked(){
console.log("认证卡---")
NFCCard.rFICClicked(this.secNr,this.keyModel);
},
readCardInfoClicked(){
NFCCard.readCardInfoClicked(this.secNr,this.becNr);
},
writeCardInfoClicked(){
NFCCard.writeCardInfoClicked(this.secNr,this.becNr,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00");
},
writeCardInfoAndSetPassword(){
let newPassword=this.passwordA+this.passwordCtrl+this.passwordB;
NFCCard.writeCardInfoAndSetPassword(this.secNr,this.becNr,"FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000",newPassword);
},
deep(){
NFCCard.deep();
},
setPassword(){
let password=this.isNewCard?this.defaultPassword:this.passwordB;
NFCCard.setPassword(this.secNr,this.keyModel,password);
},
setPreinstallPassword(){
NFCCard.setPassword(this.secNr,1,this.passwordA);
NFCCard.setPassword(this.secNr,5,this.passwordB);
},
readCardInfo(){//需要先写入预设密码,密码是写着读卡器上写一次就可以
NFCCard.readCardInfo(this.secNr,this.becNr,1);
}
}
}
</script>
<style>
</style>