更新记录

1.3.6(2023-08-21)

修复Android tcp服务端接收数据为空字符串的bug

1.3.5(2023-06-25)

1.!!!重要!!!由于近期换了新电脑,导致iOS版本的插件原生工程没及时同步,版本没一致同步,现已修复。

1.3.4(2023-06-19)

1.iOS在插件被创建时触发本地网络权限

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:11 - 14

原生插件通用使用流程:

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


如何引入插件到HBuilder

https://nativesupport.dcloud.net.cn/NativePlugin/use/use

引用插件

const tcpChannel = uni.requireNativePlugin('jungle-network-tcp');

const udpChannel = uni.requireNativePlugin('jungle-network-udp');

回调的json结构

{
    "code": ${Integer},
    "data": ${Object}
}

code码说明:

-2 发生错误 data为String类型

-1 参数有误 data为String类型

0 无错误

1 tcp通道连接成功 data为null

2 tcp通道关闭成功 data为null

3 连接失败 data为String类型

4 tcp通道接收到数据 data为String类型

5 连接已丢失 data为null

6 tcp send函数传入参数不为字符串

服务端TCP通道初始化监听、断开、发送示例

// 绑定本地地址并监听客户端连接
tcpChannel.bind({
    'ip':'192.168.2.108',// 这里可以填空字符串或者null,默认绑定本机地址
    'port':'9527',
    'charset':'GBK'// 该参数根据java.nio.charset设置 不填或者为null则默认为UTF-8
}, (msg) => {
    console.log('服务端监听', msg);
    if (CODE_CONNECT_SUCCESS == msg.code) {
        // 连接建立后自动发送到客户端
        this.createServerTimer();
        return;
    } else if (CODE_RECEIVE_DATA == msg.code) {
        console.log('接收到客户端发来的数据', msg.data);
        return;
    } else if (CODE_DISCONNECT_SUCCESS == msg.code || CODE_ERROR_OCCUR == msg.code) {
        this.cancelServerTimer();
    }
});

// 解除绑定本地监听客户端连接
tcpChannel.unbind((msg) => {
    console.log('释放服务端监听', msg);
    if (CODE_NO_ERROR == msg.code) {
        console.log('释放服务端监听无错误');
    }
});

客户端TCP通道初始化连接、断开、发送示例

// 连接
tcpChannel.connect({
    'ip':'192.168.2.112',
    'port':'12306',
    'charset': 'HEX'// 该参数根据java.nio.charset设置 不填或者为null则默认为UTF-8 接受16进制大写字符串
}, (msg) => {
    console.log('连接回调', msg);
    if (CODE_CONNECT_SUCCESS == msg.code) {
        createClientTimer();
        return;
    } else if (CODE_RECEIVE_DATA == msg.code) {
        console.log('接收到服务端发来的数据', msg.data);
        return;
    }
    if (0 > msg.code) {
        console.log('连接被断开');
        this.cancelClientTimer();
    }
});

// 断开
tcpChannel.disconnect((msg) => {
    console.log('断开回调', msg);
    if (CODE_NO_ERROR == msg.code) {
        this.cancelClientTimer();
    }
});

暂无UDP通道使用示例,可参考已有代码,后续会添加上

测试用的定时器功能

createServerTimer() {
    if (this.serverTimer) {
        return;
    }
    this.serverTimer = setInterval(() => {
        tcpChannel.sendClient({
            //'data':'hello jungle client',
            // 'charset'字段不填则默认'UTF-8'
            'data':'FE112233445566FF',
            'charset':'HEX'
        }, (msg) => {
            console.log('服务端发送回调', msg);
        });
    }, 500);
},
cancelServerTimer() {
    if (!this.serverTimer) {
        return;
    }
    clearInterval(this.serverTimer);
    this.serverTimer = null;
},
createClientTimer() {
    if (this.clientTimer) {
        return;
    }
    this.clientTimer = setInterval(() => {
        tcpChannel.send({
            'data':'hello jungle server',
            // 'charset'字段不填则默认'UTF-8'
            //'data':'FE112233445566FF',
            //'charset':'HEX'
        }, (msg) => {
            console.log('客户端发送回调', msg);
        });
    }, 500);
},
cancelClientTimer() {
    if (!this.clientTimer) {
        return;
    }
    clearInterval(this.clientTimer);
    this.clientTimer = null;
},

注意事项:

**作为服务端时bind函数charset参数仅供服务端接收的字符数据编码设定,其他函数默认为UTF-8编码。
**作为客户端时bind函数charset参数提供接收的HEX十六进制字符数据编码设定,默认为UTF-8编码。

隐私、权限声明

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

Android系统需要 <uses-permission android:name="android.permission.INTERNET"/> iOS13或以上,上线AppStore商店需要'本地局域网络'NSLocalNetworkUsageDescriptions权限描述

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

插件不采集任何数据

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

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