更新记录

1.0.9(2023-08-23)

  • 增加接收数据字节大小设置
    /**
    * 设置接受的字节大小,单位是 byte,默认 1024
    * 请按需设置,过大可能会影响性能,或导致奔溃
    */
    udpClient.setByteSize(2048);

1.0.8(2023-08-03)

  1. send 方法增加 useHex 字段
 udpClient.send({
        host: resData.host,
        port: resData.port,
        data: JSON.stringify({code: 1, msg: "我收到消息啦~"}),
        useHex: true, // 使用 hexString 方式发送 ,默认为 false
});
  1. udpClient.setUseHex(true); 以 hexString 接收返回数据,该方法会在数据返回的时候多返回一个 hex 字段

{host: string, port: number, data: string, hex: string}

1.0.7(2023-07-17)

增加 hex string 的收发,增加返回的字段 hex

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.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原生插件配置”->”云端插件“列表中删除该插件重新选择


udp-client

介绍

一个简单的支持安卓平台的,广播和接收 udp 数据的插件。

使用场景

  1. 服务端知道设备的 IP 之后,可以给设备发送消息,同时设备也可以给服务端发送消息
  2. 服务端给同个网断内的设备广播消息
  3. 客户端给同个网断内的设备互相广播

Demo

const udpClient = uni.requireNativePlugin('udp-client');
export default {
  data: function() {
    return {
      socketPort: 10005,
    }
  },
  onLoad() {
    /**
    * 如果需要使用 hexString, 请在 init 之前调用 
    * 之后会在返回数据多一个 hex 字段
    */
    udpClient.setUseHex(true);

    /**
    * 设置接受的字节大小,单位是 byte,默认 1024
    * 请按需设置,过大可能会影响性能,或导致奔溃
    */
    udpClient.setByteSize(2048);

    /**
     * 在设备初始化,监听 10005 端口。
     * 假设本设备 IP 为 192.168.2.35
     * 那么服务端,或者其设备,就可以给 192.168.2.35:10005 发送消息了
     */
    udpClient.init(this.socketPort, this.onSocketMsg, this.onSocketError);
  },
  methods: {
    onSocketMsg(resData) {
      // resData 的数据结构:{ host, port, data, hex }
      console.log("接收到消息: " + resData);
      // 收到消息如果想响应
      udpClient.send({
        host: resData.host,
        port: resData.port,
        data: JSON.stringify({code: 1, msg: "我收到消息啦~"}),
        useHex: true, // 使用 hexString ,默认为 false
      });
    },
    onSocketError(errMsg) {
      console.error("socket 异常:" + errMsg);
    },
  },
  onUnload() {
    // 释放 socket,释放端口
    udpClient.release();
  }
}

使用文档

引入

// #ifdef APP-PLUS
const client = uni.requireNativePlugin('udp-client');
// #endif

初始化

/**
 * 初始化
 * @param listenPort 监听的端口
 * @param (res) => {} 返回消息 res: {host: string, port: number, data: string, hex: string}
 * @param (errMsg) => {} 异常消息
 */
client.init(listenPort, (res) => {

}, (errMsg) => {

});

发送消息

/**
 * 发送消息
 */
client.send({
  data: String,
  port: number,
  host: String, // 可选,不传默认为广播 255.255.255.255
  useHex: Boolean, // 是否发送 hexString,默认 false
});

释放

/**
 * 释放,拿到数据之后手动释放,不然会占用资源
 */
client.release();

设置是否打印日志

// 是否在开发工具里(比如: Android Studio )里打印日志
client.setIsDebug(false);

隐私、权限声明

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

"android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE"

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

插件不采集任何数据

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

许可协议

请参考开源项目地址的开源协议

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