Git Product home page Git Product logo

lanying-im-uniapp's Introduction

蓝莺IM Uniapp 版

蓝莺IM,是由美信拓扑团队研发的新一代即时通讯云服务,SDK 设计简单集成方便,服务采用云原生技术和多云架构,私有云也可按月付费。

蓝莺IM APP 为方便体验试用蓝莺IMSDK 的 DemoApp。开发者可直接在线试用,也可在官网下载页面选择试用所有客户端。

Scc Count Badge Scc Count Badge

工程说明

  1. 本工程为 Uniapp 工程,实际上是从微信小程序转换而来,感谢zhangdaren,转换过程非常顺畅;
  2. 推荐使用此版本进行小程序/H5 等版本开发,感谢 DCloud.io 开发这么好的框架;
  3. DemoApp 是为了演示 IM SDK 调用而开发,也因此最好的开发方式为根据 DemoApp 找到功能,然后直接查看使用示例;
  4. 本工程 DemoApp 不包含所有功能的演示,但是 SDK(floo) 功能完全,高级功能可以参照PC Web 版本,SDK 调用方式是通用的。

此工程共有四个源码目录:

  1. im 存放蓝莺IM SDK,当前最新版本为 floo-3.0.0.uniapp.js
  2. pages 为 UI 源码目录;
  3. utils 为使用的工具类源码;
  4. third 为第三方源码;

开发

  1. 运行命令安装依赖包

npm install

  1. 打开 HBuilder(Uniapp IDE)进行开发

  2. uni_modules目录下引用了下列插件,需要使用HBuilderX手动导入生产,在根目录下自动生成uni_modules目录。现在引用了下列项目:

    • uni-popup
    • mp-html

开发自己的应用

  1. 修改蓝莺IM AppID

打开文件 App.vue, 修改变量 appid,将 "welovemaxim" 改为你的应用 AppID,此 AppID 为在蓝莺IM 后台创建应用后获取。

  1. 如果开发小程序,还需修改对应小程序平台的 AppID

如果是微信小程序,可以打开文件 manifest.json,修改其中的 AppID 为你的小程序在微信后台的 appid。

代码风格

代码风格选择的 ESLint + Prettier,基本规则如下:

  1. 所有缩进设置为 2 ,包括 Style Sheets 中的各种 css 语言文件、html 文件、JavaScript 文件和其它类型文件。
  2. HTML 文件中 script 标签和 style 标签后的首行代码不缩进。
  3. 函数名和花括号的空格
    • 函数声明时,函数名后不加括号;
    • 在函数表达式中 function 后面括号前不加空格;
    • 花括号中(插值表达式/解构赋值)首尾要增加空格。

Webstorm 设置可参考这里

其他

了解更多信息可以阅读在线文档,或者在本仓库提问 :)


蓝莺IM 专业 SDK,私有云按月付费

lanying-im-uniapp's People

Contributors

ericliang avatar fanjiangwei7 avatar theorix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

lanying-im-uniapp's Issues

如何屏蔽 SDK 输出的 log

现在 SDK 中输出的 log 非常多,影响其它功能的调试,是否能做一个开关,控制 log 的输出

SDK storeBase.js 中,关于保存,获取和删除的判断逻辑有出入

storeBase.js

关于 partition_key 判读逻辑,不一致。
生成时,如果发送者 ID 为 0,会产生 XXXX_key_roster_message_store key,但是删除的时候,无法对其进行删除。

const saveItem = (key, item, hasuid = true, partition_key = 0) => {

  ...

  if (partition_key > 0) {
    skey = skey + '_' + partitionId(partition_key);
  }

  ...

};

const getItem = (key, hasuid = true, partition_key = 0) => {

  ...

  if (partition_key > 0) {
    skey = skey + '_' + partitionId(partition_key);
  }

  ...

};

const removeItem = (key, hasuid = true, partition_key = -1) => {

  ...

  if (partition_key >= 0) {
    skey = skey + '_' + partitionId(partition_key);
  }

  ...

};

登陆后需要退出一下app 才能登陆

当在操作一会app的时候 提示要求登陆 登陆之后填写账号密码后 再登陆 就一直显示登陆中 需要退出(切出去再切换回来)才能登陆
image

登录出错问题

现在是如果是做登陆操作输错了密码 就会 好几个错误提示 并且还能弹出 让手动录入等信息

`onRosterInfoUpdate` 事件存在字面逻辑问题,事件发出的时候,并不一定有数据,或者有数据更新

单纯看 rosterManage.js, onRosterInfoUpdate 事件发出的时候,附带的 roster ID 数组,是请求 API 时数组,并非 API 返回数据里的内容。然而, API 并不一定能返回要求的数据。比如有时候会请求的 roster 并不存在,API 返回了空数组, 事件却附带了请求的,不存在的 roster ID。发出这个事件的其它地方,好像都有这个问题。asyncGetRosterInfoasnycGetRosterListDetailByIdsimRosterInfoUpdated

不知道这个有意为之,还是代码有误?onRosterInfoUpdate 好友信息变更, 名称上感觉就是有更新才会发出的事件?

const asnycGetRosterListDetailByIds = (roster_ids) => {
  // todo ... fix一下
  if (!roster_ids || !roster_ids.length) {
    return Promise.resolve({});
  }
  const allMap = rosterStore.getAllRosterInfos();
  const sret = [];
  roster_ids.forEach((item) => {
    const ritem = allMap[item];
    if (!ritem || !ritem.username) {
      sret.push(item);
    }
  });
  const setArr = Array.from(new Set(sret));
  if (!setArr.length) {
    return Promise.resolve();
  } else {
    return http
      .rosterListPost({
        list: setArr
      })
      .then((res) => {
        rosterStore.saveRosterInfo(res);
        fire('onRosterInfoUpdate', setArr);   >>>>>> 这里的 `setArr` 是请求前的数据,有可能 `res` 里是空的数组 <<<<<<
        return res;
      });
  }
};

上传视频文件

在群内上传视频文件 获取到的上传视频之后的文件 还需要解析一下吗? 例如getImage 这样的方法 上传类型是否为103?

删除会话报错

image

有时候好使 有时候出错
getApp().getIM().sysManage.deleteConversation(i.sid,true);

文档好像不全啊

sysManage.asyncWxbind没有写进文档啊。
到底还有多少功能没有写出来啊,免得遇到了问题伤脑筋

图片问题

im.sysManage.getImage 解析的图片地址 访问是
image

用户退出群组,群内用户没有及时收到群组成员变化的通知

SDK: 蓝莺IM SDK Uniapp 版 v2.9.13

两个用户,加入同时加入同一个群聊,聊天没有遇到问题,但是,一个用户退出群聊 .groupManage.asyncLeave(groupId), 另一个用户一直没有收到 onGroupMemberChanged。 然而,当退出的用户重新加入,会连续收到两个 onGroupMemberChanged,在收到的时候,立即查询群组成员,两次都是返回同样的数据,都包含着重新加入的用户。
这里会产生了问题:1. 用户感知不到其他用户的退出,2. SDK 通知群成员变化,但是找不出变化的地方。

这个问题产生于那里?SDK 还是服务端?

好友聊天报错

复现步骤:HBuilderX打开项目并运行到微信开发者工具=>登录=>好友=>点击好友进行聊天=>发送聊天内容
报错如下:

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.