SDK · uni-app

@imcore/sdk/uni-app 为 uni-app 提供类型化的 imcore API。它适配注入的 uni API 的异步存储、SocketTask、生命周期/网络事件和 uploadFile,不依赖 特定的 uni-app 渲染器。

安装

npm install ./imcore-sdk-js-<版本>.tgz

使用 uni-app 的常规工具构建各端。每个目标平台都要在其后台配置 IM 服务的 WebSocket 和上传请求合法域名;生产环境必须使用 wss:// 与 https://。

创建一个应用级客户端

import { createUniAppClient } from '@imcore/sdk/uni-app';

const im = createUniAppClient({
  uni,
  url: 'wss://im.example.com/acc',
  auth: {
    getToken: () => uni.getStorageSync('access_token'),
    login: { userID: '1001', userName: 'alice' },
  },
  storageNamespace: '@my-app/im/1001/',
});

export default {
  async onLaunch() {
    await im.start();
  },
};

start() 会监听 uni.onAppShow、uni.onAppHide 和 uni.onNetworkStatusChange。默认应用进入后台时释放连接,回到前台或网络恢复后 自动重连。退出登录时调用 im.stop();每个账号必须使用不同的 storageNamespace。

上传媒体

传入 uni.chooseImage、uni.chooseVideo 或目标平台文件选择器返回的临时路径; 返回的消息段可直接发送:

const picked = await uni.chooseImage({ count: 1 });
const uploaded = await im.media.upload({
  file: picked.tempFilePaths[0],
  type: 'image',
  scene: 'dm',
  targetUserID: '1002',
});
await im.dm.send({ targetUserID: '1002', segments: [uploaded.segment] });

上传地址默认从 WebSocket 地址推导。HTTP 上传端点使用不同域名时,传入 httpBaseUrl。