更新记录

1.0.0(2022-04-06)

初版适配


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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){
                //未初始化
            }
        });
    }

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问