更新记录
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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
如何引入插件到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编码。