更新记录
1.0.5(2024-01-30)
- 优化声明
1.0.4(2024-01-24)
- 多端口监听增加iOS支持
1.0.3(2023-09-25)
- upd服务端增加监听多端口功能
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 14.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
前言
wrs-udp是udp组件,包含客服端和服务端,支持十六进制、ASCII、iso、utf-8、utf-16等多种字符格式
原生插件通用使用流程
HBuildX集成原生插件请参考:https://www.jianshu.com/p/1418c9e73eb3 或官网https://nativesupport.dcloud.net.cn/NativePlugin/use/use
ios项目配置
-
打开manifes.json文件,增加本地网络权限,参考demo:"NSLocalNetworkUsageDescription": "访问本地网络需要您的授权"
-
在"app-plus" -> "distribute" -> "ios" -> "capabilities" -> "entitlements"增加广播开启节点,可以参考demo 测试结果:如果不添加com.apple.developer.networking.multicast只能发送对方IP的广播,无法发送255.255.255.255的广播
"capabilities": {
"entitlements": {
"com.apple.developer.networking.multicast": true
}
}
- 打包的provisioining profile文件需要开通组播权限,参考https://www.jianshu.com/p/c2f6e6aa41a3?v=1682211826634
如果需要十六进制、ASCII、字节之间的转换可以参考工具类插件https://ext.dcloud.net.cn/plugin?id=12803
组件
- 客服端组件
var udpClient = uni.requireNativePlugin("wrs-udp-client");
- 发送广播
// var array = new Array();
// array.push(0xFA);
// array.push(0xFB);
var ip = this.ip;
var port = this.port;
var data = this.data;
var params = {
ip: ip, // 对方接收IP
port: port, // 对方接收端口
data: data, // data可以是十六进制的数组,如上面的array,也可以是十六进制的字符串,如“FAFB”
sendCount: 1, // 发送次数,由于udp是不可靠连接,为了提高到达率,常规业务可能需要发送多次
dataType: 0, // 发送数据类型,0: 以十六进制发送,此时data数据为十六进制字符串或整型数组 1:以字符编码发送,此时data数据为字符串
charsetName: "UTF_8" // 字符编码,当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
};
// params.localPort = 7022; // 绑定本地端口,一般业务用不到
udpClient.sendData(params);
- 服务端组件
var udpServer = uni.requireNativePlugin("wrs-udp-server");
- 启动服务
var params = {
port: this.serverPort, // 监听端口
dataType: 0, // 接收数据类型,0: 以十六进制接收 1:以字符编码接收
charsetName: "UTF_8" // 字符编码,当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
};
udpServer.startServer(params, (startResult)=>{
if(startResult.flag) {
this.showLog("服务启动成功");
} else {
this.showLog("服务启动失败:" + startResult.msg);
}
}, (receiveData)=>{
var str = JSON.stringify(receiveData);
this.showLog("收到数据:" + str);
})
- 停止服务
udpServer.stopServer()
- 服务端监听多个端口
var moreServer = uni.requireNativePlugin("wrs-udp-more-server");
- 开启服务
// 监听端口1
moreServer.startServer({
port: 8889
}, (startResult)=>{
if(startResult.flag) {
this.showLog("服务启动成功1");
} else {
this.showLog("服务启动失败1:" + startResult.msg);
}
}, (receiveData)=>{
var str = JSON.stringify(receiveData);
this.showLog("收到数据1:" + str);
})
// 监听端口2
moreServer.startServer({
port: 8888
}, (startResult)=>{
if(startResult.flag) {
this.showLog("服务启动成功1");
} else {
this.showLog("服务启动失败1:" + startResult.msg);
}
}, (receiveData)=>{
var str = JSON.stringify(receiveData);
this.showLog("收到数据1:" + str);
})
- 停止服务
// 关闭端口1
moreServer.stopServer({
port: 8889
});
支持定制,联系方式 QQ:252797991