Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/easemob/webim-weixin-xcx
https://github.com/easemob/webim-weixin-xcx
Last synced: 1 day ago
JSON representation
- Host: GitHub
- URL: https://github.com/easemob/webim-weixin-xcx
- Owner: easemob
- Created: 2016-11-23T02:53:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-08-29T10:34:46.000Z (2 months ago)
- Last Synced: 2024-08-29T11:45:03.863Z (2 months ago)
- Language: JavaScript
- Size: 4.46 MB
- Stars: 198
- Watchers: 36
- Forks: 106
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# 介绍
******
环信小程序demo是基于环信im SDK开发的一款即时通讯的小程序。这个demo可以帮助开发者们更轻松的集成环信SDK。可扫码体验:
![huanxinIM](./src/images/huanxindemo.jpg)
demo 包含以下功能
- 最近通话
- 通讯录
- 通知(加好友、加群)
- 设置
# 在本地跑起来
拉取代码,导入开发者工具即可运行起来。# 数据结构
```
登录页:
login: {
name:'',
psd: '',
grant_type: 'password',
}
注册页:
register: {
username: '',
password: ''
}
通讯录页:
member:[], //好友列表
聊天页:
chatMsg:[{
info:{
to:''
},
username:'', //用户名
yourname:'', //好友名
msg: {
type:'',
data:''
},
style:'', //样式
time:'',
mid:'' //message ID
}]
globalData:
userInfo: '', //用户微信授权信息
chatMsg: [] //用于存储离线消息
unReadMessageNum: 0, //未读消息数
saveFriendList: [],//加好友申请
saveGroupInvitedList: [], //加群邀请
isIPX: false //是否为iphone X //是否为iphoneX
缓存:
myUsername: '' //缓存登录用户名
yourname + myName:'' //以用户名跟好友名为key来缓存聊天记录
```
# 项目结构
```shell
|- comps 自定义组件目录
|- addfriend 添加好友页
|-chat 聊天页面
|-swipedelete 测滑删除
|-toast toast
|-images demo中用到的图片 还有表情
|-pages 功能页面
|-register 注册页
|-login 登录页
|-login_token token登录页
|-chat 最近联系人页(通话)
|-chatroom 聊天室页
|-main 联系人页
|-add_new 加好友页
|-group 群组页
|-groupSetting 群组设置页
|-notificaton 通知页
|-notificaton_friendDetail 加好友通知页
|-notificaton_groupDetail 加群组通知页
|-setting 设置页
|-setting_general 通用设置页
|-utils 工具类和sdk的一些配置
|-sdk 环信sdk
|-app.js 小程序根实例,存放一些全局变量,注册监听事件
|-app.json 注册页面以及全局的一些配置
|-app.wxss 一些全局样式
|-project.config.json工程的一些配置,和开发者工具 “详情” 中的设置一样
```
# 可以复用的代码
如果想快速搭建起一个有im能力的小程序,可以选择复用demo中的代码,其中utils以帮助快速集成sdk,comps > chat是聊天页。当然其他部分需要复用的,如常见的测滑删除、联系人按字母分类、通知的订阅模式也可以去具体文件去找。# 常见问题
+ 怎么发扩展消息?构造消息的时候msg.set(option), option中传人ext字段,即可发送扩展消息,具体可以查看[文档](http://docs-im.easemob.com/im/applet/message#%E5%8F%91%E9%80%81%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF_%E5%8D%95%E8%81%8A)。
+ 使用mpvue集成报错?.babelrc文件中修改 "plugins": ["transform-es2015-modules-commonjs"],这里有一些开发者的[经验](https://blog.csdn.net/qq_43128835/article/details/95400888)。
+ 陌生人消息不上屏?目前demo并没有去实现,现在的逻辑是会话列表是从好友列表去查的,可以看pages/chat/chat.js getChatList()。
# 遇到的一些坑
- 聊天页面布局,input focus时页面滑动,光标会错位,官方的说法是,input focus时不能使用动画。
- 在scroll-view中无法触发onPullDownRefresh。
- margin-bottom 只有在下面还有元素时才生效。
- 使用enablePullDownRefresh看不见下拉动画,需要将backgroundTextStyle设为dark。
- 播放语音 onTimeUpdate在开发者工具上不能稳定触发。
- background-image只能用网络地址。
- 适配iphone X 使用wx.getSystemInfo() 返回的model在工具上是'iPhone X' 在真机上后面还会有其他字符,不要精确匹配。坑还有很多,大家慢慢趟吧
# 写在最后
这期小程序demo只完善了单聊部分,后面还要优化群组的一些功能,关于图片消息缓存的问题,目前图片都是压缩过的,大约在200k左右,如果要做缓存自己可以使用storage去实现,但是要注意小程序只有10M的存储空间,还有一些功能demo没有去实现但是sdk是支持的,要用到的话大家可以去查[文档](https://webim.easemob.com/sdk/jsdoc/out/connection.html)