更新记录

1.0.3(2024-08-12) 下载此版本

免费

1.0.2(2022-10-12) 下载此版本

细化报错信息,修改调用方式。

1.0.1(2022-08-30) 下载此版本

更新插件使用说明

查看更多

平台兼容性

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原生插件配置”->”云端插件“列表中删除该插件重新选择


v1.0.2 插件使用示例

插件目录结构如下: 项目根目录 nativeplugins zad-socket android libs org.eclipse.paho.android.service-1.1.1.jar org.eclipse.paho.client.mqttv3-1.1.0.jar zad-socket-release.aar package.json

<template>
    <view class="page">
        <view class="msg">
            <div v-for="(item,index) in message" :key="index">{{JSON.stringify(item)}}</div>
        </view>
        <view>
            <button @click="message = []">清空屏幕消息</button>
        </view>
        <view>
            TCP
            <button @click="socket('connect')">连接</button>
            <button @click="socket('send')">发消息</button>
            <button @click="socket('close')">关闭连接</button>
            <button @click="socket('isConnected')">是否已连接</button>
        </view>
        <view>
            MQTT
            <button @click="mqtt('connect')">开启连接</button>
            <button @click="mqtt('subscribe')">订阅主题</button>
            <button @click="mqtt('unsubscribe')">取消订阅主题</button>
            <button @click="mqtt('send')">发送数据</button>
            <button @click="mqtt('close')">关闭连接</button>
            <button @click="mqtt('isConnected')">是否已连接</button>
        </view>
    </view>
</template>

<script>
    const _TCPSocket = uni.requireNativePlugin("zad-socket-tcp");
    const _MQTT = uni.requireNativePlugin("zad-socket-mqtt");
    export default {
        data() {
            return {
                message: [{ code: 200, data: 'Socket 插件测试' }]
            }
        },
        onLoad() {},
        methods: {
            socket(method) {
                switch (method) {
                    case "connect": //连接
                        _TCPSocket.event({
                            method: method,
                            param: { ip: '192.168.10.21', port: 6000 }
                        }, e => {
                            this.handleMessage(e)
                        })
                        break;
                    case "isConnected": //是否已连接
                        _TCPSocket.event({ method: 'isConnected' })
                        break;
                    case "send": //发送消息
                        _TCPSocket.event({
                            method: 'send',
                            param: { message: '消息1' }
                        })
                        break;
                    case "close": //关闭
                        _TCPSocket.event({ method: 'close' })
                        break;
                }
            },
            mqtt(method, param) {
                switch (method) {
                    case "connect": //连接
                        _MQTT.event({
                            method: 'connect',
                            param: {
                                url: 'tcp://192.168.10.21:1883',
                                username: 'admin',
                                password: 'public',
                                clientId: 'abcd123'
                            }
                        }, e => {
                            this.handleMessage(e)
                        })
                        break;
                    case "isConnected": //是否已连接
                        _MQTT.event({ method: 'isConnected' })
                        break;
                    case "subscribe": //订阅
                        _MQTT.event({ method: 'subscribe', param: { topic: '/device/location/abcdefg' } })
                        break;
                    case "unsubscribe": //取消订阅
                        _MQTT.event({ method: 'unsubscribe', param: { topic: '/device/location/abcdefg' } })
                        break;
                    case "send": //发送消息
                        _MQTT.event({
                            method: 'send',
                            param: { topic: '/device/location/abcdefg', message: '消息1' }
                        })
                        break;
                    case "close": //关闭
                        _MQTT.event({ method: 'close' })
                        break;
                }
            },
            handleMessage(e) {
                //e.code    400方法调用失败、200方法调用成功、0插件主动发送的消息、-1插件主动发送的异常消息
                //e.method  调用时传递的参数,可以根据method处理逻辑
                //e.data    返回数据体
                this.message.push(e)
                if (e.method == 'receive') {
                    //接收到服务端的消息
                    console.log(e.data)
                }
            },
        }
    }
</script>
<style scoped>
    .page {
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        display: flex;
        flex-direction: column;
        padding: 10px;
    }

    .msg {
        border: solid 1px #888;
        overflow: auto;
        flex: 1;
        width: 100%;
        margin-bottom: 10px;
    }
</style>

隐私、权限声明

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

网络套接字<uses-permission android:name="android.permission.INTERNET" /> 网络状态<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

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

插件不采集任何数据

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

许可协议

作者未提供license.md

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