环信_Android

环信_Android

0
评论

2017 本土开源大盘点!年度编程语言和开源项目 TOP 榜 开源 2017 码云

beyond 发表了文章 • 129 次浏览 • 2018-01-09 15:10 • 来自相关话题

摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。




在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布





2. 国内开发者的性别分布
 





3. 2017 年新增756 K 开源项目——Star 数增长排行
 





4. 2017 年新增756 K 开源项目——Fork 数增长排行





5. 2017 年,更多人开始参与开源项目​





6. 国内开源项目的语言占比是什么情况?​





7. 国内开源项目的功能分类是什么情况?​





8.国内开发者最喜爱的编程语言​





9. 2017 年增速最快的语言





本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。 查看全部
摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。

盘点.jpg

在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布


开发者.png


2. 国内开发者的性别分布
 


性别.png


3. 2017 年新增756 K 开源项目——Star 数增长排行
 


star.png


4. 2017 年新增756 K 开源项目——Fork 数增长排行


fork.png


5. 2017 年,更多人开始参与开源项目​


参与.png


6. 国内开源项目的语言占比是什么情况?​


预言.png


7. 国内开源项目的功能分类是什么情况?​


功能.png


8.国内开发者最喜爱的编程语言​


语言.png


9. 2017 年增速最快的语言


增长.png


本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。
0
评论

2017环信八大开源项目源码放出:两个已获融资,单个20W+关注 开源项目

beyond 发表了文章 • 409 次浏览 • 2017-12-29 14:27 • 来自相关话题

“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!
 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。




环信公司前台一角
2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~




应用截图
 实现功能:
创建推流和拉流加速集成环信IM的聊天室功能集成UCloud的ULive直播云SDK在聊天室里集成推流(录制)和拉流(播放)功能
 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?




Dolores海报
相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
单聊群聊朋友圈钱包直播红包




项目运行效果图
相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
事件订阅初始化处理消息的事件把消息发送到移动客服处理OAuth回调把收到的消息发给Slack 用户
 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。




项目运行效果图
实现功能:
 环信SDK的集成与使用 MVP模式的运用 ORM数据库的集成与使用 模块化思想的运用
 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。




项目运行效果图
实现功能:
加入Tinker 热修复加入部分注释增加长按删除功能优化Rxbus订阅加载数据外国友人优化的一些细节增加了评论功能优化了相册加载把登陆注册事件换了个Zip操作符更符合流的思想
相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。




项目运行效果图
[b]实现功能:[/b]
好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。查看群员列表。 面板内快速查找。 面板右键自定义事件 修改签名 自定义上传背景皮肤 搜索好友/群 添加好友/群 新建群 消息盒子展示
 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。




项目运行效果图
 
实现功能
项目首次启动自动注册登录拨号盘实现历史通话记录 TODO视频通话功能(因为电视不需要语音通话以及最小化)视频通话的录制通话截图
 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
  查看全部
“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!

 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。

微信图片_20171229142123.jpg

环信公司前台一角


2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~

小马直播间.png

应用截图


 实现功能:
  • 创建推流和拉流加速
  • 集成环信IM的聊天室功能
  • 集成UCloud的ULive直播云SDK
  • 在聊天室里集成推流(录制)和拉流(播放)功能

 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?

89e5f4394605d1a330e558e46e7cc6b0.jpg

Dolores海报


相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
  • 单聊
  • 群聊
  • 朋友圈
  • 钱包
  • 直播
  • 红包

凡信.png

项目运行效果图


相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
  • 事件订阅初始化
  • 处理消息的事件
  • 把消息发送到移动客服
  • 处理OAuth回调
  • 把收到的消息发给Slack 用户

 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。

泛聊.png

项目运行效果图


实现功能:
  •  环信SDK的集成与使用
  •  MVP模式的运用
  •  ORM数据库的集成与使用
  •  模块化思想的运用

 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。

baby.png

项目运行效果图


实现功能:
  • 加入Tinker 热修复
  • 加入部分注释
  • 增加长按删除功能
  • 优化Rxbus订阅加载数据
  • 外国友人优化的一些细节
  • 增加了评论功能
  • 优化了相册加载
  • 把登陆注册事件换了个Zip操作符更符合流的思想

相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。

lym.png

项目运行效果图


[b]实现功能:[/b]
  • 好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。
  • 查看群员列表。 
  • 面板内快速查找。 
  • 面板右键自定义事件 
  • 修改签名 
  • 自定义上传背景皮肤 
  • 搜索好友/群 
  • 添加好友/群 
  • 新建群 
  • 消息盒子展示

 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。

电视机.jpg

项目运行效果图


 
实现功能
  • 项目首次启动自动注册登录
  • 拨号盘实现
  • 历史通话记录 TODO
  • 视频通话功能(因为电视不需要语音通话以及最小化)
  • 视频通话的录制
  • 通话截图

 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
 
7
回复

收集基于环信SDK开发的开源项目 开源项目

回眸淡然笑 回复了问题 • 9 人关注 • 5009 次浏览 • 2017-12-03 00:50 • 来自相关话题

8
评论

【新手快速入门】集成环信常见问题+解决方案汇总 常见问题

dujiepeng 发表了文章 • 9127 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
0
回复

android 环信2.0升级到3.0 EMChatManager类中的getMessagesByKeyword方法没有了吗? 环信_Android

回复

happytang1314 发起了问题 • 1 人关注 • 19 次浏览 • 2018-01-17 17:00 • 来自相关话题

0
回复

android 撤回问题 环信_Android

回复

哎呀 发起了问题 • 1 人关注 • 26 次浏览 • 2018-01-17 15:25 • 来自相关话题

0
回复

Could not find class 'com.hyphenate.chat.EMJobService',android在4.2.2手机报这种错 环信_Android

回复

xianghenggang 发起了问题 • 1 人关注 • 21 次浏览 • 2018-01-17 14:09 • 来自相关话题

1
回复

注册用户数 100以内,这?? 环信_管理后台 环信_Android 环信_iOS

nightji 回复了问题 • 2 人关注 • 60 次浏览 • 2018-01-17 11:23 • 来自相关话题

0
回复

android sdk升级 环信_Android

回复

て鈴♂兵つ 发起了问题 • 1 人关注 • 33 次浏览 • 2018-01-16 17:56 • 来自相关话题

0
回复

CO2 Laser Machine manufacturer 环信_Android

回复

hjughR234 发起了问题 • 1 人关注 • 42 次浏览 • 2018-01-16 11:29 • 来自相关话题

0
回复

High quality Cu Clad SS 环信_Android

回复

hjughR234 发起了问题 • 1 人关注 • 29 次浏览 • 2018-01-16 11:25 • 来自相关话题

0
回复

Android集成环信权限问题 环信_Android

回复

追风的人 发起了问题 • 1 人关注 • 42 次浏览 • 2018-01-15 15:32 • 来自相关话题

0
回复

Android 集成环信后访问系统设置权限问题 环信_Android

回复

追风的人 发起了问题 • 1 人关注 • 41 次浏览 • 2018-01-15 11:42 • 来自相关话题

1
回复

环信 react native demo 将RN资源打包到assets出错 react native 环信_WebIM 环信_Android 环信_iOS

回复

لاذع 回复了问题 • 1 人关注 • 73 次浏览 • 2018-01-13 10:08 • 来自相关话题

0
回复

安卓成功集成easeUI后的一些问题 环信_Android

回复

Way Back Into Love 发起了问题 • 1 人关注 • 73 次浏览 • 2018-01-11 15:41 • 来自相关话题

1
回复

监听报NETWORK_ERROR=2 onError: 201, error: User is not login 环信_Android

beyond 回复了问题 • 2 人关注 • 90 次浏览 • 2018-01-09 18:25 • 来自相关话题

1
回复

Android端环信集成百度地图的问题 环信_Android

看昵称就知道你是个可爱 回复了问题 • 2 人关注 • 66 次浏览 • 2018-01-09 10:46 • 来自相关话题

0
回复

AsyncTaskCompat找不到 环信_Android

回复

看昵称就知道你是个可爱 发起了问题 • 1 人关注 • 83 次浏览 • 2018-01-08 11:16 • 来自相关话题

1
回复

1cccccccc 环信_Android

beyond 回复了问题 • 2 人关注 • 87 次浏览 • 2018-01-08 10:42 • 来自相关话题

3
最佳

环信初始化报错。android4.4 环信_Android

jackydu 回复了问题 • 3 人关注 • 1467 次浏览 • 2018-01-06 20:09 • 来自相关话题

0
回复

环信视频聊天怎么加滤镜? 环信_iOS 环信_Android

回复

jared 发起了问题 • 1 人关注 • 92 次浏览 • 2018-01-06 17:15 • 来自相关话题

1
回复

安卓端的用户全部都显示null,登不进去 环信_Android

回复

心愿♥ 回复了问题 • 1 人关注 • 105 次浏览 • 2018-01-06 16:40 • 来自相关话题

1
回复

客服Android,SDK,线上崩溃 环信_Android

baoshu 回复了问题 • 2 人关注 • 136 次浏览 • 2018-01-05 11:11 • 来自相关话题

2
回复

android注册总返回EMError.GENERAL_ERROR 环信_Android

lovecyg123 回复了问题 • 3 人关注 • 798 次浏览 • 2018-01-04 14:04 • 来自相关话题

1
评论

一款基于环信开发的APP-超级家委会 环信_Android 环信_iOS 开源项目 SDK Hyphenate

magic_陌 发表了文章 • 90 次浏览 • 2018-01-04 10:02 • 来自相关话题

【产品简介】
 
“超级家委会”是一款基于环信开发的集活动、聊天、项目管理为一体的APP。

如需项目合作,请联系:石锋 18616870207(微信同号)

【功能介绍】

消息

享畅聊,与微信一样好用的通讯功能,免费即时沟通,但在这里只聊工作,去除娱乐化,支持单聊、普通群聊、活动群聊、部门群聊、团队群聊。






【单聊】和好友实时沟通
【群聊】邀请特定的人组建群聊
【活动群聊】对活动感兴趣的人员可以一起畅所欲言,也可和主办方沟通疑问,活动群聊 页面可一键直达活动
【部门/团队群聊】提供团队内部聊天功能,随时与同伴和团队沟通和讨论工作,让沟通更顺畅
【系统消息】实时接收重要信息的通知,如审核申请,报名信息,关注,评论等,并及时做出反馈;
 
实现功能
好友/群内的文字、表情、图片、位置、收藏、名片发送和接收查看群信息快速查找新建群 系统消息推送删除会话获取未读消息@功能正在实现中...





















 
项目

提供了包括项目管理、行政办公、教育培训、营销工具等基本应用和丰富的插件功能,通过精心设计打造出体验出色的应用,且每个项目可直达相应群聊,让你和团队成员随时随地参与协作。





 
【快速立项】明确工作目标并创建项目 ,邀请团队成员加入项目一起来开展工作;
【任务管理】新建任务,指派执行者和添加参与者,添加并更新相关任务信息;
【工作安排】创建「日程」来安排会议、 记录外出和预约重点活动等等工作,也随时了解其他项目成员的工作安排;
【进展同步】通过任务列表随时关注项目进展的更新,进入项目查看具体的进展信息;
【插件丰富】丰富的移动办公应用接入,任务、签到、审批、笔记、文件、费用、班级、学生老师、课程、消课等,应有尽有。
 
活动
您可以参加活动聚会,学习一项新技能,带上孩子发现未知…更特别的是,您还可以自己组织发起活动,呼朋唤友一起玩耍。





 
【主办方】提供从发布活动、活动推广、报名管理到财务管理等全流程完整解决方案
【参与者】找到感兴趣的活动,志同道合的朋友,长假远行,家长课堂,周边游,培训课 程,聚会沙龙,冬夏令营,手工课程,多种活动,丰富娱乐生活
【报名信息 随时查收】支持自定义设置报名表单,报名信息详情可查,支持导出
【精彩活动 乐享群聊】一起进入活动群聊,可以和其他参与者一起互动
 
联系人
搜索好友/群 添加好友/群 发送/接受好友申请










 
【技术实现】

本项目是基于官方最新SDK Hyphenate 进行开发 页面效果基于EasyUI调整 和微信页面效果看齐。
 
主要实现功能 
 
1、注册 登录 自动登录 重连 退出登录EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];
if (error==nil) {
NSLog(@"注册成功");
}
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error) {
NSLog(@"登录成功");
}

自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。

SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{
[[EMClient sharedClient].options setIsAutoLogin:YES];
}
2. 消息
IM 交互实体,在 SDK 中对应的类型是 EMMessage。EMMessage 由 EMMessageBody 组成。

构造文字消息 构造图片消息 构造图片消息 构造位置消息 构造语音消息 构造视频消息 构造扩展消息(系统消息)构造文字消息
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造图片消息
EMImageMessageBody *body = [[EMImageMessageBody alloc] initWithData:data displayName:@"image.png"];
// body.compressionRatio = 1.0f; 1.0表示发送原图不压缩。默认值是0.6,压缩的倍数是0.6倍
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造扩展消息
// 以单聊消息举例
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息
//message.chatType = EMChatTypeGroupChat;// 设置为群聊消息
//message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息
message.ext = @{@"key":@"value"}; // 扩展消息部分

扩展消息主要用要系统消息里
3. 会话

操作聊天消息 EMMessage 的容器,在 SDK 中对应的类型是 EMConversation。

新建 、 获取一个会话 (根据 conversationId 创建一个 conversation)[[EMClient sharedClient].chatManager getConversation:@"8001" type:EMConversationTypeChat createIfNotExist:YES];
//EMConversationTypeChat 单聊会话
//EMConversationTypeGroupChat 群聊会话
//EMConversationTypeChatRoom 聊天室会话


getConversation:创建与8001的会话
type:会话类型
createIfNotExist:不存在是否创建
 
4. 删除会话

删除单个会话[[EMClient sharedClient].chatManager deleteConversation:@"8001" isDeleteMessages:YES completion:^(NSString *aConversationId, EMError *aError){
//code
}];


deleteConversation: 删除与8001的会话
deleteMessages: 删除会话中的消息
 
5. 获取会话列表

获取所有会话 (内存中有则从内存中取,否则从db中取)NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];
6. 获取会话未读消息 [EMConversation unreadMessagesCount]; 显示红点
7. 聊天 (发送消息 接收消息 解析普通消息 解析扩展消息)

登录成功之后才能进行聊天操作。发消息时,单聊和群聊调用的是统一接口,区别只是要设置下 message.chatType。/*!
@property
@brief 发送消息
@discussion
异步方法
*/
- (void)sendMessage:(EMMessage *)aMessage
progress:(void (^)(int progress))aProgressBlock
completion:(void (^)(EMMessage *message, EMError *error))aCompletionBlock;

//调用:[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {}];

//消息回调:EMChatManagerDelegate

//移除消息回调
[[EMClient sharedClient].chatManager removeDelegate:self];

//注册消息回调
[[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];

/*!
@method
@brief 接收到一条及以上非cmd消息
*/
- (void)messagesDidReceive:(NSArray *)aMessages;

解析普通消息
// 收到消息的回调,带有附件类型的消息可以用 SDK 提供的下载附件方法下载(后面会讲到)
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
EMMessageBody *msgBody = message.body;
switch (msgBody.type) {
case EMMessageBodyTypeText:
{
// 收到的文字消息
EMTextMessageBody *textBody = (EMTextMessageBody *)msgBody;
NSString *txt = textBody.text;
NSLog(@"收到的文字是 txt -- %@",txt);
}
break;
case EMMessageBodyTypeImage:

解析扩展消息
- (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages {
for (EMMessage *message in aCmdMessages) {
// cmd消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"cmd消息中的扩展属性是 -- %@",ext)
}
}
// 收到消息回调
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
// 消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"消息中的扩展属性是 -- %@",ext);
}
}



 8. 好友管理 (本项目的好友管理是自己服务器上管理的)

9. 好友申请

发送好友申请 EMError *error = [[EMClient sharedClient].contactManager addContact:@"6001" message:@"我想加您为好友"];
if (!error) {
NSLog(@"添加成功");
}
监听加好友请求 (项目里面 发送系统消息)/*!
* 用户A发送加用户B为好友的申请,用户B会收到这个回调
*
* @param aUsername 用户名
* @param aMessage 附属信息
*/
- (void)friendRequestDidReceiveFromUser:(NSString *)aUsername
message:(NSString *)aMessage;
同意加好友申请 EMError *error = [[EMClient sharedClient].contactManager acceptInvitationForUsername:@"8001"];
if (!error) {
NSLog(@"发送同意成功");
}
10 群组管理
创建群 后台创建的
加入群组 添人进群 退出群组 解散群组 修改群描述 获取群组成员列表

11 群组管理
1.后台配置推送证书
2.代码配置 APNs 使用的推送证书。
3.代码注册离线推送

【联系我们】
如需项目合作,请联系
石锋 18616870207 (微信同号) 查看全部
【产品简介】
 
“超级家委会”是一款基于环信开发的集活动、聊天、项目管理为一体的APP。

如需项目合作,请联系:石锋 18616870207(微信同号)

【功能介绍】

消息

享畅聊,与微信一样好用的通讯功能,免费即时沟通,但在这里只聊工作,去除娱乐化,支持单聊、普通群聊、活动群聊、部门群聊、团队群聊。

聊天.jpg


【单聊】和好友实时沟通
【群聊】邀请特定的人组建群聊
【活动群聊】对活动感兴趣的人员可以一起畅所欲言,也可和主办方沟通疑问,活动群聊 页面可一键直达活动
【部门/团队群聊】提供团队内部聊天功能,随时与同伴和团队沟通和讨论工作,让沟通更顺畅
【系统消息】实时接收重要信息的通知,如审核申请,报名信息,关注,评论等,并及时做出反馈;
 
实现功能
  • 好友/群内的文字、表情、图片、位置、收藏、名片发送和接收
  • 查看群信息
  • 快速查找
  • 新建群 
  • 系统消息推送
  • 删除会话
  • 获取未读消息
  • @功能正在实现中...


聊天功能介绍1.jpg

聊天功能介绍2.jpg

聊天功能介绍3.jpg

聊天功能介绍4.jpg

聊天功能介绍6.jpg

 
项目

提供了包括项目管理、行政办公、教育培训、营销工具等基本应用和丰富的插件功能,通过精心设计打造出体验出色的应用,且每个项目可直达相应群聊,让你和团队成员随时随地参与协作。

聊天功能介绍8.jpg

 
【快速立项】明确工作目标并创建项目 ,邀请团队成员加入项目一起来开展工作;
【任务管理】新建任务,指派执行者和添加参与者,添加并更新相关任务信息;
【工作安排】创建「日程」来安排会议、 记录外出和预约重点活动等等工作,也随时了解其他项目成员的工作安排;
【进展同步】通过任务列表随时关注项目进展的更新,进入项目查看具体的进展信息;
【插件丰富】丰富的移动办公应用接入,任务、签到、审批、笔记、文件、费用、班级、学生老师、课程、消课等,应有尽有。
 
活动
您可以参加活动聚会,学习一项新技能,带上孩子发现未知…更特别的是,您还可以自己组织发起活动,呼朋唤友一起玩耍。

聊天功能介绍9.jpg

 
【主办方】提供从发布活动、活动推广、报名管理到财务管理等全流程完整解决方案
【参与者】找到感兴趣的活动,志同道合的朋友,长假远行,家长课堂,周边游,培训课 程,聚会沙龙,冬夏令营,手工课程,多种活动,丰富娱乐生活
【报名信息 随时查收】支持自定义设置报名表单,报名信息详情可查,支持导出
【精彩活动 乐享群聊】一起进入活动群聊,可以和其他参与者一起互动
 
联系人
  • 搜索好友/群 
  • 添加好友/群 
  • 发送/接受好友申请


聊天功能介绍10.jpg


聊天功能介绍5.jpg

 
【技术实现】

本项目是基于官方最新SDK Hyphenate 进行开发 页面效果基于EasyUI调整 和微信页面效果看齐。
 
主要实现功能 
 
1、注册 登录 自动登录 重连 退出登录
EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];
if (error==nil) {
NSLog(@"注册成功");
}
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error) {
NSLog(@"登录成功");
}

自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。

SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{
[[EMClient sharedClient].options setIsAutoLogin:YES];
}

2. 消息
IM 交互实体,在 SDK 中对应的类型是 EMMessage。EMMessage 由 EMMessageBody 组成。

构造文字消息 构造图片消息 构造图片消息 构造位置消息 构造语音消息 构造视频消息 构造扩展消息(系统消息)
构造文字消息
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造图片消息
EMImageMessageBody *body = [[EMImageMessageBody alloc] initWithData:data displayName:@"image.png"];
// body.compressionRatio = 1.0f; 1.0表示发送原图不压缩。默认值是0.6,压缩的倍数是0.6倍
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造扩展消息
// 以单聊消息举例
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息
//message.chatType = EMChatTypeGroupChat;// 设置为群聊消息
//message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息
message.ext = @{@"key":@"value"}; // 扩展消息部分

扩展消息主要用要系统消息里

3. 会话

操作聊天消息 EMMessage 的容器,在 SDK 中对应的类型是 EMConversation。

新建 、 获取一个会话 (根据 conversationId 创建一个 conversation)
[[EMClient sharedClient].chatManager getConversation:@"8001" type:EMConversationTypeChat createIfNotExist:YES];
//EMConversationTypeChat 单聊会话
//EMConversationTypeGroupChat 群聊会话
//EMConversationTypeChatRoom 聊天室会话


getConversation:创建与8001的会话
type:会话类型
createIfNotExist:不存在是否创建
 
4. 删除会话

删除单个会话
[[EMClient sharedClient].chatManager deleteConversation:@"8001" isDeleteMessages:YES completion:^(NSString *aConversationId, EMError *aError){
//code
}];


deleteConversation: 删除与8001的会话
deleteMessages: 删除会话中的消息
 
5. 获取会话列表

获取所有会话 (内存中有则从内存中取,否则从db中取)
NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];

6. 获取会话未读消息 
[EMConversation unreadMessagesCount]; 显示红点       

7. 聊天 (发送消息 接收消息 解析普通消息 解析扩展消息)

登录成功之后才能进行聊天操作。发消息时,单聊和群聊调用的是统一接口,区别只是要设置下 message.chatType。
/*!
@property
@brief 发送消息
@discussion
异步方法
*/
- (void)sendMessage:(EMMessage *)aMessage
progress:(void (^)(int progress))aProgressBlock
completion:(void (^)(EMMessage *message, EMError *error))aCompletionBlock;

//调用:[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {}];

//消息回调:EMChatManagerDelegate

//移除消息回调
[[EMClient sharedClient].chatManager removeDelegate:self];

//注册消息回调
[[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];

/*!
@method
@brief 接收到一条及以上非cmd消息
*/
- (void)messagesDidReceive:(NSArray *)aMessages;

解析普通消息
// 收到消息的回调,带有附件类型的消息可以用 SDK 提供的下载附件方法下载(后面会讲到)
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
EMMessageBody *msgBody = message.body;
switch (msgBody.type) {
case EMMessageBodyTypeText:
{
// 收到的文字消息
EMTextMessageBody *textBody = (EMTextMessageBody *)msgBody;
NSString *txt = textBody.text;
NSLog(@"收到的文字是 txt -- %@",txt);
}
break;
case EMMessageBodyTypeImage:

解析扩展消息
- (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages {
for (EMMessage *message in aCmdMessages) {
// cmd消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"cmd消息中的扩展属性是 -- %@",ext)
}
}
// 收到消息回调
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
// 消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"消息中的扩展属性是 -- %@",ext);
}
}



 8. 好友管理 (本项目的好友管理是自己服务器上管理的)

9. 好友申请

发送好友申请
 EMError *error = [[EMClient sharedClient].contactManager addContact:@"6001" message:@"我想加您为好友"];
if (!error) {
NSLog(@"添加成功");
}

监听加好友请求 (项目里面 发送系统消息)
/*!
* 用户A发送加用户B为好友的申请,用户B会收到这个回调
*
* @param aUsername 用户名
* @param aMessage 附属信息
*/
- (void)friendRequestDidReceiveFromUser:(NSString *)aUsername
message:(NSString *)aMessage;

同意加好友申请 
EMError *error = [[EMClient sharedClient].contactManager acceptInvitationForUsername:@"8001"];
if (!error) {
NSLog(@"发送同意成功");
}

10 群组管理
创建群 后台创建的
加入群组 添人进群 退出群组 解散群组 修改群描述 获取群组成员列表

11 群组管理
1.后台配置推送证书
2.代码配置 APNs 使用的推送证书。
3.代码注册离线推送

【联系我们】
如需项目合作,请联系
石锋 18616870207 (微信同号)
1
回复

Android自定义消息 环信_Android

回复

心事 回复了问题 • 1 人关注 • 106 次浏览 • 2018-01-03 16:55 • 来自相关话题

条新动态, 点击查看
go

go 回答了问题 • 2016-10-19 11:03 • 5 个回复 不感兴趣

语音通话、视频通话崩溃

赞同来自:

更新环信新版本3.2.0之后,暂时没有发现语音通话崩溃问题;
非常感谢环信团队的努力.
更新环信新版本3.2.0之后,暂时没有发现语音通话崩溃问题;
非常感谢环信团队的努力.
w1072654398

w1072654398 回答了问题 • 2016-12-17 15:33 • 2 个回复 不感兴趣

环信客服 在哪设置用户的头像和昵称?

赞同来自:

DemoHelper 里面有个叫getUserInfo()的方法 在这里进行设置
DemoHelper 里面有个叫getUserInfo()的方法 在这里进行设置
zhuhy

zhuhy 回答了问题 • 2017-01-20 13:41 • 3 个回复 不感兴趣

环信初始化报错。android4.4

赞同来自:

主要是由于一个项目引入了多个其他的 library 导致,当其他的 library 也有不同的 so 库时,环信只有三种 so 库,所以和其他第三方 sdk 同时使用会出现这个,
下边这个地址有详细分析及造成的原因,可以多研究下http://www.jians... 显示全部 »
主要是由于一个项目引入了多个其他的 library 导致,当其他的 library 也有不同的 so 库时,环信只有三种 so 库,所以和其他第三方 sdk 同时使用会出现这个,
下边这个地址有详细分析及造成的原因,可以多研究下http://www.jianshu.com/p/b9a524f24b7e
混淆加上
-keep class com.hyphenate.** {*;}
-keep class com.superrtc.** {*;}
混淆加上
-keep class com.hyphenate.** {*;}
-keep class com.superrtc.** {*;}
您好,android端主动发送消息接受不到,指的是哪里接收不到,请描述详细点
您好,android端主动发送消息接受不到,指的是哪里接收不到,请描述详细点
geri_yang

geri_yang 回答了问题 • 2017-07-24 19:33 • 1 个回复 不感兴趣

环信登录报200

赞同来自:

您好,登录失败报200user is already login错误是因为设备之前就登录成功过,没有调用logout退出登录,又再次调用的login登录造成的,请确认下是否没有调用logout就又调用了logoin
您好,登录失败报200user is already login错误是因为设备之前就登录成功过,没有调用logout退出登录,又再次调用的login登录造成的,请确认下是否没有调用logout就又调用了logoin
因为业务需求,只能在服务器发送这条消息,不能在应用端发送
因为业务需求,只能在服务器发送这条消息,不能在应用端发送
您好,rest没有登录的接口,只能在客户端登录,请知悉
您好,rest没有登录的接口,只能在客户端登录,请知悉
geri_yang

geri_yang 回答了问题 • 2017-09-18 16:48 • 1 个回复 不感兴趣

iOS和安卓如何隐藏发送位置信息的按钮?

赞同来自:

您好,这个是在easeui里处理,您把删了就可以了,android easeui如图
8009
您好,这个是在easeui里处理,您把删了就可以了,android easeui如图
8009
您好,刷新adapter需要您自己调用adapter的刷新方法,请知悉
您好,刷新adapter需要您自己调用adapter的刷新方法,请知悉
您好,您是问消息怎么显示?还是问conversation怎么显示呢?如果是消息的话您在消息监听里刷新adapter就可以了,如果是conversation的话调用getAllConversation获取展示就可以了
您好,您是问消息怎么显示?还是问conversation怎么显示呢?如果是消息的话您在消息监听里刷新adapter就可以了,如果是conversation的话调用getAllConversation获取展示就可以了
 您好,您是说修改了ext里的数据吗?修改后调用updateMessage()更新就可以了
 您好,您是说修改了ext里的数据吗?修改后调用updateMessage()更新就可以了
您好,这个监听是实时监听连接状态的,如果有其他设备登录了已登录的账号,就会触发这个监听,以及环信SDK默认就是一个账号只能登录一个账号的
您好,这个监听是实时监听连接状态的,如果有其他设备登录了已登录的账号,就会触发这个监听,以及环信SDK默认就是一个账号只能登录一个账号的
geri_yang

geri_yang 回答了问题 • 2017-10-17 19:28 • 1 个回复 不感兴趣

环信登录时空指针异常

赞同来自:

您好,
1、login报什么错呢?崩溃日志提供下
2、EMClient.getInstance().createAccount(id,pwd)需要在子线程调用,请知悉
您好,
1、login报什么错呢?崩溃日志提供下
2、EMClient.getInstance().createAccount(id,pwd)需要在子线程调用,请知悉
geri_yang

geri_yang 回答了问题 • 2017-10-17 19:21 • 1 个回复 不感兴趣

环信退出登陆的的问题

赞同来自:

您好,这个错误是因为在调logout时触发了通话挂断的方法,但是实际却没有正在通话的事件,才导致了这个问题,这个异常经过try...catch处理了,所以不会造成崩溃,您排查下您代码的实现逻辑
您好,这个错误是因为在调logout时触发了通话挂断的方法,但是实际却没有正在通话的事件,才导致了这个问题,这个异常经过try...catch处理了,所以不会造成崩溃,您排查下您代码的实现逻辑
需要转换下的,
DateUtils.getTimestampString(new Date(message.getMsgTime()))
需要转换下的,
DateUtils.getTimestampString(new Date(message.getMsgTime()))
geri_yang

geri_yang 回答了问题 • 2017-10-25 19:48 • 2 个回复 不感兴趣

如何自定义聊天消息框?

赞同来自:

您好,可以自定义消息,您可以发送文本消息,然后其他的数据放在消息的扩展里面发送,然后在扩展里加个标识,标识消息类型,展示时根据这个标识加载对应的item样式就可以了
您好,可以自定义消息,您可以发送文本消息,然后其他的数据放在消息的扩展里面发送,然后在扩展里加个标识,标识消息类型,展示时根据这个标识加载对应的item样式就可以了
geri_yang

geri_yang 回答了问题 • 2017-10-25 19:44 • 1 个回复 不感兴趣

会话列表fragmentlist怎么获取推送提示

赞同来自:

您好,会话页面的消息实时刷新需要在app层处理,需要在application中或是mainactivity中注册消息监听,监听到消息时通知会话列表刷新,您可以参考下环信demo的处理,如图
8097
您好,会话页面的消息实时刷新需要在app层处理,需要在application中或是mainactivity中注册消息监听,监听到消息时通知会话列表刷新,您可以参考下环信demo的处理,如图
8097
geri_yang

geri_yang 回答了问题 • 2017-11-03 18:48 • 1 个回复 不感兴趣

需要红包部分的本地UI依赖

赞同来自:

您好,不支持本地引用,只支持gradle的方式依赖,如果想依赖UI库,您需要把环信demo里的红包库导入进去
您好,不支持本地引用,只支持gradle的方式依赖,如果想依赖UI库,您需要把环信demo里的红包库导入进去
geri_yang

geri_yang 回答了问题 • 2017-11-03 18:43 • 2 个回复 不感兴趣

创建聊天室失败 you have no permission to do this

赞同来自:

您好,您说的离线是什么情况下离线呢?如果是app被kill掉,那是收不到的,再次启动SDK会检测如果有没有退出的聊天室SDK会自动退出的,请知悉
您好,您说的离线是什么情况下离线呢?如果是app被kill掉,那是收不到的,再次启动SDK会检测如果有没有退出的聊天室SDK会自动退出的,请知悉
geri_yang

geri_yang 回答了问题 • 2017-11-03 18:40 • 1 个回复 不感兴趣

android端会话列表崩溃

赞同来自:

您好,这个角标越界了,您检查下
您好,这个角标越界了,您检查下
geri_yang

geri_yang 回答了问题 • 2017-11-15 18:39 • 2 个回复 不感兴趣

如何在环信中集成发送店铺的消息类型呢?

赞同来自:

您好,需要自定义消息类型,您可以用txt类型的消息,在消息扩展里传其他相关的数据,然后在扩展里定义一个标识字段,表示是这个类型的消息,然后根据这个标识展示对应的item就可以了
您好,需要自定义消息类型,您可以用txt类型的消息,在消息扩展里传其他相关的数据,然后在扩展里定义一个标识字段,表示是这个类型的消息,然后根据这个标识展示对应的item就可以了
baoshu

baoshu 回答了问题 • 2017-11-30 16:42 • 1 个回复 不感兴趣

环信V3.0 创建群如何获取群id?

赞同来自:

可以参考环信提供的api参考文档 http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_group.html#a7eef56d445cba6917... 显示全部 »
可以参考环信提供的api参考文档 http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_group.html#a7eef56d445cba69173999070504e6e48
 EMGroup.getGroupId ( )
我也是这种情况    提工单     一周才把问题解决  汗颜!!
我也是这种情况    提工单     一周才把问题解决  汗颜!!
0
评论

2017 本土开源大盘点!年度编程语言和开源项目 TOP 榜 开源 2017 码云

beyond 发表了文章 • 129 次浏览 • 2018-01-09 15:10 • 来自相关话题

摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。




在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布





2. 国内开发者的性别分布
 





3. 2017 年新增756 K 开源项目——Star 数增长排行
 





4. 2017 年新增756 K 开源项目——Fork 数增长排行





5. 2017 年,更多人开始参与开源项目​





6. 国内开源项目的语言占比是什么情况?​





7. 国内开源项目的功能分类是什么情况?​





8.国内开发者最喜爱的编程语言​





9. 2017 年增速最快的语言





本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。 查看全部
摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。

盘点.jpg

在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布


开发者.png


2. 国内开发者的性别分布
 


性别.png


3. 2017 年新增756 K 开源项目——Star 数增长排行
 


star.png


4. 2017 年新增756 K 开源项目——Fork 数增长排行


fork.png


5. 2017 年,更多人开始参与开源项目​


参与.png


6. 国内开源项目的语言占比是什么情况?​


预言.png


7. 国内开源项目的功能分类是什么情况?​


功能.png


8.国内开发者最喜爱的编程语言​


语言.png


9. 2017 年增速最快的语言


增长.png


本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。
0
评论

2017环信八大开源项目源码放出:两个已获融资,单个20W+关注 开源项目

beyond 发表了文章 • 409 次浏览 • 2017-12-29 14:27 • 来自相关话题

“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!
 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。




环信公司前台一角
2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~




应用截图
 实现功能:
创建推流和拉流加速集成环信IM的聊天室功能集成UCloud的ULive直播云SDK在聊天室里集成推流(录制)和拉流(播放)功能
 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?




Dolores海报
相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
单聊群聊朋友圈钱包直播红包




项目运行效果图
相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
事件订阅初始化处理消息的事件把消息发送到移动客服处理OAuth回调把收到的消息发给Slack 用户
 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。




项目运行效果图
实现功能:
 环信SDK的集成与使用 MVP模式的运用 ORM数据库的集成与使用 模块化思想的运用
 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。




项目运行效果图
实现功能:
加入Tinker 热修复加入部分注释增加长按删除功能优化Rxbus订阅加载数据外国友人优化的一些细节增加了评论功能优化了相册加载把登陆注册事件换了个Zip操作符更符合流的思想
相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。




项目运行效果图
[b]实现功能:[/b]
好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。查看群员列表。 面板内快速查找。 面板右键自定义事件 修改签名 自定义上传背景皮肤 搜索好友/群 添加好友/群 新建群 消息盒子展示
 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。




项目运行效果图
 
实现功能
项目首次启动自动注册登录拨号盘实现历史通话记录 TODO视频通话功能(因为电视不需要语音通话以及最小化)视频通话的录制通话截图
 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
  查看全部
“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!

 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。

微信图片_20171229142123.jpg

环信公司前台一角


2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~

小马直播间.png

应用截图


 实现功能:
  • 创建推流和拉流加速
  • 集成环信IM的聊天室功能
  • 集成UCloud的ULive直播云SDK
  • 在聊天室里集成推流(录制)和拉流(播放)功能

 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?

89e5f4394605d1a330e558e46e7cc6b0.jpg

Dolores海报


相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
  • 单聊
  • 群聊
  • 朋友圈
  • 钱包
  • 直播
  • 红包

凡信.png

项目运行效果图


相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
  • 事件订阅初始化
  • 处理消息的事件
  • 把消息发送到移动客服
  • 处理OAuth回调
  • 把收到的消息发给Slack 用户

 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。

泛聊.png

项目运行效果图


实现功能:
  •  环信SDK的集成与使用
  •  MVP模式的运用
  •  ORM数据库的集成与使用
  •  模块化思想的运用

 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。

baby.png

项目运行效果图


实现功能:
  • 加入Tinker 热修复
  • 加入部分注释
  • 增加长按删除功能
  • 优化Rxbus订阅加载数据
  • 外国友人优化的一些细节
  • 增加了评论功能
  • 优化了相册加载
  • 把登陆注册事件换了个Zip操作符更符合流的思想

相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。

lym.png

项目运行效果图


[b]实现功能:[/b]
  • 好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。
  • 查看群员列表。 
  • 面板内快速查找。 
  • 面板右键自定义事件 
  • 修改签名 
  • 自定义上传背景皮肤 
  • 搜索好友/群 
  • 添加好友/群 
  • 新建群 
  • 消息盒子展示

 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。

电视机.jpg

项目运行效果图


 
实现功能
  • 项目首次启动自动注册登录
  • 拨号盘实现
  • 历史通话记录 TODO
  • 视频通话功能(因为电视不需要语音通话以及最小化)
  • 视频通话的录制
  • 通话截图

 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
 
8
评论

【新手快速入门】集成环信常见问题+解决方案汇总 常见问题

dujiepeng 发表了文章 • 9127 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
7
回复

收集基于环信SDK开发的开源项目 开源项目

回眸淡然笑 回复了问题 • 9 人关注 • 5009 次浏览 • 2017-12-03 00:50 • 来自相关话题

0
评论

2017 本土开源大盘点!年度编程语言和开源项目 TOP 榜 开源 2017 码云

beyond 发表了文章 • 129 次浏览 • 2018-01-09 15:10 • 来自相关话题

摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。




在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布





2. 国内开发者的性别分布
 





3. 2017 年新增756 K 开源项目——Star 数增长排行
 





4. 2017 年新增756 K 开源项目——Fork 数增长排行





5. 2017 年,更多人开始参与开源项目​





6. 国内开源项目的语言占比是什么情况?​





7. 国内开源项目的功能分类是什么情况?​





8.国内开发者最喜爱的编程语言​





9. 2017 年增速最快的语言





本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。 查看全部
摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。

盘点.jpg

在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布


开发者.png


2. 国内开发者的性别分布
 


性别.png


3. 2017 年新增756 K 开源项目——Star 数增长排行
 


star.png


4. 2017 年新增756 K 开源项目——Fork 数增长排行


fork.png


5. 2017 年,更多人开始参与开源项目​


参与.png


6. 国内开源项目的语言占比是什么情况?​


预言.png


7. 国内开源项目的功能分类是什么情况?​


功能.png


8.国内开发者最喜爱的编程语言​


语言.png


9. 2017 年增速最快的语言


增长.png


本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。
0
评论

2017环信八大开源项目源码放出:两个已获融资,单个20W+关注 开源项目

beyond 发表了文章 • 409 次浏览 • 2017-12-29 14:27 • 来自相关话题

“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!
 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。




环信公司前台一角
2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~




应用截图
 实现功能:
创建推流和拉流加速集成环信IM的聊天室功能集成UCloud的ULive直播云SDK在聊天室里集成推流(录制)和拉流(播放)功能
 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?




Dolores海报
相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
单聊群聊朋友圈钱包直播红包




项目运行效果图
相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
事件订阅初始化处理消息的事件把消息发送到移动客服处理OAuth回调把收到的消息发给Slack 用户
 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。




项目运行效果图
实现功能:
 环信SDK的集成与使用 MVP模式的运用 ORM数据库的集成与使用 模块化思想的运用
 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。




项目运行效果图
实现功能:
加入Tinker 热修复加入部分注释增加长按删除功能优化Rxbus订阅加载数据外国友人优化的一些细节增加了评论功能优化了相册加载把登陆注册事件换了个Zip操作符更符合流的思想
相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。




项目运行效果图
[b]实现功能:[/b]
好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。查看群员列表。 面板内快速查找。 面板右键自定义事件 修改签名 自定义上传背景皮肤 搜索好友/群 添加好友/群 新建群 消息盒子展示
 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。




项目运行效果图
 
实现功能
项目首次启动自动注册登录拨号盘实现历史通话记录 TODO视频通话功能(因为电视不需要语音通话以及最小化)视频通话的录制通话截图
 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
  查看全部
“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!

 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。

微信图片_20171229142123.jpg

环信公司前台一角


2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~

小马直播间.png

应用截图


 实现功能:
  • 创建推流和拉流加速
  • 集成环信IM的聊天室功能
  • 集成UCloud的ULive直播云SDK
  • 在聊天室里集成推流(录制)和拉流(播放)功能

 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?

89e5f4394605d1a330e558e46e7cc6b0.jpg

Dolores海报


相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
  • 单聊
  • 群聊
  • 朋友圈
  • 钱包
  • 直播
  • 红包

凡信.png

项目运行效果图


相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
  • 事件订阅初始化
  • 处理消息的事件
  • 把消息发送到移动客服
  • 处理OAuth回调
  • 把收到的消息发给Slack 用户

 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。

泛聊.png

项目运行效果图


实现功能:
  •  环信SDK的集成与使用
  •  MVP模式的运用
  •  ORM数据库的集成与使用
  •  模块化思想的运用

 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。

baby.png

项目运行效果图


实现功能:
  • 加入Tinker 热修复
  • 加入部分注释
  • 增加长按删除功能
  • 优化Rxbus订阅加载数据
  • 外国友人优化的一些细节
  • 增加了评论功能
  • 优化了相册加载
  • 把登陆注册事件换了个Zip操作符更符合流的思想

相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。

lym.png

项目运行效果图


[b]实现功能:[/b]
  • 好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。
  • 查看群员列表。 
  • 面板内快速查找。 
  • 面板右键自定义事件 
  • 修改签名 
  • 自定义上传背景皮肤 
  • 搜索好友/群 
  • 添加好友/群 
  • 新建群 
  • 消息盒子展示

 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。

电视机.jpg

项目运行效果图


 
实现功能
  • 项目首次启动自动注册登录
  • 拨号盘实现
  • 历史通话记录 TODO
  • 视频通话功能(因为电视不需要语音通话以及最小化)
  • 视频通话的录制
  • 通话截图

 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
 
7
回复

收集基于环信SDK开发的开源项目 开源项目

回复

回眸淡然笑 回复了问题 • 9 人关注 • 5009 次浏览 • 2017-12-03 00:50 • 来自相关话题

8
评论

【新手快速入门】集成环信常见问题+解决方案汇总 常见问题

dujiepeng 发表了文章 • 9127 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
0
回复

android 环信2.0升级到3.0 EMChatManager类中的getMessagesByKeyword方法没有了吗? 环信_Android

回复

happytang1314 发起了问题 • 1 人关注 • 19 次浏览 • 2018-01-17 17:00 • 来自相关话题

0
回复

android 撤回问题 环信_Android

回复

哎呀 发起了问题 • 1 人关注 • 26 次浏览 • 2018-01-17 15:25 • 来自相关话题

0
回复

Could not find class 'com.hyphenate.chat.EMJobService',android在4.2.2手机报这种错 环信_Android

回复

xianghenggang 发起了问题 • 1 人关注 • 21 次浏览 • 2018-01-17 14:09 • 来自相关话题

1
回复

注册用户数 100以内,这?? 环信_管理后台 环信_Android 环信_iOS

回复

nightji 回复了问题 • 2 人关注 • 60 次浏览 • 2018-01-17 11:23 • 来自相关话题

0
回复

android sdk升级 环信_Android

回复

て鈴♂兵つ 发起了问题 • 1 人关注 • 33 次浏览 • 2018-01-16 17:56 • 来自相关话题

0
回复

CO2 Laser Machine manufacturer 环信_Android

回复

hjughR234 发起了问题 • 1 人关注 • 42 次浏览 • 2018-01-16 11:29 • 来自相关话题

0
回复

High quality Cu Clad SS 环信_Android

回复

hjughR234 发起了问题 • 1 人关注 • 29 次浏览 • 2018-01-16 11:25 • 来自相关话题

0
回复

Android集成环信权限问题 环信_Android

回复

追风的人 发起了问题 • 1 人关注 • 42 次浏览 • 2018-01-15 15:32 • 来自相关话题

0
回复

Android 集成环信后访问系统设置权限问题 环信_Android

回复

追风的人 发起了问题 • 1 人关注 • 41 次浏览 • 2018-01-15 11:42 • 来自相关话题

1
回复

环信 react native demo 将RN资源打包到assets出错 react native 环信_WebIM 环信_Android 环信_iOS

回复

لاذع 回复了问题 • 1 人关注 • 73 次浏览 • 2018-01-13 10:08 • 来自相关话题

0
回复

安卓成功集成easeUI后的一些问题 环信_Android

回复

Way Back Into Love 发起了问题 • 1 人关注 • 73 次浏览 • 2018-01-11 15:41 • 来自相关话题

1
回复

监听报NETWORK_ERROR=2 onError: 201, error: User is not login 环信_Android

回复

beyond 回复了问题 • 2 人关注 • 90 次浏览 • 2018-01-09 18:25 • 来自相关话题

1
回复

Android端环信集成百度地图的问题 环信_Android

回复

看昵称就知道你是个可爱 回复了问题 • 2 人关注 • 66 次浏览 • 2018-01-09 10:46 • 来自相关话题

0
回复

AsyncTaskCompat找不到 环信_Android

回复

看昵称就知道你是个可爱 发起了问题 • 1 人关注 • 83 次浏览 • 2018-01-08 11:16 • 来自相关话题

1
回复

1cccccccc 环信_Android

回复

beyond 回复了问题 • 2 人关注 • 87 次浏览 • 2018-01-08 10:42 • 来自相关话题

3
最佳

环信初始化报错。android4.4 环信_Android

回复

jackydu 回复了问题 • 3 人关注 • 1467 次浏览 • 2018-01-06 20:09 • 来自相关话题

0
回复

环信视频聊天怎么加滤镜? 环信_iOS 环信_Android

回复

jared 发起了问题 • 1 人关注 • 92 次浏览 • 2018-01-06 17:15 • 来自相关话题

1
回复

安卓端的用户全部都显示null,登不进去 环信_Android

回复

心愿♥ 回复了问题 • 1 人关注 • 105 次浏览 • 2018-01-06 16:40 • 来自相关话题

1
回复

客服Android,SDK,线上崩溃 环信_Android

回复

baoshu 回复了问题 • 2 人关注 • 136 次浏览 • 2018-01-05 11:11 • 来自相关话题

2
回复

android注册总返回EMError.GENERAL_ERROR 环信_Android

回复

lovecyg123 回复了问题 • 3 人关注 • 798 次浏览 • 2018-01-04 14:04 • 来自相关话题

1
回复

Android自定义消息 环信_Android

回复

心事 回复了问题 • 1 人关注 • 106 次浏览 • 2018-01-03 16:55 • 来自相关话题

4
回复

android集成环信3.0混淆打包缺失文件 环信_Android

回复

baoshu 回复了问题 • 3 人关注 • 183 次浏览 • 2018-01-03 15:32 • 来自相关话题

0
评论

2017 本土开源大盘点!年度编程语言和开源项目 TOP 榜 开源 2017 码云

beyond 发表了文章 • 129 次浏览 • 2018-01-09 15:10 • 来自相关话题

摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。




在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布





2. 国内开发者的性别分布
 





3. 2017 年新增756 K 开源项目——Star 数增长排行
 





4. 2017 年新增756 K 开源项目——Fork 数增长排行





5. 2017 年,更多人开始参与开源项目​





6. 国内开源项目的语言占比是什么情况?​





7. 国内开源项目的功能分类是什么情况?​





8.国内开发者最喜爱的编程语言​





9. 2017 年增速最快的语言





本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。 查看全部
摘要:年度最受国内开发者喜爱的编程语言?最受欢迎的开源项目?为你呈现最详细的国内开发者画像。

盘点.jpg

在即将过去的2017年,作为程序员的你过得怎么样呢?在这一年中你是否参与过开源项目的创建或运营?今天为大家带来最详细的本土开源现状报告,为你展现国内开发者喜爱的编程语言、最受欢迎的国内开源项目等丰富信息。

1. 国内开发者的地域分布


开发者.png


2. 国内开发者的性别分布
 


性别.png


3. 2017 年新增756 K 开源项目——Star 数增长排行
 


star.png


4. 2017 年新增756 K 开源项目——Fork 数增长排行


fork.png


5. 2017 年,更多人开始参与开源项目​


参与.png


6. 国内开源项目的语言占比是什么情况?​


预言.png


7. 国内开源项目的功能分类是什么情况?​


功能.png


8.国内开发者最喜爱的编程语言​


语言.png


9. 2017 年增速最快的语言


增长.png


本文数据由 码云 2017年度数据报告 提供,码云是开源中国旗下的云端协作开发平台,上线四年来用户突破200万,托管项目近300万,已成为经过大规模部署的成熟产品。码云的社区版的私有库完全免费,企业版(5人以下免费)则提供代码托管、项目管理、文档协作的一体化开发服务,竭诚为广大本土开发者服务。
0
评论

2017环信八大开源项目源码放出:两个已获融资,单个20W+关注 开源项目

beyond 发表了文章 • 409 次浏览 • 2017-12-29 14:27 • 来自相关话题

“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!
 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。




环信公司前台一角
2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~




应用截图
 实现功能:
创建推流和拉流加速集成环信IM的聊天室功能集成UCloud的ULive直播云SDK在聊天室里集成推流(录制)和拉流(播放)功能
 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?




Dolores海报
相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
单聊群聊朋友圈钱包直播红包




项目运行效果图
相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
事件订阅初始化处理消息的事件把消息发送到移动客服处理OAuth回调把收到的消息发给Slack 用户
 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。




项目运行效果图
实现功能:
 环信SDK的集成与使用 MVP模式的运用 ORM数据库的集成与使用 模块化思想的运用
 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。




项目运行效果图
实现功能:
加入Tinker 热修复加入部分注释增加长按删除功能优化Rxbus订阅加载数据外国友人优化的一些细节增加了评论功能优化了相册加载把登陆注册事件换了个Zip操作符更符合流的思想
相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。




项目运行效果图
[b]实现功能:[/b]
好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。查看群员列表。 面板内快速查找。 面板右键自定义事件 修改签名 自定义上传背景皮肤 搜索好友/群 添加好友/群 新建群 消息盒子展示
 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。




项目运行效果图
 
实现功能
项目首次启动自动注册登录拨号盘实现历史通话记录 TODO视频通话功能(因为电视不需要语音通话以及最小化)视频通话的录制通话截图
 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
  查看全部
“这是一家极具极客范的公司”,来过环信公司的每一位客户都这么评价到。有着“连接人与人,连接人与商业”愿景的环信正在一步一步慢慢用技术和场景改变每个人的生活和工作。生有涯而知无涯,业有涯而心无涯,路漫漫其修远,“开源”当上下而求索!

 环信成立于2013年,公司数位联合创始人都是技术大牛出身,在Symbian,Nokia,Red Hat等知名IT公司都是开源项目的重度参与者,环信的基因便因此打上了“开源”的烙印,在2014年即创办了国内首个即时通讯云开源社区“IMGeek社区”,经过了3年多的深耕,2017年度在环信IMGeek社区涌现了数十个优质开源项目,其中两个开源项目目前已经拿到融资,更有一个项目获得了超过20W+的关注度,环信正通过即时通讯云PaaS平台和客服PaaS平台一步步完善自己的商业梦想,也在一步步的通过开源回馈自己的开发者和产业链上下游的小伙伴。

微信图片_20171229142123.jpg

环信公司前台一角


2017年是企业服务丰收的一年,感谢伙伴们对环信一直以来的支持。18年伊始之际,我们总结了17年间基于环信开发者的八大开源项目,希望能对大家有所帮助。
 
小马直播间-开源直播APP
 
推荐理由:基于环信开发的开源直播应用,IMGeek收藏数量3W8,对于有直播需求的小伙伴们值得参考,教你从头开始开发一个移动端直播APP。
 
互联网直播平台催生了一批批网红大咖,作为程序猿,我们绝不甘于委身幕后做搬砖工,我们一定要闪亮登场!!!做一个属于我们程序猿的IOS版直播平台~~

小马直播间.png

应用截图


 实现功能:
  • 创建推流和拉流加速
  • 集成环信IM的聊天室功能
  • 集成UCloud的ULive直播云SDK
  • 在聊天室里集成推流(录制)和拉流(播放)功能

 相关链接:http://www.imgeek.org/article/825307904​ 

Dolores-基于环信IM开发完整的企业通讯解决方案
 
推荐理由:对企业而言,初选OA办公系统是为了满足需求,解决当下问题,由于OA办公系统的在公司运作流程中扮演的重要性,安全与隐私等问题急需未雨绸缪,“可定制”、“可私有化部署”的OA办公系统成为了更多企业的首选。
 
公司想自己开发一套IM系统应该从哪里开始呢? 企业通讯录怎么保持同步呢? 企业通讯录的权限管理应该怎么做?

89e5f4394605d1a330e558e46e7cc6b0.jpg

Dolores海报


相关链接:http://www.imgeek.org/article/825308805
 
凡信-百尺竿头更进一步,2017凡信携直播、红包而来
 
推荐理由:自凡信开源以来,更新了3个大版本,从基本聊天功能,到越来越多的开发者创建分支,累计收到了10W+的收藏,帮助了很多开发者进行开发即时通讯应用。
 
已完成功能:
  • 单聊
  • 群聊
  • 朋友圈
  • 钱包
  • 直播
  • 红包

凡信.png

项目运行效果图


相关链接:http://www.imgeek.org/article/825307930
 
 Slack聊天机器人-环信客服版
 
推荐理由:17年作为人工智能元年,聊天机器人(Chatbot)在各大行业的应用方兴未艾,国外包括Facebook Messenger、Slack等均引入了聊天机器人,所以毋庸置疑,聊天机器人将成为我们未来生活中不可或缺的一部分
,IMGEEK开源社区热心开发者&朝阳区群众“晨星桑”一言不合他就花2小时写了一个Slack的聊天机器人,您可以通过这个项目在Slack上对接客户服务,并且通过一些定制开发能够看见Slack用户的基本信息(比如:昵称、电话、团队名称等),并且可以二维码支付。
相关功能:
  • 事件订阅初始化
  • 处理消息的事件
  • 把消息发送到移动客服
  • 处理OAuth回调
  • 把收到的消息发给Slack 用户

 
相关链接:http://www.imgeek.org/article/825308711​ 
 
泛聊-厉害了我的开发者,基于环信的开源高仿QQ项目
 
推荐理由:聊天功能做到了极致,展示即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消息提醒等功能。

泛聊.png

项目运行效果图


实现功能:
  •  环信SDK的集成与使用
  •  MVP模式的运用
  •  ORM数据库的集成与使用
  •  模块化思想的运用

 相关链接:http://www.imgeek.org/article/825308542​ 
 
Baby-开源私密社交应用
 
推荐理由:私密社交APP,情侣、死党必备的一对一专属聊天应用。作者开发初期下载了市面上所有IM的demo源码跑一遍,从功能、集成难易和消息稳定几个方面对比,最终还是选择了环信。使用环信EaseUi集成,基本上一天就能集成完毕。

baby.png

项目运行效果图


实现功能:
  • 加入Tinker 热修复
  • 加入部分注释
  • 增加长按删除功能
  • 优化Rxbus订阅加载数据
  • 外国友人优化的一些细节
  • 增加了评论功能
  • 优化了相册加载
  • 把登陆注册事件换了个Zip操作符更符合流的思想

相关链接:http://www.imgeek.org/article/825308850

LITE-IM-环信webim的网页即时聊天

推荐理由:你见过最酷炫的WEB聊天项目,LITE-IM不仅能够担当客户服务来使用,还可以用作你网站粘连客户、活跃社区的媒介,提升用户的使用率。

lym.png

项目运行效果图


[b]实现功能:[/b]
  • 好友/群内的文字、表情、图片、文件 在线/离线消息发送和接收。
  • 查看群员列表。 
  • 面板内快速查找。 
  • 面板右键自定义事件 
  • 修改签名 
  • 自定义上传背景皮肤 
  • 搜索好友/群 
  • 添加好友/群 
  • 新建群 
  • 消息盒子展示

 相关链接:http://www.imgeek.org/article/825308961 
 
VMTVCall-使用环信3.xSDK 在 TV 端集成音视频通话功能
 
推荐理由:移动互联网方便了我们生活,移动端随时随地沟通成为了常态,今天我们推荐的是一个可以安装在电视机上进行视频通话的开源项目。

电视机.jpg

项目运行效果图


 
实现功能
  • 项目首次启动自动注册登录
  • 拨号盘实现
  • 历史通话记录 TODO
  • 视频通话功能(因为电视不需要语音通话以及最小化)
  • 视频通话的录制
  • 通话截图

 相关链接:http://www.imgeek.org/article/825308732
 
end.
 
生有涯而知无涯,业有涯而心无涯,路漫漫其修远,当上下而求索。未来,我们还将开源更多。
 
环信IMGeek社区开源项目地址http://www.imgeek.org/code/
 
7
回复

收集基于环信SDK开发的开源项目 开源项目

回复

回眸淡然笑 回复了问题 • 9 人关注 • 5009 次浏览 • 2017-12-03 00:50 • 来自相关话题

8
评论

【新手快速入门】集成环信常见问题+解决方案汇总 常见问题

dujiepeng 发表了文章 • 9127 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
1
评论

一款基于环信开发的APP-超级家委会 环信_Android 环信_iOS 开源项目 SDK Hyphenate

magic_陌 发表了文章 • 90 次浏览 • 2018-01-04 10:02 • 来自相关话题

【产品简介】
 
“超级家委会”是一款基于环信开发的集活动、聊天、项目管理为一体的APP。

如需项目合作,请联系:石锋 18616870207(微信同号)

【功能介绍】

消息

享畅聊,与微信一样好用的通讯功能,免费即时沟通,但在这里只聊工作,去除娱乐化,支持单聊、普通群聊、活动群聊、部门群聊、团队群聊。






【单聊】和好友实时沟通
【群聊】邀请特定的人组建群聊
【活动群聊】对活动感兴趣的人员可以一起畅所欲言,也可和主办方沟通疑问,活动群聊 页面可一键直达活动
【部门/团队群聊】提供团队内部聊天功能,随时与同伴和团队沟通和讨论工作,让沟通更顺畅
【系统消息】实时接收重要信息的通知,如审核申请,报名信息,关注,评论等,并及时做出反馈;
 
实现功能
好友/群内的文字、表情、图片、位置、收藏、名片发送和接收查看群信息快速查找新建群 系统消息推送删除会话获取未读消息@功能正在实现中...





















 
项目

提供了包括项目管理、行政办公、教育培训、营销工具等基本应用和丰富的插件功能,通过精心设计打造出体验出色的应用,且每个项目可直达相应群聊,让你和团队成员随时随地参与协作。





 
【快速立项】明确工作目标并创建项目 ,邀请团队成员加入项目一起来开展工作;
【任务管理】新建任务,指派执行者和添加参与者,添加并更新相关任务信息;
【工作安排】创建「日程」来安排会议、 记录外出和预约重点活动等等工作,也随时了解其他项目成员的工作安排;
【进展同步】通过任务列表随时关注项目进展的更新,进入项目查看具体的进展信息;
【插件丰富】丰富的移动办公应用接入,任务、签到、审批、笔记、文件、费用、班级、学生老师、课程、消课等,应有尽有。
 
活动
您可以参加活动聚会,学习一项新技能,带上孩子发现未知…更特别的是,您还可以自己组织发起活动,呼朋唤友一起玩耍。





 
【主办方】提供从发布活动、活动推广、报名管理到财务管理等全流程完整解决方案
【参与者】找到感兴趣的活动,志同道合的朋友,长假远行,家长课堂,周边游,培训课 程,聚会沙龙,冬夏令营,手工课程,多种活动,丰富娱乐生活
【报名信息 随时查收】支持自定义设置报名表单,报名信息详情可查,支持导出
【精彩活动 乐享群聊】一起进入活动群聊,可以和其他参与者一起互动
 
联系人
搜索好友/群 添加好友/群 发送/接受好友申请










 
【技术实现】

本项目是基于官方最新SDK Hyphenate 进行开发 页面效果基于EasyUI调整 和微信页面效果看齐。
 
主要实现功能 
 
1、注册 登录 自动登录 重连 退出登录EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];
if (error==nil) {
NSLog(@"注册成功");
}
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error) {
NSLog(@"登录成功");
}

自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。

SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{
[[EMClient sharedClient].options setIsAutoLogin:YES];
}
2. 消息
IM 交互实体,在 SDK 中对应的类型是 EMMessage。EMMessage 由 EMMessageBody 组成。

构造文字消息 构造图片消息 构造图片消息 构造位置消息 构造语音消息 构造视频消息 构造扩展消息(系统消息)构造文字消息
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造图片消息
EMImageMessageBody *body = [[EMImageMessageBody alloc] initWithData:data displayName:@"image.png"];
// body.compressionRatio = 1.0f; 1.0表示发送原图不压缩。默认值是0.6,压缩的倍数是0.6倍
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造扩展消息
// 以单聊消息举例
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息
//message.chatType = EMChatTypeGroupChat;// 设置为群聊消息
//message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息
message.ext = @{@"key":@"value"}; // 扩展消息部分

扩展消息主要用要系统消息里
3. 会话

操作聊天消息 EMMessage 的容器,在 SDK 中对应的类型是 EMConversation。

新建 、 获取一个会话 (根据 conversationId 创建一个 conversation)[[EMClient sharedClient].chatManager getConversation:@"8001" type:EMConversationTypeChat createIfNotExist:YES];
//EMConversationTypeChat 单聊会话
//EMConversationTypeGroupChat 群聊会话
//EMConversationTypeChatRoom 聊天室会话


getConversation:创建与8001的会话
type:会话类型
createIfNotExist:不存在是否创建
 
4. 删除会话

删除单个会话[[EMClient sharedClient].chatManager deleteConversation:@"8001" isDeleteMessages:YES completion:^(NSString *aConversationId, EMError *aError){
//code
}];


deleteConversation: 删除与8001的会话
deleteMessages: 删除会话中的消息
 
5. 获取会话列表

获取所有会话 (内存中有则从内存中取,否则从db中取)NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];
6. 获取会话未读消息 [EMConversation unreadMessagesCount]; 显示红点
7. 聊天 (发送消息 接收消息 解析普通消息 解析扩展消息)

登录成功之后才能进行聊天操作。发消息时,单聊和群聊调用的是统一接口,区别只是要设置下 message.chatType。/*!
@property
@brief 发送消息
@discussion
异步方法
*/
- (void)sendMessage:(EMMessage *)aMessage
progress:(void (^)(int progress))aProgressBlock
completion:(void (^)(EMMessage *message, EMError *error))aCompletionBlock;

//调用:[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {}];

//消息回调:EMChatManagerDelegate

//移除消息回调
[[EMClient sharedClient].chatManager removeDelegate:self];

//注册消息回调
[[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];

/*!
@method
@brief 接收到一条及以上非cmd消息
*/
- (void)messagesDidReceive:(NSArray *)aMessages;

解析普通消息
// 收到消息的回调,带有附件类型的消息可以用 SDK 提供的下载附件方法下载(后面会讲到)
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
EMMessageBody *msgBody = message.body;
switch (msgBody.type) {
case EMMessageBodyTypeText:
{
// 收到的文字消息
EMTextMessageBody *textBody = (EMTextMessageBody *)msgBody;
NSString *txt = textBody.text;
NSLog(@"收到的文字是 txt -- %@",txt);
}
break;
case EMMessageBodyTypeImage:

解析扩展消息
- (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages {
for (EMMessage *message in aCmdMessages) {
// cmd消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"cmd消息中的扩展属性是 -- %@",ext)
}
}
// 收到消息回调
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
// 消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"消息中的扩展属性是 -- %@",ext);
}
}



 8. 好友管理 (本项目的好友管理是自己服务器上管理的)

9. 好友申请

发送好友申请 EMError *error = [[EMClient sharedClient].contactManager addContact:@"6001" message:@"我想加您为好友"];
if (!error) {
NSLog(@"添加成功");
}
监听加好友请求 (项目里面 发送系统消息)/*!
* 用户A发送加用户B为好友的申请,用户B会收到这个回调
*
* @param aUsername 用户名
* @param aMessage 附属信息
*/
- (void)friendRequestDidReceiveFromUser:(NSString *)aUsername
message:(NSString *)aMessage;
同意加好友申请 EMError *error = [[EMClient sharedClient].contactManager acceptInvitationForUsername:@"8001"];
if (!error) {
NSLog(@"发送同意成功");
}
10 群组管理
创建群 后台创建的
加入群组 添人进群 退出群组 解散群组 修改群描述 获取群组成员列表

11 群组管理
1.后台配置推送证书
2.代码配置 APNs 使用的推送证书。
3.代码注册离线推送

【联系我们】
如需项目合作,请联系
石锋 18616870207 (微信同号) 查看全部
【产品简介】
 
“超级家委会”是一款基于环信开发的集活动、聊天、项目管理为一体的APP。

如需项目合作,请联系:石锋 18616870207(微信同号)

【功能介绍】

消息

享畅聊,与微信一样好用的通讯功能,免费即时沟通,但在这里只聊工作,去除娱乐化,支持单聊、普通群聊、活动群聊、部门群聊、团队群聊。

聊天.jpg


【单聊】和好友实时沟通
【群聊】邀请特定的人组建群聊
【活动群聊】对活动感兴趣的人员可以一起畅所欲言,也可和主办方沟通疑问,活动群聊 页面可一键直达活动
【部门/团队群聊】提供团队内部聊天功能,随时与同伴和团队沟通和讨论工作,让沟通更顺畅
【系统消息】实时接收重要信息的通知,如审核申请,报名信息,关注,评论等,并及时做出反馈;
 
实现功能
  • 好友/群内的文字、表情、图片、位置、收藏、名片发送和接收
  • 查看群信息
  • 快速查找
  • 新建群 
  • 系统消息推送
  • 删除会话
  • 获取未读消息
  • @功能正在实现中...


聊天功能介绍1.jpg

聊天功能介绍2.jpg

聊天功能介绍3.jpg

聊天功能介绍4.jpg

聊天功能介绍6.jpg

 
项目

提供了包括项目管理、行政办公、教育培训、营销工具等基本应用和丰富的插件功能,通过精心设计打造出体验出色的应用,且每个项目可直达相应群聊,让你和团队成员随时随地参与协作。

聊天功能介绍8.jpg

 
【快速立项】明确工作目标并创建项目 ,邀请团队成员加入项目一起来开展工作;
【任务管理】新建任务,指派执行者和添加参与者,添加并更新相关任务信息;
【工作安排】创建「日程」来安排会议、 记录外出和预约重点活动等等工作,也随时了解其他项目成员的工作安排;
【进展同步】通过任务列表随时关注项目进展的更新,进入项目查看具体的进展信息;
【插件丰富】丰富的移动办公应用接入,任务、签到、审批、笔记、文件、费用、班级、学生老师、课程、消课等,应有尽有。
 
活动
您可以参加活动聚会,学习一项新技能,带上孩子发现未知…更特别的是,您还可以自己组织发起活动,呼朋唤友一起玩耍。

聊天功能介绍9.jpg

 
【主办方】提供从发布活动、活动推广、报名管理到财务管理等全流程完整解决方案
【参与者】找到感兴趣的活动,志同道合的朋友,长假远行,家长课堂,周边游,培训课 程,聚会沙龙,冬夏令营,手工课程,多种活动,丰富娱乐生活
【报名信息 随时查收】支持自定义设置报名表单,报名信息详情可查,支持导出
【精彩活动 乐享群聊】一起进入活动群聊,可以和其他参与者一起互动
 
联系人
  • 搜索好友/群 
  • 添加好友/群 
  • 发送/接受好友申请


聊天功能介绍10.jpg


聊天功能介绍5.jpg

 
【技术实现】

本项目是基于官方最新SDK Hyphenate 进行开发 页面效果基于EasyUI调整 和微信页面效果看齐。
 
主要实现功能 
 
1、注册 登录 自动登录 重连 退出登录
EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];
if (error==nil) {
NSLog(@"注册成功");
}
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error) {
NSLog(@"登录成功");
}

自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。

SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{
[[EMClient sharedClient].options setIsAutoLogin:YES];
}

2. 消息
IM 交互实体,在 SDK 中对应的类型是 EMMessage。EMMessage 由 EMMessageBody 组成。

构造文字消息 构造图片消息 构造图片消息 构造位置消息 构造语音消息 构造视频消息 构造扩展消息(系统消息)
构造文字消息
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造图片消息
EMImageMessageBody *body = [[EMImageMessageBody alloc] initWithData:data displayName:@"image.png"];
// body.compressionRatio = 1.0f; 1.0表示发送原图不压缩。默认值是0.6,压缩的倍数是0.6倍
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息

构造扩展消息
// 以单聊消息举例
EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的消息"];
NSString *from = [[EMClient sharedClient] currentUsername];

//生成Message
EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:messageExt];
message.chatType = EMChatTypeChat;// 设置为单聊消息
//message.chatType = EMChatTypeGroupChat;// 设置为群聊消息
//message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息
message.ext = @{@"key":@"value"}; // 扩展消息部分

扩展消息主要用要系统消息里

3. 会话

操作聊天消息 EMMessage 的容器,在 SDK 中对应的类型是 EMConversation。

新建 、 获取一个会话 (根据 conversationId 创建一个 conversation)
[[EMClient sharedClient].chatManager getConversation:@"8001" type:EMConversationTypeChat createIfNotExist:YES];
//EMConversationTypeChat 单聊会话
//EMConversationTypeGroupChat 群聊会话
//EMConversationTypeChatRoom 聊天室会话


getConversation:创建与8001的会话
type:会话类型
createIfNotExist:不存在是否创建
 
4. 删除会话

删除单个会话
[[EMClient sharedClient].chatManager deleteConversation:@"8001" isDeleteMessages:YES completion:^(NSString *aConversationId, EMError *aError){
//code
}];


deleteConversation: 删除与8001的会话
deleteMessages: 删除会话中的消息
 
5. 获取会话列表

获取所有会话 (内存中有则从内存中取,否则从db中取)
NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];

6. 获取会话未读消息 
[EMConversation unreadMessagesCount]; 显示红点       

7. 聊天 (发送消息 接收消息 解析普通消息 解析扩展消息)

登录成功之后才能进行聊天操作。发消息时,单聊和群聊调用的是统一接口,区别只是要设置下 message.chatType。
/*!
@property
@brief 发送消息
@discussion
异步方法
*/
- (void)sendMessage:(EMMessage *)aMessage
progress:(void (^)(int progress))aProgressBlock
completion:(void (^)(EMMessage *message, EMError *error))aCompletionBlock;

//调用:[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) {}];

//消息回调:EMChatManagerDelegate

//移除消息回调
[[EMClient sharedClient].chatManager removeDelegate:self];

//注册消息回调
[[EMClient sharedClient].chatManager addDelegate:self delegateQueue:nil];

/*!
@method
@brief 接收到一条及以上非cmd消息
*/
- (void)messagesDidReceive:(NSArray *)aMessages;

解析普通消息
// 收到消息的回调,带有附件类型的消息可以用 SDK 提供的下载附件方法下载(后面会讲到)
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
EMMessageBody *msgBody = message.body;
switch (msgBody.type) {
case EMMessageBodyTypeText:
{
// 收到的文字消息
EMTextMessageBody *textBody = (EMTextMessageBody *)msgBody;
NSString *txt = textBody.text;
NSLog(@"收到的文字是 txt -- %@",txt);
}
break;
case EMMessageBodyTypeImage:

解析扩展消息
- (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages {
for (EMMessage *message in aCmdMessages) {
// cmd消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"cmd消息中的扩展属性是 -- %@",ext)
}
}
// 收到消息回调
- (void)messagesDidReceive:(NSArray *)aMessages {
for (EMMessage *message in aMessages) {
// 消息中的扩展属性
NSDictionary *ext = message.ext;
NSLog(@"消息中的扩展属性是 -- %@",ext);
}
}



 8. 好友管理 (本项目的好友管理是自己服务器上管理的)

9. 好友申请

发送好友申请
 EMError *error = [[EMClient sharedClient].contactManager addContact:@"6001" message:@"我想加您为好友"];
if (!error) {
NSLog(@"添加成功");
}

监听加好友请求 (项目里面 发送系统消息)
/*!
* 用户A发送加用户B为好友的申请,用户B会收到这个回调
*
* @param aUsername 用户名
* @param aMessage 附属信息
*/
- (void)friendRequestDidReceiveFromUser:(NSString *)aUsername
message:(NSString *)aMessage;

同意加好友申请 
EMError *error = [[EMClient sharedClient].contactManager acceptInvitationForUsername:@"8001"];
if (!error) {
NSLog(@"发送同意成功");
}

10 群组管理
创建群 后台创建的
加入群组 添人进群 退出群组 解散群组 修改群描述 获取群组成员列表

11 群组管理
1.后台配置推送证书
2.代码配置 APNs 使用的推送证书。
3.代码注册离线推送

【联系我们】
如需项目合作,请联系
石锋 18616870207 (微信同号)
0
评论

初步引入easeui遇到的问题 环信_Android

FredKang 发表了文章 • 595 次浏览 • 2016-11-07 10:18 • 来自相关话题

分享几个我引入EaseUI遇到的问题及解决方法
 
duplicate 项目中重复依赖了包
 搜索 BackStackState 选取一个依赖就行
 
.so文件报错找不到
 这个错误在app的build.gradle里面添加下面这句就好了。
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
 
Dex问题
 这个错误在app的build.gradle里面添加下面这句就好了。
android {
    defaultConfig {
        multiDexEnabled true

    }
}
Error:Configuration with name 'default' not found
 这个问题应该是gradle版本问题,进工作目录修改app的gradle信息 查看全部
分享几个我引入EaseUI遇到的问题及解决方法
 
  • duplicate 项目中重复依赖了包

 搜索 BackStackState 选取一个依赖就行
 
  • .so文件报错找不到

 这个错误在app的build.gradle里面添加下面这句就好了。
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
 
  • Dex问题

 这个错误在app的build.gradle里面添加下面这句就好了。
android {
    defaultConfig {
        multiDexEnabled true

    }
}
  • Error:Configuration with name 'default' not found

 这个问题应该是gradle版本问题,进工作目录修改app的gradle信息
3
评论

关于会话列表的置顶聊天 Android 环信_Android

陈日明 发表了文章 • 1992 次浏览 • 2016-10-27 16:18 • 来自相关话题

最近搞完了置顶聊天,来写篇文章分享下经验。

其实刚刚开始 ,我自己在想,我是不是要去做出类似于QQ那种的滑动,然后显示置顶和删除。




我就开始写,写完了之后然后去置顶,取消置顶,其实是有用的,但是为什么我到最后还是没有选择这个效果呢?

因为这个最后是要到Adapter里面去设置这两个按钮,我本人并不喜欢这东西放到Adapter里面,接下来强迫症来了,直接把代码全部删除,换一种思路..........我想到了微信,点击弹出一个菜单,和dialog很很像的一个功能。

好,来跟着我一起走一下思路。

首先是,要实现置顶聊天,那么我们就要有两个List集合,一个是置顶的,一个是不是置顶的,然后置顶的是需要一个小小的数据库去保存置顶的对话人的UserName;这里,环信给出了EMConversation的一个方法,带大家看看技术文档。





这里框出来的就是我们要用的至关重要的方法,特别重要,




看下这个文档里面说的非常清楚,也就是扩展字段,设置一个扩展字段我们才知道这条Conversation的特别之处,然后去判断这个会话有没有设置扩展消息,有的话,那就排到置顶的那个集合里面去。

接下来我们要准备的是数据库




也就是这两个东西,准备就绪,蓝后 ..... 要开始大动,也就是把关于会话列表里面的东西全部放到项目里面来。




所要动的就是这3个类,全部移动到项目中,因为数据库要在Adapter和ListView里面操作,这一步很简单,动动手就行。

那么这些全部做完之后,我们开始写代码了,仿照通讯录的数据库来




这里就是getset,然后在DemoHelper里面




蓝后,再Application里面去给它暴露出两个方法。




好了,数据库的东西是配置完成了,那么,问题就来了,怎么去启动数据库?




这样就添加了数据库,注意,这里添加了数据库之后,然后再去真正的写置顶的代码了。。。。

首先我们先看看会话列表界面




在setupView方法中,别忘了获取数据库里面的置顶会话。




这里直接贴出来了ConversationListFragment,这里就是把EaseUI里面的EaseConversationlistFragment里面的内容,然后BaseFragment也就是EaseBaseFragment里面的内容了。




主要加载会话的方法就是这个方法,主要代码就是synchronized里面的内容,这里很容易就能够理解For循环里面的内容,然后我们要在这里面判断,有没有会话是包含扩展字段的,有的话就将包含扩展字段的会话放入top_list这个集合里面;蓝后你们可以看到topList,这个List就是图10里面的topList,topMap也是图10里面的。蓝后,我们可以看到排序方法,也就是会话列表的排序方法(sortConversationByLastChatTime),这里我自己写了一个排序方法,并没有用到Pair。





其实这两个方法是一样的,一样的效果。

那么接下来,就是看看ConversationList





最主要的就是这个init方法,也没什么说的。。那么接下来就到ConversationAdapter




这里就和EaseUI里面的那个EaseConversationAdapter有点不一样了,EaseConversationAdapter里面是继承ArrayAdapter的,这里是继承BaseAdapter,在这里使用BaseAdapter为了方便大家能够理解。

我们只需要在getItem和getCount里面做点手脚就可以了




好了,到这里就完成了整个置顶会话的显示,那么接下来,我们就要写一下置顶功能了,这里很有必要说明下,个人意见,在写会话列表的时候,推荐使用一个Fragment去继承EaseConversationListFragment。继承之后我们就可以重写setUpView方法,在这方法里面我们进行一系列的操作。




这里就是用到的长按事件,然后显示一个Dialog,在Dialog里面去实现置顶功能的操作。这里由于代码过长,所以截两张图。。。。




图18主要就是Dialog的显示




在这里就是删除会话等这个按钮的点击事件。




在里就是置顶的点击事件了。。

好了 到这里已经完成了置顶的全部代码展示了。个人感觉还是很详细的,如果还是不懂,那就环信互帮互助-非官方 340452063来这,给你解答你的问题 查看全部
最近搞完了置顶聊天,来写篇文章分享下经验。

其实刚刚开始 ,我自己在想,我是不是要去做出类似于QQ那种的滑动,然后显示置顶和删除。
1.png

我就开始写,写完了之后然后去置顶,取消置顶,其实是有用的,但是为什么我到最后还是没有选择这个效果呢?

因为这个最后是要到Adapter里面去设置这两个按钮,我本人并不喜欢这东西放到Adapter里面,接下来强迫症来了,直接把代码全部删除,换一种思路..........我想到了微信,点击弹出一个菜单,和dialog很很像的一个功能。

好,来跟着我一起走一下思路。

首先是,要实现置顶聊天,那么我们就要有两个List集合,一个是置顶的,一个是不是置顶的,然后置顶的是需要一个小小的数据库去保存置顶的对话人的UserName;这里,环信给出了EMConversation的一个方法,带大家看看技术文档。

2.png

这里框出来的就是我们要用的至关重要的方法,特别重要,
3.png

看下这个文档里面说的非常清楚,也就是扩展字段,设置一个扩展字段我们才知道这条Conversation的特别之处,然后去判断这个会话有没有设置扩展消息,有的话,那就排到置顶的那个集合里面去。

接下来我们要准备的是数据库
4.png

也就是这两个东西,准备就绪,蓝后 ..... 要开始大动,也就是把关于会话列表里面的东西全部放到项目里面来。
5.png

所要动的就是这3个类,全部移动到项目中,因为数据库要在Adapter和ListView里面操作,这一步很简单,动动手就行。

那么这些全部做完之后,我们开始写代码了,仿照通讯录的数据库来
6.png

这里就是getset,然后在DemoHelper里面
7.png

蓝后,再Application里面去给它暴露出两个方法。
8.png

好了,数据库的东西是配置完成了,那么,问题就来了,怎么去启动数据库?
9.png

这样就添加了数据库,注意,这里添加了数据库之后,然后再去真正的写置顶的代码了。。。。

首先我们先看看会话列表界面
10.png

在setupView方法中,别忘了获取数据库里面的置顶会话。
11.png

这里直接贴出来了ConversationListFragment,这里就是把EaseUI里面的EaseConversationlistFragment里面的内容,然后BaseFragment也就是EaseBaseFragment里面的内容了。
12.png

主要加载会话的方法就是这个方法,主要代码就是synchronized里面的内容,这里很容易就能够理解For循环里面的内容,然后我们要在这里面判断,有没有会话是包含扩展字段的,有的话就将包含扩展字段的会话放入top_list这个集合里面;蓝后你们可以看到topList,这个List就是图10里面的topList,topMap也是图10里面的。蓝后,我们可以看到排序方法,也就是会话列表的排序方法(sortConversationByLastChatTime),这里我自己写了一个排序方法,并没有用到Pair。

13.png

其实这两个方法是一样的,一样的效果。

那么接下来,就是看看ConversationList

14.png

最主要的就是这个init方法,也没什么说的。。那么接下来就到ConversationAdapter
15.png

这里就和EaseUI里面的那个EaseConversationAdapter有点不一样了,EaseConversationAdapter里面是继承ArrayAdapter的,这里是继承BaseAdapter,在这里使用BaseAdapter为了方便大家能够理解。

我们只需要在getItem和getCount里面做点手脚就可以了
16.png

好了,到这里就完成了整个置顶会话的显示,那么接下来,我们就要写一下置顶功能了,这里很有必要说明下,个人意见,在写会话列表的时候,推荐使用一个Fragment去继承EaseConversationListFragment。继承之后我们就可以重写setUpView方法,在这方法里面我们进行一系列的操作。
17.png

这里就是用到的长按事件,然后显示一个Dialog,在Dialog里面去实现置顶功能的操作。这里由于代码过长,所以截两张图。。。。
18.png

图18主要就是Dialog的显示
19.png

在这里就是删除会话等这个按钮的点击事件。
20.png

在里就是置顶的点击事件了。。

好了 到这里已经完成了置顶的全部代码展示了。个人感觉还是很详细的,如果还是不懂,那就环信互帮互助-非官方 340452063来这,给你解答你的问题
18
评论

【环信集成笔记】进阶篇-android环信昵称头像解决方法 头像和昵称 环信集成 环信_Android 头像 设置头像

陈日明 发表了文章 • 4212 次浏览 • 2016-09-27 18:43 • 来自相关话题

当你刚刚集成环信的时候,在和自己android组的小伙伴玩的不亦乐乎的时候,当你过完这把瘾的时候,那么接下来,你就要考虑的是怎么让这个头像显示的是自己想要的头像,怎么让昵称显示自己的昵称.....

那么接下来,我来告诉大家,怎么解决昵称头像的问题,

首先,这篇文章是接在我大表哥江南孤鹜在im社区写的一篇文章之后写的,上个链接地址 Android获取昵称头像接下来,我对此文章做些补充:

我看到有些人在问,这个方法放在哪里?





好吧,大表哥没说出来,这个放在UserApiModel里面

那么接下来,大表哥写的是这样的,利用扩展消息去获取头像昵称,在这里我提醒下大家,要判断这个头像是自己的还是好友的




怎么判断呢,作为新手的我们,我推荐使用shareprefences在登陆的时候保存下自己的头像昵称,然后再这里获取,并且设置给扩展





在demohelper里面有个getuserinfo方法




这里就是把获取到的头像昵称设置给环信,然后显示出来,这里最重要,切记不要写错。

那么,到此为止,其实都说完了,可是,毕竟是一个延伸,怎么可能就此结束,接下来给大家看下,请求数据,然后设置给数据库





请求的过程我就不写了,这个大家都会,获取到username,id,logo,之后先要把头像,昵称存到userdao里面,如果userdao是环信的一个数据库,这个大家自己看看demo的代码就知道了,设置到这里,是为了在联系人列表里面显示,UserInfoCacheSvc.createOrUpdate(id,username,logo_img);这句就是把头像昵称放到大表哥写的数据库里面

最后,补充一下,忘记说了,导入框架




好了,这样就结束了,如果有什么还不明白,就加入大表哥粉丝群(环信IM互帮互助群 340452063),我会帮你解答一切问题 查看全部
当你刚刚集成环信的时候,在和自己android组的小伙伴玩的不亦乐乎的时候,当你过完这把瘾的时候,那么接下来,你就要考虑的是怎么让这个头像显示的是自己想要的头像,怎么让昵称显示自己的昵称.....

那么接下来,我来告诉大家,怎么解决昵称头像的问题,

首先,这篇文章是接在我大表哥江南孤鹜在im社区写的一篇文章之后写的,上个链接地址 Android获取昵称头像接下来,我对此文章做些补充:

我看到有些人在问,这个方法放在哪里?

1.png

好吧,大表哥没说出来,这个放在UserApiModel里面

那么接下来,大表哥写的是这样的,利用扩展消息去获取头像昵称,在这里我提醒下大家,要判断这个头像是自己的还是好友的
2.png

怎么判断呢,作为新手的我们,我推荐使用shareprefences在登陆的时候保存下自己的头像昵称,然后再这里获取,并且设置给扩展

3.png

在demohelper里面有个getuserinfo方法
4.png

这里就是把获取到的头像昵称设置给环信,然后显示出来,这里最重要,切记不要写错。

那么,到此为止,其实都说完了,可是,毕竟是一个延伸,怎么可能就此结束,接下来给大家看下,请求数据,然后设置给数据库

5.png

请求的过程我就不写了,这个大家都会,获取到username,id,logo,之后先要把头像,昵称存到userdao里面,如果userdao是环信的一个数据库,这个大家自己看看demo的代码就知道了,设置到这里,是为了在联系人列表里面显示,UserInfoCacheSvc.createOrUpdate(id,username,logo_img);这句就是把头像昵称放到大表哥写的数据库里面

最后,补充一下,忘记说了,导入框架
6.png

好了,这样就结束了,如果有什么还不明白,就加入大表哥粉丝群(环信IM互帮互助群 340452063),我会帮你解答一切问题
3
评论

【环信集成笔记】进阶篇-关于环信EaseUI集成冲突问题以及解决办法 Android 环信集成笔记 环信_Android

陈日明 发表了文章 • 4018 次浏览 • 2016-09-08 17:48 • 来自相关话题

是不是在集成EaseUI的时候看到这个问题顿时就像砸了电脑。或者说你在百度之后,发现很多人出现这个问题,然后按照他们的思路去改来改去,改到最后还是没有成功;然后不知所措的移动着鼠标,一次又一次的运行,等着奇迹的出现?

或者又说 ,你在试了他们的方法之后然后Clean,rebuild,重启AndroidStudio之后,还是没用,还是这个错。

下面我就跟大家讲一下,怎么去解决这个错误

首先这个错误的原因是因为V4的包冲突,也就是说,如果你的主项目里面也有V4的包,EaseUI里面也有V4的包,那么久删除主项目里面的V4的包,这个是不会报错的,尽管删除,删除之后,再次运行项目,试试看,如果还是报这个错的话,那就把EaseUi里面的V4的包删除,然后





必须选择到EaseUI,然后选到Dependencies,再点击加号里面的Library dependency,进去之后





选择V4包OK就可以了,添加之后,再次运行项目,如果还是不行的话,别着急,继续往下看




在app的配置文件里面的Android节点下加入图中的代码

dexOptions {
javaMaxHeapSize"4g"
}
aaptOptions.cruncherEnabled=false
aaptOptions.useNewCruncher=false


不管有没有用,你加入进去,然后再次运行项目,如果在不行的话,我想说你的运气真的好差。
 
 
在这里,很感谢某一个程序员的分享,这里还提供一个解决办法,就是删除easeui里面的谷歌服务的jar包,然后rebuild项目


运气差那就Clean,rebuild项目,或者更换EaseUI
 

 

如果还有问题的话 请加入 环信互帮互助-非官方 340452063  查看全部
1677578-57c07efa4e1ded40.png

是不是在集成EaseUI的时候看到这个问题顿时就像砸了电脑。或者说你在百度之后,发现很多人出现这个问题,然后按照他们的思路去改来改去,改到最后还是没有成功;然后不知所措的移动着鼠标,一次又一次的运行,等着奇迹的出现?

或者又说 ,你在试了他们的方法之后然后Clean,rebuild,重启AndroidStudio之后,还是没用,还是这个错。

下面我就跟大家讲一下,怎么去解决这个错误

首先这个错误的原因是因为V4的包冲突,也就是说,如果你的主项目里面也有V4的包,EaseUI里面也有V4的包,那么久删除主项目里面的V4的包,这个是不会报错的,尽管删除,删除之后,再次运行项目,试试看,如果还是报这个错的话,那就把EaseUi里面的V4的包删除,然后

1677578-48790976631f9919.png

必须选择到EaseUI,然后选到Dependencies,再点击加号里面的Library dependency,进去之后

1677578-e32191fbb5c8407c.png

选择V4包OK就可以了,添加之后,再次运行项目,如果还是不行的话,别着急,继续往下看
1677578-b8bc8862272e6530.png

在app的配置文件里面的Android节点下加入图中的代码

dexOptions {
javaMaxHeapSize"4g"
}
aaptOptions.cruncherEnabled=false
aaptOptions.useNewCruncher=false


不管有没有用,你加入进去,然后再次运行项目,如果在不行的话,我想说你的运气真的好差。
 
 
在这里,很感谢某一个程序员的分享,这里还提供一个解决办法,就是删除easeui里面的谷歌服务的jar包,然后rebuild项目


运气差那就Clean,rebuild项目,或者更换EaseUI
 

 

如果还有问题的话 请加入 环信互帮互助-非官方 340452063 
3
评论

使用Android Studio导入3.x环信demo 环信_Android

zhuhy 发表了文章 • 4018 次浏览 • 2016-07-10 10:55 • 来自相关话题

下载官网最新sdk,http://www.anlook.com/download/im
下载后,解压后在examples中有源码,导入chatdemoui3.0
首先




然后找到examples下的chatdemoui3.0目录下的bulid.gradle点击ok导入




导入之后,在setting.bulid中将后两行注掉





重新编译一下,然后会提示open file,打开后,在easeui的bulid.gradle中将这里注掉 查看全部
下载官网最新sdk,http://www.anlook.com/download/im
下载后,解压后在examples中有源码,导入chatdemoui3.0
首先
图1.png

然后找到examples下的chatdemoui3.0目录下的bulid.gradle点击ok导入
图2.png

导入之后,在setting.bulid中将后两行注掉

图3.png

重新编译一下,然后会提示open file,打开后,在easeui的bulid.gradle中将这里注掉
图4.png
3
评论

关于环信im用户ID大小写问题 bug 环信_Android

GXJ 发表了文章 • 1606 次浏览 • 2016-04-21 00:14 • 来自相关话题

情况是如果某个用户的名字是包含大写的,如 51170219870626850X,但是在另一个用户的 EMMessageListener 中的 onMessageReceived 中接收到的 username 是 51170219870626850x,在源码中的比较方法是 equals(String) 这时就会判断失误,判断结果是false,修正办法是将 equals 换成 equalsIgnoreCase 即可,下面附上图 查看全部
情况是如果某个用户的名字是包含大写的,如 51170219870626850X,但是在另一个用户的 EMMessageListener 中的 onMessageReceived 中接收到的 username 是 51170219870626850x,在源码中的比较方法是 equals(String) 这时就会判断失误,判断结果是false,修正办法是将 equals 换成 equalsIgnoreCase 即可,下面附上图
1
评论

环信关于昵称和图片的问题。android 环信_Android

xujianxiang 发表了文章 • 1900 次浏览 • 2016-02-25 14:59 • 来自相关话题

环信关于昵称和图片的问题。当你去跟技术交流的时候,他们一般会给你这样一个网页,http://www.imgeek.org/article/825307638。让你自忆去看,其它他说的已经很明白了,对于大神来进。但是对于菜鸟的我还是云里雾里,于是脑补各种知识。看大神留下的工程。查看我反正说的就是要写一个getUser的具体实现。我就试试看的心里乱写一气,最后成功了。我是修改了easeui中的代码
MainActivity.java,代码如下:

package com.easemob.easeuisimpledemo.ui; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import android.R.integer; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.easemob.chat.EMConversation; import com.easemob.easeui.EaseConstant; import com.easemob.easeui.controller.EaseUI; import com.easemob.easeui.domain.EaseUser; import com.easemob.easeui.ui.EaseBaseActivity; import com.easemob.easeui.ui.EaseContactListFragment; import com.easemob.easeui.ui.EaseContactListFragment.EaseContactListItemClickListener; import com.easemob.easeui.ui.EaseConversationListFragment; import com.easemob.easeui.ui.EaseConversationListFragment.EaseConversationListItemClickListener; import com.easemob.easeui.utils.EaseCommonUtils; import com.easemob.easeuisimpledemo.R; public class MainActivity extends EaseBaseActivity{ private TextView unreadLabel; private Button[] mTabs; private EaseConversationListFragment conversationListFragment; private EaseContactListFragment contactListFragment; private SettingsFragment settingFragment; private Fragment[] fragments; private int index; private int currentTabIndex; Map<String, EaseUser> contactsMap = new HashMap<String, EaseUser>(); @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_main); unreadLabel = (TextView) findViewById(R.id.unread_msg_number); mTabs = new Button[3]; mTabs[0] = (Button) findViewById(R.id.btn_conversation); mTabs[1] = (Button) findViewById(R.id.btn_address_list); mTabs[2] = (Button) findViewById(R.id.btn_setting); // 把第一个tab设为选中状态 mTabs[0].setSelected(true); conversationListFragment = new EaseConversationListFragment(); contactListFragment = new EaseContactListFragment(); settingFragment = new SettingsFragment(); contactListFragment.setContactsMap(getContacts()); contactsMap=getContacts(); conversationListFragment.setConversationListItemClickListener(new EaseConversationListItemClickListener() { @Override public void onListItemClicked(EMConversation conversation) { startActivity(new Intent(MainActivity.this, ChatActivity.class).putExtra(EaseConstant.EXTRA_USER_ID, conversation.getUserName())); } }); contactListFragment.setContactListItemClickListener(new EaseContactListItemClickListener() { @Override public void onListItemClicked(EaseUser user) { startActivity(new Intent(MainActivity.this, ChatActivity.class).putExtra(EaseConstant.EXTRA_USER_ID, user.getUsername())); } }); fragments = new Fragment[] { conversationListFragment, contactListFragment, settingFragment }; // 添加显示第一个fragment getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, conversationListFragment) .add(R.id.fragment_container, contactListFragment).hide(contactListFragment).show(conversationListFragment) .commit(); EaseUI easeUI = EaseUI.getInstance(); //需要easeui库显示用户头像和昵称设置此provider easeUI.setUserProfileProvider(new EaseUI.EaseUserProfileProvider() { @Override public EaseUser getUser(String username) { if (contactsMap == null) { return null; } Iterator<Map.Entry<String, EaseUser>> iterator = contactsMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, EaseUser> entry = iterator.next(); //兼容以前的通讯录里的已有的数据显示,加上此判断,如果是新集成的可以去掉此判断 if (!entry.getKey().equals("item_new_friends") && !entry.getKey().equals("item_groups") && !entry.getKey().equals("item_chatroom") && !entry.getKey().equals("item_robots")) { if (entry.getKey().equals(username)) { //不显示黑名单中的用户 return entry.getValue(); } } } return null; } }); } /** * button点击事件 * * @param view */ public void onTabClicked(View view) { switch (view.getId()) { case R.id.btn_conversation: index = 0; break; case R.id.btn_address_list: index = 1; break; case R.id.btn_setting: index = 2; break; } if (currentTabIndex != index) { FragmentTransaction trx = getSupportFragmentManager().beginTransaction(); trx.hide(fragments[currentTabIndex]); if (!fragments[index].isAdded()) { trx.add(R.id.fragment_container, fragments[index]); } trx.show(fragments[index]).commit(); } mTabs[currentTabIndex].setSelected(false); // 把当前tab设为选中状态 mTabs[index].setSelected(true); currentTabIndex = index; } /** * 临时生成的数据,密码皆为123456,可以登录测试接发消息 * @return */ private Map<String, EaseUser> getContacts(){ Map<String, EaseUser> contacts = new HashMap<String, EaseUser>(); for(int i = 1; i <= 10; i++){ EaseUser user = new EaseUser("easeuitest" + i); contacts.put("easeuitest" + i, user); } EaseUser user = new EaseUser("xu"); user.setNick("xujianxiang"); user.setAvatar("http://happysports.jianxingquyundong.com/image/5,112347a89bf2"); contacts.put("xu", user); user = new EaseUser("shen"); user.setNick("shenxiaojuan"); user.setAvatar("http://happysports.jianxingquyundong.com/image/5,112347a89bf2"); contacts.put("shen", user); return contacts; } }
仅献给跟我一样的菜鸟,看了应该会懂, 查看全部
环信关于昵称和图片的问题。当你去跟技术交流的时候,他们一般会给你这样一个网页,http://www.imgeek.org/article/825307638。让你自忆去看,其它他说的已经很明白了,对于大神来进。但是对于菜鸟的我还是云里雾里,于是脑补各种知识。看大神留下的工程。查看我反正说的就是要写一个getUser的具体实现。我就试试看的心里乱写一气,最后成功了。我是修改了easeui中的代码
MainActivity.java,代码如下:

package com.easemob.easeuisimpledemo.ui; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import android.R.integer; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.easemob.chat.EMConversation; import com.easemob.easeui.EaseConstant; import com.easemob.easeui.controller.EaseUI; import com.easemob.easeui.domain.EaseUser; import com.easemob.easeui.ui.EaseBaseActivity; import com.easemob.easeui.ui.EaseContactListFragment; import com.easemob.easeui.ui.EaseContactListFragment.EaseContactListItemClickListener; import com.easemob.easeui.ui.EaseConversationListFragment; import com.easemob.easeui.ui.EaseConversationListFragment.EaseConversationListItemClickListener; import com.easemob.easeui.utils.EaseCommonUtils; import com.easemob.easeuisimpledemo.R; public class MainActivity extends EaseBaseActivity{ private TextView unreadLabel; private Button[] mTabs; private EaseConversationListFragment conversationListFragment; private EaseContactListFragment contactListFragment; private SettingsFragment settingFragment; private Fragment[] fragments; private int index; private int currentTabIndex; Map<String, EaseUser> contactsMap = new HashMap<String, EaseUser>(); @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_main); unreadLabel = (TextView) findViewById(R.id.unread_msg_number); mTabs = new Button[3]; mTabs[0] = (Button) findViewById(R.id.btn_conversation); mTabs[1] = (Button) findViewById(R.id.btn_address_list); mTabs[2] = (Button) findViewById(R.id.btn_setting); // 把第一个tab设为选中状态 mTabs[0].setSelected(true); conversationListFragment = new EaseConversationListFragment(); contactListFragment = new EaseContactListFragment(); settingFragment = new SettingsFragment(); contactListFragment.setContactsMap(getContacts()); contactsMap=getContacts(); conversationListFragment.setConversationListItemClickListener(new EaseConversationListItemClickListener() { @Override public void onListItemClicked(EMConversation conversation) { startActivity(new Intent(MainActivity.this, ChatActivity.class).putExtra(EaseConstant.EXTRA_USER_ID, conversation.getUserName())); } }); contactListFragment.setContactListItemClickListener(new EaseContactListItemClickListener() { @Override public void onListItemClicked(EaseUser user) { startActivity(new Intent(MainActivity.this, ChatActivity.class).putExtra(EaseConstant.EXTRA_USER_ID, user.getUsername())); } }); fragments = new Fragment[] { conversationListFragment, contactListFragment, settingFragment }; // 添加显示第一个fragment getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, conversationListFragment) .add(R.id.fragment_container, contactListFragment).hide(contactListFragment).show(conversationListFragment) .commit(); EaseUI easeUI = EaseUI.getInstance(); //需要easeui库显示用户头像和昵称设置此provider easeUI.setUserProfileProvider(new EaseUI.EaseUserProfileProvider() { @Override public EaseUser getUser(String username) { if (contactsMap == null) { return null; } Iterator<Map.Entry<String, EaseUser>> iterator = contactsMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, EaseUser> entry = iterator.next(); //兼容以前的通讯录里的已有的数据显示,加上此判断,如果是新集成的可以去掉此判断 if (!entry.getKey().equals("item_new_friends") && !entry.getKey().equals("item_groups") && !entry.getKey().equals("item_chatroom") && !entry.getKey().equals("item_robots")) { if (entry.getKey().equals(username)) { //不显示黑名单中的用户 return entry.getValue(); } } } return null; } }); } /** * button点击事件 * * @param view */ public void onTabClicked(View view) { switch (view.getId()) { case R.id.btn_conversation: index = 0; break; case R.id.btn_address_list: index = 1; break; case R.id.btn_setting: index = 2; break; } if (currentTabIndex != index) { FragmentTransaction trx = getSupportFragmentManager().beginTransaction(); trx.hide(fragments[currentTabIndex]); if (!fragments[index].isAdded()) { trx.add(R.id.fragment_container, fragments[index]); } trx.show(fragments[index]).commit(); } mTabs[currentTabIndex].setSelected(false); // 把当前tab设为选中状态 mTabs[index].setSelected(true); currentTabIndex = index; } /** * 临时生成的数据,密码皆为123456,可以登录测试接发消息 * @return */ private Map<String, EaseUser> getContacts(){ Map<String, EaseUser> contacts = new HashMap<String, EaseUser>(); for(int i = 1; i <= 10; i++){ EaseUser user = new EaseUser("easeuitest" + i); contacts.put("easeuitest" + i, user); } EaseUser user = new EaseUser("xu"); user.setNick("xujianxiang"); user.setAvatar("http://happysports.jianxingquyundong.com/image/5,112347a89bf2"); contacts.put("xu", user); user = new EaseUser("shen"); user.setNick("shenxiaojuan"); user.setAvatar("http://happysports.jianxingquyundong.com/image/5,112347a89bf2"); contacts.put("shen", user); return contacts; } }
仅献给跟我一样的菜鸟,看了应该会懂,
15
评论

Android EaseUI 关于设置昵称、头像 android头像 环信_Android

Wxin 发表了文章 • 13326 次浏览 • 2016-02-18 19:43 • 来自相关话题

关于依赖easeui,设置头像、昵称问题
在调用EaseUI.getInstance().init初始化之后去设置用户信息提供者
//get easeui instance
EaseUI easeUI = EaseUI.getInstance();
//需要easeui库显示用户头像和昵称设置此provider
easeUI.setUserProfileProvider(new EaseUserProfileProvider() {
 
    @Override
    public EaseUser getUser(String username) {
       return getUserInfo(username);
    }
});

getUserInfo是自己实现的一个方法,在这个方法里去根据传入的username获取本地保存的对应的昵称、头像,设置给EaseUser的对象,并返回。

easeui里显示昵称、头像的时候会去调用EaseUserProfileProvider这个接口去获取EaseUser对象,会去执行在初始化之后设置的getUserInfo方法,如果没有显示昵称、头像,你就要去看getUserInfo里是否拿到昵称、头像设置给EaseUser对象了。

获取昵称、头像显示,我这里给大家两种方案,昵称、头像都保存在自己的服务器。

第一种
可以在登录之后去服务器获取所有好友的昵称、头像,包括自己的,保存在本地,getUserInfo方法里就去根据传入的username去本地获取,设置给EaseUser对象返回。

第二种
可以在getUserInfo方法里去判断本地是否有保存对应的昵称和头像,没有就发送网络请求去服务器获取对应的昵称头像保存到本地,设置给EaseUser对象返回 ,然后发送广播到聊天界面去提示刷新,刷新之后就会执行getUserInfo方法拿到本地的昵称、头像。

头像、昵称更新
用户请求你的服务器修改了昵称、头像,你的服务器去调用rest给这个用户的所有好友,发条透传消息,提示去更新本地保存的昵称、头像 查看全部
关于依赖easeui,设置头像、昵称问题
在调用EaseUI.getInstance().init初始化之后去设置用户信息提供者
//get easeui instance
EaseUI easeUI = EaseUI.getInstance();
//需要easeui库显示用户头像和昵称设置此provider
easeUI.setUserProfileProvider(new EaseUserProfileProvider() {
 
    @Override
    public EaseUser getUser(String username) {
       return getUserInfo(username);
    }
});

getUserInfo是自己实现的一个方法,在这个方法里去根据传入的username获取本地保存的对应的昵称、头像,设置给EaseUser的对象,并返回。

easeui里显示昵称、头像的时候会去调用EaseUserProfileProvider这个接口去获取EaseUser对象,会去执行在初始化之后设置的getUserInfo方法,如果没有显示昵称、头像,你就要去看getUserInfo里是否拿到昵称、头像设置给EaseUser对象了。

获取昵称、头像显示,我这里给大家两种方案,昵称、头像都保存在自己的服务器。

第一种
可以在登录之后去服务器获取所有好友的昵称、头像,包括自己的,保存在本地,getUserInfo方法里就去根据传入的username去本地获取,设置给EaseUser对象返回。

第二种
可以在getUserInfo方法里去判断本地是否有保存对应的昵称和头像,没有就发送网络请求去服务器获取对应的昵称头像保存到本地,设置给EaseUser对象返回 ,然后发送广播到聊天界面去提示刷新,刷新之后就会执行getUserInfo方法拿到本地的昵称、头像。

头像、昵称更新
用户请求你的服务器修改了昵称、头像,你的服务器去调用rest给这个用户的所有好友,发条透传消息,提示去更新本地保存的昵称、头像
3
评论

Android接收不到消息(普通消息,透传消息、离线消息)? 透传 环信_Android

zhuhy 发表了文章 • 4860 次浏览 • 2016-02-16 20:33 • 来自相关话题

普通消息收不到

    发送消息的EMCallBack的onSuccess方法被回调成功。我用后台查询所有聊天记录也能查到我客户端发送的消息,但是客户端却无法接收到发送的消息。------看下有注册接收消息的监听吗,你在onResume方法中加上注册接收消息的监听,EMChatManager.getInstance().registerEventListener(this,
                new EMNotifierEvent.Event { EMNotifierEvent.Event.EventNewMessage ,
                EMNotifierEvent.Event.EventOfflineMessage,
                EMNotifierEvent.Event.EventConversationListChanged});
如果我用环信后台发送测试消息,客户端却能正常接收-------看下发送消息是否单聊消息,将这句注释掉
//如果是群聊,设置chattype,默认是单聊 message.setChatType(ChatType.GroupChat);
发送消息有扩展消息的话,发送成功,接收不到的话,看下你发送的类型和接收类型对吗。发送的是整型的话,接收就是有整型接收,接收类型要一致。

透传消息收不到

    接收不到透传消息,首先看下消息是否发送成功,消息发送成功的话,接收不到透传消息,检查看下在注册完接收消息的监听后又加上这句吗
注:最后要通知sdk,UI 已经初始化完毕,注册了相应的receiver和listener, 可以接受broadcast了 EMChat.getInstance().setAppInited(); 离线透传消息也是走的普通透传消息的监听。

离线消息接收不到

    看下有注册离线消息监听吗EventOfflineMessage,退出程序的话或者进程不在的话,消息就接收不到了,android的离线消息保存在服务端,用户上线之后接收到。

    对于离线消息,CMD和普通的消息处理方式不太一样,CMD会被一条一条推送过来,而普通消息会在3秒左右推送一次,event data 是离线消息数组

    使用广播接收消息的话,在注册完广播监听之后,一定要加上这句 EMChat.getInstance().setAppInited();切换页面接收不到的话,看下设置的广播优先级,使用广播接收消息的话,普通消息和离线消息走的是同一个广播NewMessageBroadcastReceiver()。 查看全部
普通消息收不到

    发送消息的EMCallBack的onSuccess方法被回调成功。我用后台查询所有聊天记录也能查到我客户端发送的消息,但是客户端却无法接收到发送的消息。------看下有注册接收消息的监听吗,你在onResume方法中加上注册接收消息的监听,EMChatManager.getInstance().registerEventListener(this,
                new EMNotifierEvent.Event { EMNotifierEvent.Event.EventNewMessage ,
                EMNotifierEvent.Event.EventOfflineMessage,
                EMNotifierEvent.Event.EventConversationListChanged});
如果我用环信后台发送测试消息,客户端却能正常接收-------看下发送消息是否单聊消息,将这句注释掉
//如果是群聊,设置chattype,默认是单聊 message.setChatType(ChatType.GroupChat);
发送消息有扩展消息的话,发送成功,接收不到的话,看下你发送的类型和接收类型对吗。发送的是整型的话,接收就是有整型接收,接收类型要一致。

透传消息收不到

    接收不到透传消息,首先看下消息是否发送成功,消息发送成功的话,接收不到透传消息,检查看下在注册完接收消息的监听后又加上这句吗
注:最后要通知sdk,UI 已经初始化完毕,注册了相应的receiver和listener, 可以接受broadcast了 EMChat.getInstance().setAppInited(); 离线透传消息也是走的普通透传消息的监听。

离线消息接收不到

    看下有注册离线消息监听吗EventOfflineMessage,退出程序的话或者进程不在的话,消息就接收不到了,android的离线消息保存在服务端,用户上线之后接收到。

    对于离线消息,CMD和普通的消息处理方式不太一样,CMD会被一条一条推送过来,而普通消息会在3秒左右推送一次,event data 是离线消息数组

    使用广播接收消息的话,在注册完广播监听之后,一定要加上这句 EMChat.getInstance().setAppInited();切换页面接收不到的话,看下设置的广播优先级,使用广播接收消息的话,普通消息和离线消息走的是同一个广播NewMessageBroadcastReceiver()。
4
评论

关于Android在添加好友时邀请收不到的问题 环信_Android

王庆伟 发表了文章 • 3904 次浏览 • 2016-02-15 19:37 • 来自相关话题

    在我们集成环信的sdk时,经常会遇到这样一个问题,在我们添加好友时,邀请发出了但是那边却收不到的尴尬情况,针对这样的问题,系统的分析一下,这其中可能的原因:
 1. 首先我们要看看好友监听是否在application或MainActivity中注册,要保证在接收邀请时,监听处于监听状态,也就是没有被消毁和取消注册。
2. 检查监听注册是否正确,在监听的下方是否加了:EMChat.getInstance().setAppInited();
3. 打个断点看看,这个好友邀请的监听onContactInvited(String username,String reason)是否在执行(见Demo中DemoHelper),具体代码如下:public void onContactInvited(String username, String reason) {
// 接到邀请的消息,如果不处理(同意或拒绝),掉线后,服务器会自动再发过来,所以客户端不需要重复提醒
List<InviteMessage> msgs = inviteMessgeDao.getMessagesList();

for (InviteMessage inviteMessage : msgs) {
if (inviteMessage.getGroupId() == null && inviteMessage.getFrom().equals(username)) {
inviteMessgeDao.deleteMessage(username);
}
}
// 自己封装的javabean
InviteMessage msg = new InviteMessage();
msg.setFrom(username);
msg.setTime(System.currentTimeMillis());
msg.setReason(reason);
Log.d(TAG, username + "请求加你为好友,reason: " + reason);
// 设置相应status
msg.setStatus(InviteMesageStatus.BEINVITEED);
notifyNewIviteMessage(msg);
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_CONTACT_CHANAGED));
}
 
   当然,类似的群组邀请收不到的问题也是类似的,具体排查思路和上面雷同,邀请监听的代码如下:/**
* 群组变动监听
*/
class MyGroupChangeListener implements EMGroupChangeListener {

@Override
public void onInvitationReceived(String groupId, String groupName, String inviter, String reason) {

boolean hasGroup = false;
for (EMGroup group : EMGroupManager.getInstance().getAllGroups()) {
if (group.getGroupId().equals(groupId)) {
hasGroup = true;
break;
}
}
if (!hasGroup)
return;

// 被邀请
String st3 = appContext.getString(R.string.Invite_you_to_join_a_group_chat);
EMMessage msg = EMMessage.createReceiveMessage(Type.TXT);
msg.setChatType(ChatType.GroupChat);
msg.setFrom(inviter);
msg.setTo(groupId);
msg.setMsgId(UUID.randomUUID().toString());
msg.addBody(new TextMessageBody(inviter + " " +st3));
// 保存邀请消息
EMChatManager.getInstance().saveMessage(msg);
// 提醒新消息
getNotifier().viberateAndPlayTone(msg);
//发送local广播
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onInvitationAccpted(String groupId, String inviter, String reason) {
}
@Override
public void onInvitationDeclined(String groupId, String invitee, String reason) {
}

@Override
public void onUserRemoved(String groupId, String groupName) {
//TODO 提示用户被T了,demo省略此步骤
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onGroupDestroy(String groupId, String groupName) {
// 群被解散
//TODO 提示用户群被解散,demo省略
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onApplicationReceived(String groupId, String groupName, String applyer, String reason) {

// 用户申请加入群聊
InviteMessage msg = new InviteMessage();
msg.setFrom(applyer);
msg.setTime(System.currentTimeMillis());
msg.setGroupId(groupId);
msg.setGroupName(groupName);
msg.setReason(reason);
Log.d(TAG, applyer + " 申请加入群聊:" + groupName);
msg.setStatus(InviteMesageStatus.BEAPPLYED);
notifyNewIviteMessage(msg);
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onApplicationAccept(String groupId, String groupName, String accepter) {

String st4 = appContext.getString(R.string.Agreed_to_your_group_chat_application);
// 加群申请被同意
EMMessage msg = EMMessage.createReceiveMessage(Type.TXT);
msg.setChatType(ChatType.GroupChat);
msg.setFrom(accepter);
msg.setTo(groupId);
msg.setMsgId(UUID.randomUUID().toString());
msg.addBody(new TextMessageBody(accepter + " " +st4));
// 保存同意消息
EMChatManager.getInstance().saveMessage(msg);
// 提醒新消息
getNotifier().viberateAndPlayTone(msg);
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onApplicationDeclined(String groupId, String groupName, String decliner, String reason) {
// 加群申请被拒绝,demo未实现
}
}
  查看全部
    在我们集成环信的sdk时,经常会遇到这样一个问题,在我们添加好友时,邀请发出了但是那边却收不到的尴尬情况,针对这样的问题,系统的分析一下,这其中可能的原因:
 1. 首先我们要看看好友监听是否在application或MainActivity中注册,要保证在接收邀请时,监听处于监听状态,也就是没有被消毁和取消注册。
2. 检查监听注册是否正确,在监听的下方是否加了:EMChat.getInstance().setAppInited();
3. 打个断点看看,这个好友邀请的监听onContactInvited(String username,String reason)是否在执行(见Demo中DemoHelper),具体代码如下:
public void onContactInvited(String username, String reason) {
// 接到邀请的消息,如果不处理(同意或拒绝),掉线后,服务器会自动再发过来,所以客户端不需要重复提醒
List<InviteMessage> msgs = inviteMessgeDao.getMessagesList();

for (InviteMessage inviteMessage : msgs) {
if (inviteMessage.getGroupId() == null && inviteMessage.getFrom().equals(username)) {
inviteMessgeDao.deleteMessage(username);
}
}
// 自己封装的javabean
InviteMessage msg = new InviteMessage();
msg.setFrom(username);
msg.setTime(System.currentTimeMillis());
msg.setReason(reason);
Log.d(TAG, username + "请求加你为好友,reason: " + reason);
// 设置相应status
msg.setStatus(InviteMesageStatus.BEINVITEED);
notifyNewIviteMessage(msg);
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_CONTACT_CHANAGED));
}

 
   当然,类似的群组邀请收不到的问题也是类似的,具体排查思路和上面雷同,邀请监听的代码如下:
/**
* 群组变动监听
*/
class MyGroupChangeListener implements EMGroupChangeListener {

@Override
public void onInvitationReceived(String groupId, String groupName, String inviter, String reason) {

boolean hasGroup = false;
for (EMGroup group : EMGroupManager.getInstance().getAllGroups()) {
if (group.getGroupId().equals(groupId)) {
hasGroup = true;
break;
}
}
if (!hasGroup)
return;

// 被邀请
String st3 = appContext.getString(R.string.Invite_you_to_join_a_group_chat);
EMMessage msg = EMMessage.createReceiveMessage(Type.TXT);
msg.setChatType(ChatType.GroupChat);
msg.setFrom(inviter);
msg.setTo(groupId);
msg.setMsgId(UUID.randomUUID().toString());
msg.addBody(new TextMessageBody(inviter + " " +st3));
// 保存邀请消息
EMChatManager.getInstance().saveMessage(msg);
// 提醒新消息
getNotifier().viberateAndPlayTone(msg);
//发送local广播
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onInvitationAccpted(String groupId, String inviter, String reason) {
}
@Override
public void onInvitationDeclined(String groupId, String invitee, String reason) {
}

@Override
public void onUserRemoved(String groupId, String groupName) {
//TODO 提示用户被T了,demo省略此步骤
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onGroupDestroy(String groupId, String groupName) {
// 群被解散
//TODO 提示用户群被解散,demo省略
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onApplicationReceived(String groupId, String groupName, String applyer, String reason) {

// 用户申请加入群聊
InviteMessage msg = new InviteMessage();
msg.setFrom(applyer);
msg.setTime(System.currentTimeMillis());
msg.setGroupId(groupId);
msg.setGroupName(groupName);
msg.setReason(reason);
Log.d(TAG, applyer + " 申请加入群聊:" + groupName);
msg.setStatus(InviteMesageStatus.BEAPPLYED);
notifyNewIviteMessage(msg);
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onApplicationAccept(String groupId, String groupName, String accepter) {

String st4 = appContext.getString(R.string.Agreed_to_your_group_chat_application);
// 加群申请被同意
EMMessage msg = EMMessage.createReceiveMessage(Type.TXT);
msg.setChatType(ChatType.GroupChat);
msg.setFrom(accepter);
msg.setTo(groupId);
msg.setMsgId(UUID.randomUUID().toString());
msg.addBody(new TextMessageBody(accepter + " " +st4));
// 保存同意消息
EMChatManager.getInstance().saveMessage(msg);
// 提醒新消息
getNotifier().viberateAndPlayTone(msg);
broadcastManager.sendBroadcast(new Intent(Constant.ACTION_GROUP_CHANAGED));
}

@Override
public void onApplicationDeclined(String groupId, String groupName, String decliner, String reason) {
// 加群申请被拒绝,demo未实现
}
}

 
0
评论

SDK默认是自动登陆的,我想改成手动登陆的可以吗? 环信_Android

环信专业服务 发表了文章 • 2019 次浏览 • 2016-01-27 00:00 • 来自相关话题

可以,只要调用EMChat.getInstance().setAutoLogin(false)放在SDK初始化的前边就行
可以,只要调用EMChat.getInstance().setAutoLogin(false)放在SDK初始化的前边就行
0
评论

接收不到透传,请问是什么原因? 透传 收不到推送 环信_Android

环信专业服务 发表了文章 • 1664 次浏览 • 2016-01-27 00:00 • 来自相关话题

如果普通消息能收到的话就要看EMChat.getInstance().setAppInited();添加了没。(只用调一次即可,建议放到主activity中)。
如果普通消息能收到的话就要看EMChat.getInstance().setAppInited();添加了没。(只用调一次即可,建议放到主activity中)。
2
评论

多个客户端登录同一个环信账号,前一个用户被踢,走了回调onConnectionConflict()方法,然后我去调用EMChat.getInstance().isLoggedIn();依然是true ,请问是什么原因呢? 环信_Android

环信专业服务 发表了文章 • 6133 次浏览 • 2016-01-27 00:00 • 来自相关话题

虽然走了onConnectionConflict()回调,有可能没做logout处理,这就比如一个设备登陆A账号后断网然后另一个设备再登录A账号,等原设备联网后还是会登录A账号。
虽然走了onConnectionConflict()回调,有可能没做logout处理,这就比如一个设备登陆A账号后断网然后另一个设备再登录A账号,等原设备联网后还是会登录A账号。
1
评论

你们的log日志在哪? 环信_Android

环信专业服务 发表了文章 • 856 次浏览 • 2016-01-27 00:00 • 来自相关话题

/sdcard/Android/data/your_packet/日期/000.html。注意是html格式的。
/sdcard/Android/data/your_packet/日期/000.html。注意是html格式的。
0
评论

关于打包混淆有注意的吗? 环信_Android

环信专业服务 发表了文章 • 1233 次浏览 • 2016-01-27 00:00 • 来自相关话题

如果apk要打包混淆的话,要关闭debug模式。
如果apk要打包混淆的话,要关闭debug模式。
0
评论

请问下,环信发送图片那里是断点发送的吗?如果断开了,隔了一段时间,怎么重连? 重连 环信_Android

环信专业服务 发表了文章 • 1385 次浏览 • 2016-01-27 00:00 • 来自相关话题

图片发送不会断点续传,发送不成功超时后会出现一个叹号,点击之后会重新发送。
图片发送不会断点续传,发送不成功超时后会出现一个叹号,点击之后会重新发送。
0
评论

添加好友申请,接收方sdk有打印收到申请,监听收不到,同时打印这句话:received roster presence, but app is not ready,请问是什么原因? 好友申请 环信_Android

环信专业服务 发表了文章 • 1512 次浏览 • 2016-01-27 00:00 • 来自相关话题

这个是因为没有添加 EMChat.getInstance().setAppInited();
这个是因为没有添加 EMChat.getInstance().setAppInited();
0
评论

环信安卓demo清除缓存的功能在哪? 环信_Android

环信专业服务 发表了文章 • 2149 次浏览 • 2016-01-27 00:00 • 来自相关话题

没有只清除内存的方法,deleteConversation和clearConversation都会删除会话和本地db中的记录。不同的是clearConversation会在内存中保留会话对象。demo中调clearConversation清空后没有在会话列表显示出空会话,是因为对消息数为零的会话做了过滤。 查看全部
没有只清除内存的方法,deleteConversation和clearConversation都会删除会话和本地db中的记录。不同的是clearConversation会在内存中保留会话对象。demo中调clearConversation清空后没有在会话列表显示出空会话,是因为对消息数为零的会话做了过滤。
0
评论

好友列表的回调正要回来,这时我的网络断了,几天或者更长时间后,我重新连接上了,回调还会来吗? 环信_Android

环信专业服务 发表了文章 • 1143 次浏览 • 2016-01-27 00:00 • 来自相关话题

当再次连接到服务器,肯定会收到回调的。
当再次连接到服务器,肯定会收到回调的。
0
评论

我们接受不到消息了,但退出重登就会收到上次没收到的。这个可能是什么问题? 收不到推送 环信_Android

环信专业服务 发表了文章 • 1636 次浏览 • 2016-01-27 00:00 • 来自相关话题

一种情况可能你被踢了但没做登出处理,另一种情况可能在没调登出前多次调用登陆。
一种情况可能你被踢了但没做登出处理,另一种情况可能在没调登出前多次调用登陆。
0
评论

环信是否有登陆状态的判断? 环信_Android

环信专业服务 发表了文章 • 4678 次浏览 • 2016-01-27 00:00 • 来自相关话题

可以用EMChat.getInstance().isLoggedIn();
可以用EMChat.getInstance().isLoggedIn();
2
评论

客户端到客户端的消息加密应该调什么API呢? api 环信_Android

环信专业服务 发表了文章 • 1403 次浏览 • 2016-01-27 00:00 • 来自相关话题

客户可以先把消息内容按照自己的算法加密之后再通过环信来发送,iOS的回调是EMChatManagerEncryptionDelegate.h;安卓是EncryptProvider,接口说明在http://www.easemob.com/apidoc/android/chat/ 查看全部
客户可以先把消息内容按照自己的算法加密之后再通过环信来发送,iOS的回调是EMChatManagerEncryptionDelegate.h;安卓是EncryptProvider,接口说明在http://www.easemob.com/apidoc/android/chat/
0
评论

用户客户端收到大量的透传消息和普通消息时,在透传消息的监听里面去创建消息去importmessage,然后会出现消息发送的回调走的onerror,但是对方已经收到了,这个会是什么原因导致的。 透传 透传消息 环信_Android

环信专业服务 发表了文章 • 1182 次浏览 • 2016-01-27 00:00 • 来自相关话题

在透传监听那块不可以调用importmessage,因为这里面有个notify的提醒会导致一些其他的问题,如果想保存的话可以调用saveMessage这个方法即可。
在透传监听那块不可以调用importmessage,因为这里面有个notify的提醒会导致一些其他的问题,如果想保存的话可以调用saveMessage这个方法即可。
0
评论

我调用了两次login,结果app打包出来报错。 环信_Android

环信专业服务 发表了文章 • 1316 次浏览 • 2016-01-27 00:00 • 来自相关话题

只建议调用一次login,在登陆时可以添加个是否已经登陆的判断,登录了就不必再次登陆。
只建议调用一次login,在登陆时可以添加个是否已经登陆的判断,登录了就不必再次登陆。