更新记录
1.0.0(2022-04-06)
初版适配
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.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原生插件配置”->”云端插件“列表中删除该插件重新选择
第一次发布插件,学习中
在页面引入mqtt
LET
let mqtt = uni.requireNativePlugin("wy-mqtt");
在onLoad()中初始化
onLoad() {
console.log('onLoad');
mqtt.init()
}
连接
connect(){
var param = {
host:'tcp://url:port',
userName:'username',
clientId:'clientid',
passWord:'password',
// * * 以下为非必须参数
keepAliveInterval:60,//心跳时间,单位s。即多长时间确认一次Client端是否在线,默认值60
connectionTimeout:30,//超时时间,单位s,默认值30s
automaticReconnect:true,//断开后,是否自动连接,默认false,不使能
cleanSession:true,//清除会话标志,默认true,该功能启用(false)会自动断线重连
//0 —— 开启会话重用机制。网络断开重连后,恢复之前的Session信息。需要客户端和服务器有相关Session持久化机制。
//1 —— 关闭会话重用机制。每次Connect都是一个新Session,会话仅持续和网络连接同样长的时间。
maxInflight:10,//允许同时发送几条消息(未收到broker确认信息)
will:{ //遗言
topic:'topic',
payload:'payload',
qos:0,
retained:true
}
}
mqtt.connect(
param,
res =>{
/**
* 单次消息
* 0 连接成功
* 1 连接失败
* 2 参数错误
**/
if(res.code == 0){
//连接成功
}else if(res.code == 1){
//连接失败
}else if(res.code == 2){
//参数错误
}
},
data =>{
/**
* 全局消息data.code
* 0 连接成功data.data.code 0首次连接,1重新连接
* 1 掉线、丢失连接connectionLostdata.data.code 0主动断线,1异常掉线
* 2 publish已发送
**/
if(data.code == 0){
//连接成功
}else if(data.code == 1){
//丢失连接
}
},
//订阅消息回调
msg => this.message(msg)
)
},
message(msg) {
console.log(msg.data.payload);
console.log(msg.data.payloadbase64);
console.log(uni.base64ToArrayBuffer(msg.data.payloadbase64).byteLength);
console.log(new Uint8Array(uni.base64ToArrayBuffer(msg.data.payloadbase64)))
console.log(msg);
},
断开连接
disconnect(){
mqtt.disconnect()
},
发布消息
publish(){
//发布字符串消息
var str = "123";
mqtt.publish('topic',str,res =>{
/**
* 0 发送成功
* 1 发送失败
* **/
console.log(res.code)
}
},
publishbin(){
//发布二进制消息
var arrayBuffer = new Uint8Array([0,55,255,55,300])
mqtt.publish('topic',uni.arrayBufferToBase64(arrayBuffer),res =>{
/**
* 0 发送成功
* 1 发送失败
* **/
console.log(res.code)
});
},
publishqos(){
//发布字符串消息,指定qos
var str = "123";
var qos = 1;
mqtt.publishqos('topic',str,qos,res =>{
/**
* 0 发送成功
* 1 发送失败
* **/
console.log(res.code)
});
},
publishbinqos(){
//发布二进制消息,指定qos
var arrayBuffer = new Uint8Array([0,55,255,55,300])
var qos = 1;
mqtt.publishqos('topic',uni.arrayBufferToBase64(arrayBuffer),qos,res =>{
/**
* 0 发送成功
* 1 发送失败
* **/
console.log(res.code)
});
},
订阅消息
subscribe(){
mqtt.subscribe('topic',res =>{
/**
* 0 订阅成功
* 1 订阅失败
* **/
console.log(res.code)
});
},
subscribeqos(){
//订阅消息,指定qos
var qos = 1;
mqtt.subscribeqos('topic',qos,res =>{
/**
* 0 订阅成功
* 1 订阅失败
* **/
console.log(res.code)
});
},
订阅消息
unsubscribe(){
mqtt.unsubscribe('topic',res =>{
/**
* 0 取消订阅成功
* 1 取消订阅失败
* **/
console.log(res)
});
},
连接状态检查
isconnected(){
mqtt.isconnected(res =>{
/**
* 0 连接状态
* 1 未连接状态
* 2 未初始化client
* **/
if(res.code == 0){
//已连接
}else if(res.code == 1){
//未连接
}else if(res.code == 2){
//未初始化
}
});
}