EaseUI

EaseUI

82
评论

【有奖调查】环信T恤文案征集,你来我们就送! T恤 有奖调查

beyond 发表了文章 • 891 次浏览 • 2018-06-01 16:51 • 来自相关话题

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
楼层6:Eternally(额外奖励,提建议被采纳)楼层8:°﹏D.X.F.VIP 楼层18:空谷幽兰楼层28:skoxe楼层38.咚咚 查看全部
微信图片_20180601155239.jpg

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
  1. 楼层6:Eternally(额外奖励,提建议被采纳)
  2. 楼层8:°﹏D.X.F.VIP 
  3. 楼层18:空谷幽兰
  4. 楼层28:skoxe
  5. 楼层38.咚咚

11
评论

【有问必答】有温度,有态度,有速度的IMGeek社区! 有问必答 问题已解决 最佳回复

beyond 发表了文章 • 2297 次浏览 • 2018-05-24 17:45 • 来自相关话题

5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!




  现在,从一个提问开始你的IMGeek社区之旅。 查看全部
5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!
TIM截图20180524175557.png

  现在,从一个提问开始你的IMGeek社区之旅。
8
回复

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

JuN_Yong Wang 回复了问题 • 10 人关注 • 8569 次浏览 • 2018-02-07 11:49 • 来自相关话题

16
评论

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

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

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信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
回复

android 接入easeui后 clean都没有问题 但是run后 会提示TaskExecutionException Android EaseUI

陈日明 回复了问题 • 2 人关注 • 109 次浏览 • 2018-07-05 09:15 • 来自相关话题

1
回复

集成EaseUI发送消息成功后怎么获得发送的消息内容 iOS EaseUI

回复

磨不平的棱角。 回复了问题 • 1 人关注 • 315 次浏览 • 2018-04-09 15:14 • 来自相关话题

0
回复

AndroidStudio3.0导入SDK3.3.9的EaseUI,在布局中使用EaseUI的自定义View不自动提示的问题 EaseUI

回复

qwer327146 发起了问题 • 1 人关注 • 565 次浏览 • 2018-02-25 21:46 • 来自相关话题

1
评论

【环信集成指南】Android sdk 的两种导入方式 sdk 导入 EaseUI

baoshu 发表了文章 • 1013 次浏览 • 2018-02-07 16:52 • 来自相关话题

环信AndroidSDK官网文档提供了两种导入方式,线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活,今天就跟大家详细讲解下两种方式的具体实现,小伙伴们可以根据自己的业务自由选择。1.线上gradle远程连接导入
线上导入方便快捷,直接使用环信最新版sdk,但是值得注意的是线上的sdk不包含实施音视频,也不支持easeui库线上导入
首先在项目根目录build.gradle文件的allprojects→repositories属性下加入远程库地址maven { url "https://raw.githubusercontent. ... ot%3B }


 然后在module的build.gradle里加入以下代码android {
//use legacy for android 6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
//Optional compile for GCM (Google Cloud Messaging).
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
}官网文档参考
 
2.本地导入(sdk和easeui两种)
本地导入比较灵活,可以根据自己项目的开发需求根据功能去导入,比如sdk分为有实时音视频的sdk和没有实时音视频的sdk包,用户大可根据自己的需求去导入,这样稍微减少了sdk包大的问题
 easeui的导入
   本地导入也可以导入easeui库,easeui库是基于sdk开发的带ui的库,功能基本都实现,并携带写好的ui,用户在看过demo示例之后认为easeui符合自己的开发需求可以直接依赖Easeui,导入方式 
Eclipse 中导入
   先把 EaseUI 项目导入到 Eclipse 中。
在自己的项目中把 EaseUI 作为一个 library 引入。右键你的项目→Android→点击右下角的Add按钮→选中 EaseUI→OK→OK。
Android Studio 中导入
打开你的 AS 项目→File→New→Import Module→选择或输入 EaseUI 库路径→Next→Next→Finish。
 
sdk导入
   很多用户是不知道sdk是包含哪些文件的,sdk是有jar包和so包组成,其中jar包命名hyphenatechat_3.3.8.jar  
其中后边的数字3.3.8就是使用的sdk的具体版本号。
   So包有arm64-v8a、armeabi、armeabi-v7a、x86 其中x86根据自己项目需求可以去了,x86针对的是虚拟机,可以直接去了。
   armeabi和armeabi-v7a是相近似的指令集,armeabi和armeabi-v7a可以互换,v7a是增强型指令集,运行速度,效率均有所提高,他们都是32位指令,并且兼容,arm64-v8a对应arm64位指令集






有实时音视频和没有实时音视频包
   libs.av 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
   libs.lite 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的文件  文档参考




 

 

 
 
 
  查看全部
环信AndroidSDK官网文档提供了两种导入方式,线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活,今天就跟大家详细讲解下两种方式的具体实现,小伙伴们可以根据自己的业务自由选择。
1.线上gradle远程连接导入

线上导入方便快捷,直接使用环信最新版sdk,但是值得注意的是线上的sdk不包含实施音视频,也不支持easeui库线上导入


首先在项目根目录build.gradle文件的allprojects→repositories属性下加入远程库地址
maven { url "https://raw.githubusercontent. ... ot%3B }


 然后在module的build.gradle里加入以下代码
android {
//use legacy for android 6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
//Optional compile for GCM (Google Cloud Messaging).
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
}
官网文档参考
 
2.本地导入(sdk和easeui两种)

本地导入比较灵活,可以根据自己项目的开发需求根据功能去导入,比如sdk分为有实时音视频的sdk和没有实时音视频的sdk包,用户大可根据自己的需求去导入,这样稍微减少了sdk包大的问题


 easeui的导入
   本地导入也可以导入easeui库,easeui库是基于sdk开发的带ui的库,功能基本都实现,并携带写好的ui,用户在看过demo示例之后认为easeui符合自己的开发需求可以直接依赖Easeui,导入方式 
Eclipse 中导入
   先把 EaseUI 项目导入到 Eclipse 中。
在自己的项目中把 EaseUI 作为一个 library 引入。右键你的项目→Android→点击右下角的Add按钮→选中 EaseUI→OK→OK。
Android Studio 中导入
打开你的 AS 项目→File→New→Import Module→选择或输入 EaseUI 库路径→Next→Next→Finish。
 
sdk导入
   很多用户是不知道sdk是包含哪些文件的,sdk是有jar包和so包组成,其中jar包命名hyphenatechat_3.3.8.jar  
其中后边的数字3.3.8就是使用的sdk的具体版本号。
   So包有arm64-v8a、armeabi、armeabi-v7a、x86 其中x86根据自己项目需求可以去了,x86针对的是虚拟机,可以直接去了。
   armeabi和armeabi-v7a是相近似的指令集,armeabi和armeabi-v7a可以互换,v7a是增强型指令集,运行速度,效率均有所提高,他们都是32位指令,并且兼容,arm64-v8a对应arm64位指令集

3.3_.8_sdk_.png


有实时音视频和没有实时音视频包
   libs.av 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
   libs.lite 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的文件  文档参考

 

 

 
 
 
 
0
回复

求大神解决啊,快崩溃了 EaseUI

回复

FrankMA 发起了问题 • 1 人关注 • 697 次浏览 • 2018-01-28 18:25 • 来自相关话题

1
回复

关于EaseUI 3.3.0 界面控件问题 EaseUI ease iOS集成easeUI #ios iOS 更新

范大大 回复了问题 • 2 人关注 • 501 次浏览 • 2018-01-20 17:49 • 来自相关话题

1
回复

未知错误。。。找了很多方法都解决不了啊, 急需 EaseUI

geri_yang 回复了问题 • 2 人关注 • 926 次浏览 • 2017-11-15 18:50 • 来自相关话题

0
回复

如何开启反垃圾服务? 环信_Android EaseUI

回复

涸橙蓟 发起了问题 • 1 人关注 • 550 次浏览 • 2017-10-25 18:57 • 来自相关话题

0
回复

如何开启反垃圾服务? 环信_Android EaseUI

回复

涸橙蓟 发起了问题 • 1 人关注 • 504 次浏览 • 2017-10-25 18:57 • 来自相关话题

2
最佳

android EaseUI 使用的是什么推送?没有使用小米和华为GCM的情况下 EaseUI 推送 安卓

涸橙蓟 回复了问题 • 2 人关注 • 3703 次浏览 • 2017-10-12 19:09 • 来自相关话题

2
回复

环信EaseUI怎么用Cocoapods导入到项目中 EaseUI

梁森 回复了问题 • 3 人关注 • 6519 次浏览 • 2017-09-29 11:05 • 来自相关话题

6
回复

环信cocoapods集成EaseUI 继承时报错 iOS swift EaseUI cocoapod

梁森 回复了问题 • 4 人关注 • 967 次浏览 • 2017-09-29 11:04 • 来自相关话题

0
回复

添加了EaseUI后原有的MJPhotoView.h报错 EaseUI MJPhotoView.h

回复

- 久伴 发起了问题 • 1 人关注 • 663 次浏览 • 2017-08-11 15:50 • 来自相关话题

0
回复

发送定位以及拍照就崩溃,录音会提示 录音失败 服务器是否连接等 EaseUI

回复

发起了问题 • 1 人关注 • 740 次浏览 • 2017-06-27 12:00 • 来自相关话题

1
回复

The number of method references in a .dex file cannot exceed 64K. EaseUI 环信_Android

回复

回复了问题 • 1 人关注 • 831 次浏览 • 2017-06-21 11:00 • 来自相关话题

1
回复

EaseUI3.0在7.0中,文字消息经常显示不全 EaseUI Easeui 3.x

lzan13 回复了问题 • 2 人关注 • 679 次浏览 • 2017-05-08 19:42 • 来自相关话题

1
回复

集成EaseUI时报错 EaseUI

zhoumin 回复了问题 • 2 人关注 • 1358 次浏览 • 2017-04-16 11:59 • 来自相关话题

1
回复

字符串未定义错误 EaseUI

zhoumin 回复了问题 • 2 人关注 • 528 次浏览 • 2017-04-16 09:32 • 来自相关话题

1
回复

Eclipse 集成 EaseUI 库报错,NoClassDefFoundError 环信_Android EaseUI eclipse

Wxin 回复了问题 • 2 人关注 • 1927 次浏览 • 2017-04-15 21:53 • 来自相关话题

1
回复

环信IOS个人信息、头像不能用了吗?还是更新什么了? 会话列表 好友 EaseUI 环信_iOS

donghai 回复了问题 • 2 人关注 • 625 次浏览 • 2017-04-08 07:00 • 来自相关话题

1
回复

新手求问Androidstudio导入环信easeUI EaseUI

回复

衣冠禽兽 回复了问题 • 1 人关注 • 620 次浏览 • 2017-03-09 03:38 • 来自相关话题

4
评论

Android 依赖EaseUI联系人列表显示昵称 修改之前的发起的那篇文章 Android EaseUI 昵称 昵称头像

LoneWolf 发表了文章 • 775 次浏览 • 2017-02-17 00:54 • 来自相关话题

在设置时要说明 好友数据由app的服务器提供的  所以服务端也要集成
注意 我的页面以及类都是从Demo中复制过来的
我们必须要知道好友数据是在什么位置进行数据适配的
在UserDao中有一个方法是saveContactList这个就是进行好友数据保存的操作了

之前我自己创建了一个数据库  进行操作发现出现很多问题  修改的地方也比较多 走了很多弯路
这次经过观察  Demo已经为我们创建了数据库和表 我们只需要在正确的位置把我们获取的数据保存起来就可以了
那么我们的任务就是定位这个方法是在哪调用的,经过代码的跟踪,最终定位到这个位置在
DemoHelper中asyncFetchContactsFromServer()方法
这个方法在没有修改的情况下是从环信服务器获取的好友数据
为了方便我把代码贴出来public void asyncFetchContactsFromServer(final EMValueCallBack<List<String>> callback) {
if (isSyncingContactsWithServer) {
return;
}
isSyncingContactsWithServer = true;
new Thread() {
@Override public void run() {
List<String> usernames = null;
try {
usernames = EMClient.getInstance().contactManager().getAllContactsFromServer(); // in case that logout already before server returns, we should return immediately
if (!isLoggedIn()) {
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false); return;
}

//这里就是开始从自己app的服务器获取好友数据了Map<String, EaseUser> userlist = new HashMap<String, EaseUser>();
String url = AppConfig.BASE_URL+AppConfig.GETFRIENDS;
HashMap<String, String> map = new HashMap<>(); map.put("userName",PreforenceUtils.getStringData("userInfo","hxid"));
Log.e(TAG,url);
MyHttpUtils myHttpUtils = new MyHttpUtils();
String s = myHttpUtils.httpPost(url, "", "&user", map.toString());
Log.e(TAG,s);
JSONArray jarr = new JSONArray(s);
if(jarr.length()!=0||jarr != null){
for (int i = 0; i < jarr.length(); i++) {
JSONObject jobj = (JSONObject) jarr.get(i);
EaseUser easeUser = new EaseUser(jobj.getString("FRIENDID")); easeUser.setNick(jobj.getString("FRIENDNICKNAME"));
easeUser.setAvatar("");
Log.e(TAG,easeUser.toString());
EaseCommonUtils.setUserInitialLetter(easeUser);
//这是关键的地方userlist.put(jobj.getString("FRIENDID"), easeUser);
}

//这是就是将数据转换成Easeuser对象 的原有方式 已经注释掉了 其他代码没有做修改
/*for (String username : usernames) {
EaseUser user = new EaseUser(username);
EaseCommonUtils.setUserInitialLetter(user);
userlist.put(username, user); }*/


// save the contact list to cache getContactList().clear(); getContactList().putAll(userlist); // save the contact list to database
UserDao dao = new UserDao(appContext);
List<EaseUser> users = new ArrayList<EaseUser>(userlist.values());
Log.e(TAG,"获取联系人");
//报讯联系人的数据就是在这了dao.saveContactList(users);
demoModel.setContactSynced(true);
EMLog.d(TAG, "set contact syn status to true");
isContactsSyncedWithServer = true; isSyncingContactsWithServer = false;
//notify sync success notifyContactsSyncListener(true); getUserProfileManager().asyncFetchContactInfosFromServer(usernames, new EMValueCallBack<List<EaseUser>>() {
@Override public void onSuccess(List<EaseUser> uList) {
updateContactList(uList);
getUserProfileManager().notifyContactInfosSyncListener(true);
}
@Override public void onError(int error, String errorMsg) { } });
if (callback != null) { callback.onSuccess(usernames); } } }
catch (HyphenateException e) { d
emoModel.setContactSynced(false);
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false);
e.printStackTrace();
if (callback != null) {
callback.onError(e.getErrorCode(), e.toString()); } }
catch (JSONException e) { e.printStackTrace(); } } }.start(); }
以上就是我的代码了   希望有用  我已经解决昵称的问题了 至于头像也是一样的道理了
之前的文章有很多问题 这里给小伙们说声对不起了 查看全部
在设置时要说明 好友数据由app的服务器提供的  所以服务端也要集成
注意 我的页面以及类都是从Demo中复制过来的
我们必须要知道好友数据是在什么位置进行数据适配的
在UserDao中有一个方法是saveContactList这个就是进行好友数据保存的操作了

之前我自己创建了一个数据库  进行操作发现出现很多问题  修改的地方也比较多 走了很多弯路
这次经过观察  Demo已经为我们创建了数据库和表 我们只需要在正确的位置把我们获取的数据保存起来就可以了
那么我们的任务就是定位这个方法是在哪调用的,经过代码的跟踪,最终定位到这个位置在
DemoHelper中asyncFetchContactsFromServer()方法
这个方法在没有修改的情况下是从环信服务器获取的好友数据
为了方便我把代码贴出来
public void asyncFetchContactsFromServer(final EMValueCallBack<List<String>> callback) {
if (isSyncingContactsWithServer) {
return;
}
isSyncingContactsWithServer = true;
new Thread() {
@Override public void run() {
List<String> usernames = null;
try {
usernames = EMClient.getInstance().contactManager().getAllContactsFromServer(); // in case that logout already before server returns, we should return immediately
if (!isLoggedIn()) {
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false); return;
}

//这里就是开始从自己app的服务器获取好友数据了
Map<String, EaseUser> userlist = new HashMap<String, EaseUser>();
String url = AppConfig.BASE_URL+AppConfig.GETFRIENDS;
HashMap<String, String> map = new HashMap<>(); map.put("userName",PreforenceUtils.getStringData("userInfo","hxid"));
Log.e(TAG,url);
MyHttpUtils myHttpUtils = new MyHttpUtils();
String s = myHttpUtils.httpPost(url, "", "&user", map.toString());
Log.e(TAG,s);
JSONArray jarr = new JSONArray(s);
if(jarr.length()!=0||jarr != null){
for (int i = 0; i < jarr.length(); i++) {
JSONObject jobj = (JSONObject) jarr.get(i);
EaseUser easeUser = new EaseUser(jobj.getString("FRIENDID")); easeUser.setNick(jobj.getString("FRIENDNICKNAME"));
easeUser.setAvatar("");
Log.e(TAG,easeUser.toString());
EaseCommonUtils.setUserInitialLetter(easeUser);

//这是关键的地方
userlist.put(jobj.getString("FRIENDID"), easeUser);
}

//这是就是将数据转换成Easeuser对象 的原有方式 已经注释掉了 其他代码没有做修改
/*for (String username : usernames) {
EaseUser user = new EaseUser(username);
EaseCommonUtils.setUserInitialLetter(user);
userlist.put(username, user); }*/


// save the contact list to cache getContactList().clear(); getContactList().putAll(userlist); // save the contact list to database
UserDao dao = new UserDao(appContext);
List<EaseUser> users = new ArrayList<EaseUser>(userlist.values());
Log.e(TAG,"获取联系人");

//报讯联系人的数据就是在这了
dao.saveContactList(users);
demoModel.setContactSynced(true);
EMLog.d(TAG, "set contact syn status to true");
isContactsSyncedWithServer = true; isSyncingContactsWithServer = false;
//notify sync success notifyContactsSyncListener(true); getUserProfileManager().asyncFetchContactInfosFromServer(usernames, new EMValueCallBack<List<EaseUser>>() {
@Override public void onSuccess(List<EaseUser> uList) {
updateContactList(uList);
getUserProfileManager().notifyContactInfosSyncListener(true);
}
@Override public void onError(int error, String errorMsg) { } });
if (callback != null) { callback.onSuccess(usernames); } } }
catch (HyphenateException e) { d
emoModel.setContactSynced(false);
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false);
e.printStackTrace();
if (callback != null) {
callback.onError(e.getErrorCode(), e.toString()); } }
catch (JSONException e) { e.printStackTrace(); } } }.start(); }

以上就是我的代码了   希望有用  我已经解决昵称的问题了 至于头像也是一样的道理了
之前的文章有很多问题 这里给小伙们说声对不起了
1
评论

关于Android Studio如何正确集成环信3.1.5 SDK EaseUI

LoneWolf 发表了文章 • 1346 次浏览 • 2017-01-05 16:37 • 来自相关话题

1 下载sdk3.1.5后,在examples下找到easeui



2 将build.gradle删除(这一点非常重要,因为没有删除这个文件,后面出现的冲突浪费了我三四天时间)

3 在examples-ChatDemoUI3.0找到libs

4 在你的 (注意是主modules) 主modules-main下创建jniLibs文件夹,把demo中的jar包全部父之过去

5 之后就是导入easeui了(注意:确认build.gradle已经删除)



接下来是添加依赖,选择菜单栏上Project Structure,找到自己的工程,在Dependencies找到绿色的“+”,选择第三个“Module dependency”

6 导入easeui后发现他自动生成的build.gradle,这时才是我们需要的,将easeui的v4版本提升到23

compile'com.android.support:support-v4:23.+'
7 这时应该编译通过了,有些机子运行发现以下问题

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file "/data/data/com.xxx.xxx/files/instant-run/dex/slice-support-annotations-24.1.0_ce9c5697cabea4565e89d9bb7a81deef74f26296-classes.dex", dex file "/data/data/com.xxx

如果遇到UnsatisfiedLinkError的问题,则在easeUI依赖库-jniLibs创建armeabi-v7a,然后将armeabi的.so文件拷贝一份进去即可。

之后你就可以根据你的需要进行自定义了,可以参考ChatDemoUI3.0,里面的逻辑很齐全了



这是导入easeui的正确方式,是我用几天换来的宝贵经验,希望能帮到大家,多多打赏哈 查看全部
1 下载sdk3.1.5后,在examples下找到easeui



2 将build.gradle删除(这一点非常重要,因为没有删除这个文件,后面出现的冲突浪费了我三四天时间)

3 在examples-ChatDemoUI3.0找到libs

4 在你的 (注意是主modules) 主modules-main下创建jniLibs文件夹,把demo中的jar包全部父之过去

5 之后就是导入easeui了(注意:确认build.gradle已经删除)



接下来是添加依赖,选择菜单栏上Project Structure,找到自己的工程,在Dependencies找到绿色的“+”,选择第三个“Module dependency”

6 导入easeui后发现他自动生成的build.gradle,这时才是我们需要的,将easeui的v4版本提升到23

compile'com.android.support:support-v4:23.+'
7 这时应该编译通过了,有些机子运行发现以下问题

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file "/data/data/com.xxx.xxx/files/instant-run/dex/slice-support-annotations-24.1.0_ce9c5697cabea4565e89d9bb7a81deef74f26296-classes.dex", dex file "/data/data/com.xxx

如果遇到UnsatisfiedLinkError的问题,则在easeUI依赖库-jniLibs创建armeabi-v7a,然后将armeabi的.so文件拷贝一份进去即可。

之后你就可以根据你的需要进行自定义了,可以参考ChatDemoUI3.0,里面的逻辑很齐全了



这是导入easeui的正确方式,是我用几天换来的宝贵经验,希望能帮到大家,多多打赏哈
1
回复
条新动态, 点击查看
环信沈冲

环信沈冲 回答了问题 • 2015-12-02 12:26 • 1 个回复 不感兴趣

iOS 把EaseUI导入自己的工程报错,求解

赞同来自:

MJRefresh冲突了,如果自己的项目中有使用这个三方,将我们的删去即可,如果删掉还不行,建议使用2.0demo的UI集成。
MJRefresh冲突了,如果自己的项目中有使用这个三方,将我们的删去即可,如果删掉还不行,建议使用2.0demo的UI集成。
环信沈冲

环信沈冲 回答了问题 • 2015-12-02 12:52 • 1 个回复 不感兴趣

导入Ease到自己的工程MWPhoto属性报错

赞同来自:

在pch文件中导入头文件:#import "EaseUI.h",如果您自己项目中有使用MBPhoto,可以将我们的重复的三方删掉。
在pch文件中导入头文件:#import "EaseUI.h",如果您自己项目中有使用MBPhoto,可以将我们的重复的三方删掉。
十一岁的加重

十一岁的加重 回答了问题 • 2016-09-26 18:45 • 2 个回复 不感兴趣

iOS集成EaseUI报错

赞同来自:

 duplicate文件重复,看看是不是MJRefresh或者MBProgressHUD,
 
你在Pod里已经集成了,根据自己需要删除SDK里的或者Pod里的,我个人是这样解决的
 duplicate文件重复,看看是不是MJRefresh或者MBProgressHUD,
 
你在Pod里已经集成了,根据自己需要删除SDK里的或者Pod里的,我个人是这样解决的
zl

zl 回答了问题 • 2016-07-05 18:44 • 4 个回复 不感兴趣

会话列表具体怎么集成啊?

赞同来自:

机器人的都删掉。ConversationListViewController继承EaseConversationListViewController  ,viewdidload调用    [self tableViewDidTriggerHeaderRefre... 显示全部 »
机器人的都删掉。ConversationListViewController继承EaseConversationListViewController  ,viewdidload调用    [self tableViewDidTriggerHeaderRefresh];
[[EaseSDKHelper shareHelper] hyphenateApplication:application
                    didFinishLaunchingWithOptions:launchOptions
    ... 显示全部 »
[[EaseSDKHelper shareHelper] hyphenateApplication:application
                    didFinishLaunchingWithOptions:launchOptions
                                           appkey:appkey
                                     apnsCertName:apnsCertName
                                      otherConfig:@{kSDKConfigEnableConsoleLogger:[NSNumber numberWithBool:YES]}];
Swift

Swift 回答了问题 • 2016-11-03 16:46 • 2 个回复 不感兴趣

ios如何添加Emoji哇

赞同来自:

已解决EaseMessageViewController在的viewdidload方法的
第一行添加:[self setupEmotion];
最后一行添加: EaseEmotionManager *manager= [[EaseEmotionManager ... 显示全部 »
已解决EaseMessageViewController在的viewdidload方法的
第一行添加:[self setupEmotion];
最后一行添加: EaseEmotionManager *manager= [[EaseEmotionManager alloc] initWithType:EMEmotionDefault emotionRow:3 emotionCol:7 emotions:[EaseEmoji allEmoji]]; [self.faceView setEmotionManagers:@[manager]];
然后神奇的出现了emoji
您好,没有,demo使用的就是这三个离线推送,在线时的通知栏提醒需要自己实现,思路:在application中注册消息监听,然后监听新消息时发送通知栏提醒就可以了,通知类需要自己写,您可以参考demo的,在demohelper中
您好,没有,demo使用的就是这三个离线推送,在线时的通知栏提醒需要自己实现,思路:在application中注册消息监听,然后监听新消息时发送通知栏提醒就可以了,通知类需要自己写,您可以参考demo的,在demohelper中
82
评论

【有奖调查】环信T恤文案征集,你来我们就送! T恤 有奖调查

beyond 发表了文章 • 891 次浏览 • 2018-06-01 16:51 • 来自相关话题

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
楼层6:Eternally(额外奖励,提建议被采纳)楼层8:°﹏D.X.F.VIP 楼层18:空谷幽兰楼层28:skoxe楼层38.咚咚 查看全部
微信图片_20180601155239.jpg

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
  1. 楼层6:Eternally(额外奖励,提建议被采纳)
  2. 楼层8:°﹏D.X.F.VIP 
  3. 楼层18:空谷幽兰
  4. 楼层28:skoxe
  5. 楼层38.咚咚

11
评论

【有问必答】有温度,有态度,有速度的IMGeek社区! 有问必答 问题已解决 最佳回复

beyond 发表了文章 • 2297 次浏览 • 2018-05-24 17:45 • 来自相关话题

5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!




  现在,从一个提问开始你的IMGeek社区之旅。 查看全部
5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!
TIM截图20180524175557.png

  现在,从一个提问开始你的IMGeek社区之旅。
16
评论

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

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

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信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...小伙伴们还有什么想知道欢迎跟帖提出。
 
8
回复

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

JuN_Yong Wang 回复了问题 • 10 人关注 • 8569 次浏览 • 2018-02-07 11:49 • 来自相关话题

82
评论

【有奖调查】环信T恤文案征集,你来我们就送! T恤 有奖调查

beyond 发表了文章 • 891 次浏览 • 2018-06-01 16:51 • 来自相关话题

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
楼层6:Eternally(额外奖励,提建议被采纳)楼层8:°﹏D.X.F.VIP 楼层18:空谷幽兰楼层28:skoxe楼层38.咚咚 查看全部
微信图片_20180601155239.jpg

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
  1. 楼层6:Eternally(额外奖励,提建议被采纳)
  2. 楼层8:°﹏D.X.F.VIP 
  3. 楼层18:空谷幽兰
  4. 楼层28:skoxe
  5. 楼层38.咚咚

11
评论

【有问必答】有温度,有态度,有速度的IMGeek社区! 有问必答 问题已解决 最佳回复

beyond 发表了文章 • 2297 次浏览 • 2018-05-24 17:45 • 来自相关话题

5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!




  现在,从一个提问开始你的IMGeek社区之旅。 查看全部
5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!
TIM截图20180524175557.png

  现在,从一个提问开始你的IMGeek社区之旅。
8
回复

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

回复

JuN_Yong Wang 回复了问题 • 10 人关注 • 8569 次浏览 • 2018-02-07 11:49 • 来自相关话题

16
评论

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

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

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信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
回复

android 接入easeui后 clean都没有问题 但是run后 会提示TaskExecutionException Android EaseUI

回复

陈日明 回复了问题 • 2 人关注 • 109 次浏览 • 2018-07-05 09:15 • 来自相关话题

1
回复

集成EaseUI发送消息成功后怎么获得发送的消息内容 iOS EaseUI

回复

磨不平的棱角。 回复了问题 • 1 人关注 • 315 次浏览 • 2018-04-09 15:14 • 来自相关话题

0
回复

AndroidStudio3.0导入SDK3.3.9的EaseUI,在布局中使用EaseUI的自定义View不自动提示的问题 EaseUI

回复

qwer327146 发起了问题 • 1 人关注 • 565 次浏览 • 2018-02-25 21:46 • 来自相关话题

0
回复

求大神解决啊,快崩溃了 EaseUI

回复

FrankMA 发起了问题 • 1 人关注 • 697 次浏览 • 2018-01-28 18:25 • 来自相关话题

1
回复

关于EaseUI 3.3.0 界面控件问题 EaseUI ease iOS集成easeUI #ios iOS 更新

回复

范大大 回复了问题 • 2 人关注 • 501 次浏览 • 2018-01-20 17:49 • 来自相关话题

1
回复

未知错误。。。找了很多方法都解决不了啊, 急需 EaseUI

回复

geri_yang 回复了问题 • 2 人关注 • 926 次浏览 • 2017-11-15 18:50 • 来自相关话题

0
回复

如何开启反垃圾服务? 环信_Android EaseUI

回复

涸橙蓟 发起了问题 • 1 人关注 • 550 次浏览 • 2017-10-25 18:57 • 来自相关话题

0
回复

如何开启反垃圾服务? 环信_Android EaseUI

回复

涸橙蓟 发起了问题 • 1 人关注 • 504 次浏览 • 2017-10-25 18:57 • 来自相关话题

2
最佳

android EaseUI 使用的是什么推送?没有使用小米和华为GCM的情况下 EaseUI 推送 安卓

回复

涸橙蓟 回复了问题 • 2 人关注 • 3703 次浏览 • 2017-10-12 19:09 • 来自相关话题

2
回复

环信EaseUI怎么用Cocoapods导入到项目中 EaseUI

回复

梁森 回复了问题 • 3 人关注 • 6519 次浏览 • 2017-09-29 11:05 • 来自相关话题

6
回复

环信cocoapods集成EaseUI 继承时报错 iOS swift EaseUI cocoapod

回复

梁森 回复了问题 • 4 人关注 • 967 次浏览 • 2017-09-29 11:04 • 来自相关话题

0
回复

添加了EaseUI后原有的MJPhotoView.h报错 EaseUI MJPhotoView.h

回复

- 久伴 发起了问题 • 1 人关注 • 663 次浏览 • 2017-08-11 15:50 • 来自相关话题

0
回复

发送定位以及拍照就崩溃,录音会提示 录音失败 服务器是否连接等 EaseUI

回复

发起了问题 • 1 人关注 • 740 次浏览 • 2017-06-27 12:00 • 来自相关话题

1
回复

The number of method references in a .dex file cannot exceed 64K. EaseUI 环信_Android

回复

回复了问题 • 1 人关注 • 831 次浏览 • 2017-06-21 11:00 • 来自相关话题

1
回复

EaseUI3.0在7.0中,文字消息经常显示不全 EaseUI Easeui 3.x

回复

lzan13 回复了问题 • 2 人关注 • 679 次浏览 • 2017-05-08 19:42 • 来自相关话题

1
回复

集成EaseUI时报错 EaseUI

回复

zhoumin 回复了问题 • 2 人关注 • 1358 次浏览 • 2017-04-16 11:59 • 来自相关话题

1
回复

字符串未定义错误 EaseUI

回复

zhoumin 回复了问题 • 2 人关注 • 528 次浏览 • 2017-04-16 09:32 • 来自相关话题

1
回复

Eclipse 集成 EaseUI 库报错,NoClassDefFoundError 环信_Android EaseUI eclipse

回复

Wxin 回复了问题 • 2 人关注 • 1927 次浏览 • 2017-04-15 21:53 • 来自相关话题

1
回复

环信IOS个人信息、头像不能用了吗?还是更新什么了? 会话列表 好友 EaseUI 环信_iOS

回复

donghai 回复了问题 • 2 人关注 • 625 次浏览 • 2017-04-08 07:00 • 来自相关话题

1
回复

新手求问Androidstudio导入环信easeUI EaseUI

回复

衣冠禽兽 回复了问题 • 1 人关注 • 620 次浏览 • 2017-03-09 03:38 • 来自相关话题

5
回复

聊天界面多刷新几次就会蹦 环信_iOS EaseUI iOS环信UI集成 环信 iOS集成 iOS环信聊天

回复

环信沈冲 回复了问题 • 3 人关注 • 901 次浏览 • 2016-11-27 20:02 • 来自相关话题

3
回复

如何把联系人查找的结果的视图改为其他颜色。。 环信_iOS iOS环信导航条 EaseUI 联系人 iOS 好友

回复

mazhihua 回复了问题 • 2 人关注 • 736 次浏览 • 2016-11-24 16:11 • 来自相关话题

3
回复

iOS无法收到推送,官网文档不够详细 EaseUI 环信_iOS

回复

一等到天幻 回复了问题 • 3 人关注 • 1347 次浏览 • 2016-11-20 11:25 • 来自相关话题

82
评论

【有奖调查】环信T恤文案征集,你来我们就送! T恤 有奖调查

beyond 发表了文章 • 891 次浏览 • 2018-06-01 16:51 • 来自相关话题

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
楼层6:Eternally(额外奖励,提建议被采纳)楼层8:°﹏D.X.F.VIP 楼层18:空谷幽兰楼层28:skoxe楼层38.咚咚 查看全部
微信图片_20180601155239.jpg

 
环信T恤背面文案征集,欢迎小伙伴留言,7个中文字以内。
 
送送送T恤!
 
文案一经采用,送T恤!并且留言楼层是8的尾号(包含8),恭喜你中奖了,环信T恤包邮到家!
 
中奖规则:
 
同一账号重复留言只记做一次,小伙伴们构思好文案再留言,珍惜抽奖机会。

活动时间2018年6月1日-6月10日,最终解释权归环信所有。
 
中奖名单公布:
  1. 楼层6:Eternally(额外奖励,提建议被采纳)
  2. 楼层8:°﹏D.X.F.VIP 
  3. 楼层18:空谷幽兰
  4. 楼层28:skoxe
  5. 楼层38.咚咚

11
评论

【有问必答】有温度,有态度,有速度的IMGeek社区! 有问必答 问题已解决 最佳回复

beyond 发表了文章 • 2297 次浏览 • 2018-05-24 17:45 • 来自相关话题

5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!




  现在,从一个提问开始你的IMGeek社区之旅。 查看全部
5分钟,是一个从提问到解答的总时长,有温度有态度有速度!
-IMGeek社区“鲁迅”




    IMGeek循着极客们开放、分享、协作、创新的精神,努力构建一个具有服务质量保障(Service Level Assurance , SLA)的社区。

   在IMGeek社区里征集到一批热心的技术专家,得到他们的承诺自愿回复IMGeek社区问题。只要你在IMGeek社区发布问题,专家们将会收到消息提醒,并及时回复。 

   当然,如果你在提交一个问题之前,可以先搜索一下,说不定你要提的问题已经有人提过并且得到解答。这样可以省却不少你的时间。 
 
   最后提醒一下提问的小伙伴,如果您的问题被解决,占用您一秒钟时间将回复设置为最佳回复,方便后面遇到相同问题的同学快速找到答案!
TIM截图20180524175557.png

  现在,从一个提问开始你的IMGeek社区之旅。
8
回复

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

回复

JuN_Yong Wang 回复了问题 • 10 人关注 • 8569 次浏览 • 2018-02-07 11:49 • 来自相关话题

16
评论

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

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

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信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
评论

【环信集成指南】Android sdk 的两种导入方式 sdk 导入 EaseUI

baoshu 发表了文章 • 1013 次浏览 • 2018-02-07 16:52 • 来自相关话题

环信AndroidSDK官网文档提供了两种导入方式,线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活,今天就跟大家详细讲解下两种方式的具体实现,小伙伴们可以根据自己的业务自由选择。1.线上gradle远程连接导入
线上导入方便快捷,直接使用环信最新版sdk,但是值得注意的是线上的sdk不包含实施音视频,也不支持easeui库线上导入
首先在项目根目录build.gradle文件的allprojects→repositories属性下加入远程库地址maven { url "https://raw.githubusercontent. ... ot%3B }


 然后在module的build.gradle里加入以下代码android {
//use legacy for android 6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
//Optional compile for GCM (Google Cloud Messaging).
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
}官网文档参考
 
2.本地导入(sdk和easeui两种)
本地导入比较灵活,可以根据自己项目的开发需求根据功能去导入,比如sdk分为有实时音视频的sdk和没有实时音视频的sdk包,用户大可根据自己的需求去导入,这样稍微减少了sdk包大的问题
 easeui的导入
   本地导入也可以导入easeui库,easeui库是基于sdk开发的带ui的库,功能基本都实现,并携带写好的ui,用户在看过demo示例之后认为easeui符合自己的开发需求可以直接依赖Easeui,导入方式 
Eclipse 中导入
   先把 EaseUI 项目导入到 Eclipse 中。
在自己的项目中把 EaseUI 作为一个 library 引入。右键你的项目→Android→点击右下角的Add按钮→选中 EaseUI→OK→OK。
Android Studio 中导入
打开你的 AS 项目→File→New→Import Module→选择或输入 EaseUI 库路径→Next→Next→Finish。
 
sdk导入
   很多用户是不知道sdk是包含哪些文件的,sdk是有jar包和so包组成,其中jar包命名hyphenatechat_3.3.8.jar  
其中后边的数字3.3.8就是使用的sdk的具体版本号。
   So包有arm64-v8a、armeabi、armeabi-v7a、x86 其中x86根据自己项目需求可以去了,x86针对的是虚拟机,可以直接去了。
   armeabi和armeabi-v7a是相近似的指令集,armeabi和armeabi-v7a可以互换,v7a是增强型指令集,运行速度,效率均有所提高,他们都是32位指令,并且兼容,arm64-v8a对应arm64位指令集






有实时音视频和没有实时音视频包
   libs.av 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
   libs.lite 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的文件  文档参考




 

 

 
 
 
  查看全部
环信AndroidSDK官网文档提供了两种导入方式,线上gradle远程连接导入和本地导入,线上导入方便快捷,本地导入较为灵活,今天就跟大家详细讲解下两种方式的具体实现,小伙伴们可以根据自己的业务自由选择。
1.线上gradle远程连接导入

线上导入方便快捷,直接使用环信最新版sdk,但是值得注意的是线上的sdk不包含实施音视频,也不支持easeui库线上导入


首先在项目根目录build.gradle文件的allprojects→repositories属性下加入远程库地址
maven { url "https://raw.githubusercontent. ... ot%3B }


 然后在module的build.gradle里加入以下代码
android {
//use legacy for android 6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
//Optional compile for GCM (Google Cloud Messaging).
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
}
官网文档参考
 
2.本地导入(sdk和easeui两种)

本地导入比较灵活,可以根据自己项目的开发需求根据功能去导入,比如sdk分为有实时音视频的sdk和没有实时音视频的sdk包,用户大可根据自己的需求去导入,这样稍微减少了sdk包大的问题


 easeui的导入
   本地导入也可以导入easeui库,easeui库是基于sdk开发的带ui的库,功能基本都实现,并携带写好的ui,用户在看过demo示例之后认为easeui符合自己的开发需求可以直接依赖Easeui,导入方式 
Eclipse 中导入
   先把 EaseUI 项目导入到 Eclipse 中。
在自己的项目中把 EaseUI 作为一个 library 引入。右键你的项目→Android→点击右下角的Add按钮→选中 EaseUI→OK→OK。
Android Studio 中导入
打开你的 AS 项目→File→New→Import Module→选择或输入 EaseUI 库路径→Next→Next→Finish。
 
sdk导入
   很多用户是不知道sdk是包含哪些文件的,sdk是有jar包和so包组成,其中jar包命名hyphenatechat_3.3.8.jar  
其中后边的数字3.3.8就是使用的sdk的具体版本号。
   So包有arm64-v8a、armeabi、armeabi-v7a、x86 其中x86根据自己项目需求可以去了,x86针对的是虚拟机,可以直接去了。
   armeabi和armeabi-v7a是相近似的指令集,armeabi和armeabi-v7a可以互换,v7a是增强型指令集,运行速度,效率均有所提高,他们都是32位指令,并且兼容,arm64-v8a对应arm64位指令集

3.3_.8_sdk_.png


有实时音视频和没有实时音视频包
   libs.av 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
   libs.lite 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的文件  文档参考

 

 

 
 
 
 
4
评论

Android 依赖EaseUI联系人列表显示昵称 修改之前的发起的那篇文章 Android EaseUI 昵称 昵称头像

LoneWolf 发表了文章 • 775 次浏览 • 2017-02-17 00:54 • 来自相关话题

在设置时要说明 好友数据由app的服务器提供的  所以服务端也要集成
注意 我的页面以及类都是从Demo中复制过来的
我们必须要知道好友数据是在什么位置进行数据适配的
在UserDao中有一个方法是saveContactList这个就是进行好友数据保存的操作了

之前我自己创建了一个数据库  进行操作发现出现很多问题  修改的地方也比较多 走了很多弯路
这次经过观察  Demo已经为我们创建了数据库和表 我们只需要在正确的位置把我们获取的数据保存起来就可以了
那么我们的任务就是定位这个方法是在哪调用的,经过代码的跟踪,最终定位到这个位置在
DemoHelper中asyncFetchContactsFromServer()方法
这个方法在没有修改的情况下是从环信服务器获取的好友数据
为了方便我把代码贴出来public void asyncFetchContactsFromServer(final EMValueCallBack<List<String>> callback) {
if (isSyncingContactsWithServer) {
return;
}
isSyncingContactsWithServer = true;
new Thread() {
@Override public void run() {
List<String> usernames = null;
try {
usernames = EMClient.getInstance().contactManager().getAllContactsFromServer(); // in case that logout already before server returns, we should return immediately
if (!isLoggedIn()) {
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false); return;
}

//这里就是开始从自己app的服务器获取好友数据了Map<String, EaseUser> userlist = new HashMap<String, EaseUser>();
String url = AppConfig.BASE_URL+AppConfig.GETFRIENDS;
HashMap<String, String> map = new HashMap<>(); map.put("userName",PreforenceUtils.getStringData("userInfo","hxid"));
Log.e(TAG,url);
MyHttpUtils myHttpUtils = new MyHttpUtils();
String s = myHttpUtils.httpPost(url, "", "&user", map.toString());
Log.e(TAG,s);
JSONArray jarr = new JSONArray(s);
if(jarr.length()!=0||jarr != null){
for (int i = 0; i < jarr.length(); i++) {
JSONObject jobj = (JSONObject) jarr.get(i);
EaseUser easeUser = new EaseUser(jobj.getString("FRIENDID")); easeUser.setNick(jobj.getString("FRIENDNICKNAME"));
easeUser.setAvatar("");
Log.e(TAG,easeUser.toString());
EaseCommonUtils.setUserInitialLetter(easeUser);
//这是关键的地方userlist.put(jobj.getString("FRIENDID"), easeUser);
}

//这是就是将数据转换成Easeuser对象 的原有方式 已经注释掉了 其他代码没有做修改
/*for (String username : usernames) {
EaseUser user = new EaseUser(username);
EaseCommonUtils.setUserInitialLetter(user);
userlist.put(username, user); }*/


// save the contact list to cache getContactList().clear(); getContactList().putAll(userlist); // save the contact list to database
UserDao dao = new UserDao(appContext);
List<EaseUser> users = new ArrayList<EaseUser>(userlist.values());
Log.e(TAG,"获取联系人");
//报讯联系人的数据就是在这了dao.saveContactList(users);
demoModel.setContactSynced(true);
EMLog.d(TAG, "set contact syn status to true");
isContactsSyncedWithServer = true; isSyncingContactsWithServer = false;
//notify sync success notifyContactsSyncListener(true); getUserProfileManager().asyncFetchContactInfosFromServer(usernames, new EMValueCallBack<List<EaseUser>>() {
@Override public void onSuccess(List<EaseUser> uList) {
updateContactList(uList);
getUserProfileManager().notifyContactInfosSyncListener(true);
}
@Override public void onError(int error, String errorMsg) { } });
if (callback != null) { callback.onSuccess(usernames); } } }
catch (HyphenateException e) { d
emoModel.setContactSynced(false);
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false);
e.printStackTrace();
if (callback != null) {
callback.onError(e.getErrorCode(), e.toString()); } }
catch (JSONException e) { e.printStackTrace(); } } }.start(); }
以上就是我的代码了   希望有用  我已经解决昵称的问题了 至于头像也是一样的道理了
之前的文章有很多问题 这里给小伙们说声对不起了 查看全部
在设置时要说明 好友数据由app的服务器提供的  所以服务端也要集成
注意 我的页面以及类都是从Demo中复制过来的
我们必须要知道好友数据是在什么位置进行数据适配的
在UserDao中有一个方法是saveContactList这个就是进行好友数据保存的操作了

之前我自己创建了一个数据库  进行操作发现出现很多问题  修改的地方也比较多 走了很多弯路
这次经过观察  Demo已经为我们创建了数据库和表 我们只需要在正确的位置把我们获取的数据保存起来就可以了
那么我们的任务就是定位这个方法是在哪调用的,经过代码的跟踪,最终定位到这个位置在
DemoHelper中asyncFetchContactsFromServer()方法
这个方法在没有修改的情况下是从环信服务器获取的好友数据
为了方便我把代码贴出来
public void asyncFetchContactsFromServer(final EMValueCallBack<List<String>> callback) {
if (isSyncingContactsWithServer) {
return;
}
isSyncingContactsWithServer = true;
new Thread() {
@Override public void run() {
List<String> usernames = null;
try {
usernames = EMClient.getInstance().contactManager().getAllContactsFromServer(); // in case that logout already before server returns, we should return immediately
if (!isLoggedIn()) {
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false); return;
}

//这里就是开始从自己app的服务器获取好友数据了
Map<String, EaseUser> userlist = new HashMap<String, EaseUser>();
String url = AppConfig.BASE_URL+AppConfig.GETFRIENDS;
HashMap<String, String> map = new HashMap<>(); map.put("userName",PreforenceUtils.getStringData("userInfo","hxid"));
Log.e(TAG,url);
MyHttpUtils myHttpUtils = new MyHttpUtils();
String s = myHttpUtils.httpPost(url, "", "&user", map.toString());
Log.e(TAG,s);
JSONArray jarr = new JSONArray(s);
if(jarr.length()!=0||jarr != null){
for (int i = 0; i < jarr.length(); i++) {
JSONObject jobj = (JSONObject) jarr.get(i);
EaseUser easeUser = new EaseUser(jobj.getString("FRIENDID")); easeUser.setNick(jobj.getString("FRIENDNICKNAME"));
easeUser.setAvatar("");
Log.e(TAG,easeUser.toString());
EaseCommonUtils.setUserInitialLetter(easeUser);

//这是关键的地方
userlist.put(jobj.getString("FRIENDID"), easeUser);
}

//这是就是将数据转换成Easeuser对象 的原有方式 已经注释掉了 其他代码没有做修改
/*for (String username : usernames) {
EaseUser user = new EaseUser(username);
EaseCommonUtils.setUserInitialLetter(user);
userlist.put(username, user); }*/


// save the contact list to cache getContactList().clear(); getContactList().putAll(userlist); // save the contact list to database
UserDao dao = new UserDao(appContext);
List<EaseUser> users = new ArrayList<EaseUser>(userlist.values());
Log.e(TAG,"获取联系人");

//报讯联系人的数据就是在这了
dao.saveContactList(users);
demoModel.setContactSynced(true);
EMLog.d(TAG, "set contact syn status to true");
isContactsSyncedWithServer = true; isSyncingContactsWithServer = false;
//notify sync success notifyContactsSyncListener(true); getUserProfileManager().asyncFetchContactInfosFromServer(usernames, new EMValueCallBack<List<EaseUser>>() {
@Override public void onSuccess(List<EaseUser> uList) {
updateContactList(uList);
getUserProfileManager().notifyContactInfosSyncListener(true);
}
@Override public void onError(int error, String errorMsg) { } });
if (callback != null) { callback.onSuccess(usernames); } } }
catch (HyphenateException e) { d
emoModel.setContactSynced(false);
isContactsSyncedWithServer = false;
isSyncingContactsWithServer = false;
notifyContactsSyncListener(false);
e.printStackTrace();
if (callback != null) {
callback.onError(e.getErrorCode(), e.toString()); } }
catch (JSONException e) { e.printStackTrace(); } } }.start(); }

以上就是我的代码了   希望有用  我已经解决昵称的问题了 至于头像也是一样的道理了
之前的文章有很多问题 这里给小伙们说声对不起了
1
评论

关于Android Studio如何正确集成环信3.1.5 SDK EaseUI

LoneWolf 发表了文章 • 1346 次浏览 • 2017-01-05 16:37 • 来自相关话题

1 下载sdk3.1.5后,在examples下找到easeui



2 将build.gradle删除(这一点非常重要,因为没有删除这个文件,后面出现的冲突浪费了我三四天时间)

3 在examples-ChatDemoUI3.0找到libs

4 在你的 (注意是主modules) 主modules-main下创建jniLibs文件夹,把demo中的jar包全部父之过去

5 之后就是导入easeui了(注意:确认build.gradle已经删除)



接下来是添加依赖,选择菜单栏上Project Structure,找到自己的工程,在Dependencies找到绿色的“+”,选择第三个“Module dependency”

6 导入easeui后发现他自动生成的build.gradle,这时才是我们需要的,将easeui的v4版本提升到23

compile'com.android.support:support-v4:23.+'
7 这时应该编译通过了,有些机子运行发现以下问题

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file "/data/data/com.xxx.xxx/files/instant-run/dex/slice-support-annotations-24.1.0_ce9c5697cabea4565e89d9bb7a81deef74f26296-classes.dex", dex file "/data/data/com.xxx

如果遇到UnsatisfiedLinkError的问题,则在easeUI依赖库-jniLibs创建armeabi-v7a,然后将armeabi的.so文件拷贝一份进去即可。

之后你就可以根据你的需要进行自定义了,可以参考ChatDemoUI3.0,里面的逻辑很齐全了



这是导入easeui的正确方式,是我用几天换来的宝贵经验,希望能帮到大家,多多打赏哈 查看全部
1 下载sdk3.1.5后,在examples下找到easeui



2 将build.gradle删除(这一点非常重要,因为没有删除这个文件,后面出现的冲突浪费了我三四天时间)

3 在examples-ChatDemoUI3.0找到libs

4 在你的 (注意是主modules) 主modules-main下创建jniLibs文件夹,把demo中的jar包全部父之过去

5 之后就是导入easeui了(注意:确认build.gradle已经删除)



接下来是添加依赖,选择菜单栏上Project Structure,找到自己的工程,在Dependencies找到绿色的“+”,选择第三个“Module dependency”

6 导入easeui后发现他自动生成的build.gradle,这时才是我们需要的,将easeui的v4版本提升到23

compile'com.android.support:support-v4:23.+'
7 这时应该编译通过了,有些机子运行发现以下问题

java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file "/data/data/com.xxx.xxx/files/instant-run/dex/slice-support-annotations-24.1.0_ce9c5697cabea4565e89d9bb7a81deef74f26296-classes.dex", dex file "/data/data/com.xxx

如果遇到UnsatisfiedLinkError的问题,则在easeUI依赖库-jniLibs创建armeabi-v7a,然后将armeabi的.so文件拷贝一份进去即可。

之后你就可以根据你的需要进行自定义了,可以参考ChatDemoUI3.0,里面的逻辑很齐全了



这是导入easeui的正确方式,是我用几天换来的宝贵经验,希望能帮到大家,多多打赏哈
1
评论

【环信集成笔记】进阶篇-EaseUI集成以及会话列表开发 EaseUI 环信集成笔记

beyond 发表了文章 • 3491 次浏览 • 2016-09-27 10:41 • 来自相关话题

有人说环信需要服务器和iOS端配合,其实可以两种方式:

1.全有iOS端和环信交互。2.让服务器替我们保存环信密码。

先不说方式,先教大家如何集成。环信里有一个自带已经弄好的EaseUI,如果你对页面的要求不是很大,那就用环信自带的EaseUI开发。我使用的就是环信的EaseUI。为了不影响项目,你先导入需要的系统框架。我使用的是即时通讯V2版本。

集成准备前请看他们的官网文档介绍。http://docs.easemob.com/start/ ... mport

是即时通讯V3,请按照他去添加对应的库!没有安全感的可以全部添加!只要你不限工程大,麻烦就可以。

添加完成以后。下载他的SDK,有几种文件需要你拖进来。1.EaseUIResource.bundle

2.gifimage(包含文件:EMGifImage.h以及.m)

3.EaseMobSDK

4.EaseUI(包括子目录:include,lib,resources*请注意里面不是图片是库,XMPP框架。 )

5.Resource(环信的图片文件夹)

6.ChatViewController(你可以用他们示范demo里拖,这个类就是对话类)

7.CystomizableCell

8.PrefixHeader.pch

9.Localizable.strings如果还是少了什么东西不知道怎么加,请加我QQ:1119718338,我给你发送所有需要的文件,前提请注意加好友时候留言清楚。
如果你前面有一个会话列表页面,例如下图:




如果你也有一个消息页面的话,如果没有什么太多内容,我建议放弃你自己自定义的TableViewCell,因为EaseUI 里有已经写好的消息页面:EaseConversationListViewController

这个页面不用改动太多。如果你发现这个页面为什么不用登录环信账号,环信是这样的:你在AppDelegate登录。

登录的demo为:[[EaseMob sharedInstance].chatManager asyncLoginWithUsername:@“用户的环信账号” password:@“用户的环信密码” completion:^(NSDictionary *loginInfo, EMError *error) {

NSLog(@"error====%@",error);

if (!error)

{

NSLog(@"登录成功");

NSLog(@"===%@",loginInfo);

//获取数据库中数据

[[EaseMob sharedInstance].chatManager loadDataFromDatabase];

}

} onQueue:nil];
当然有登录就有注册

[[EaseMob sharedInstance].chatManager asyncRegisterNewAccount:phone.text password:password2.text withCompletion:^(NSString *username, NSString *password, EMError *error) {

NSLog(@"error====%@",error);

if (!error)

{

NSLog(@"注册成功");

NSLog(@"===%@",loginInfo);

}

} onQueue:nil];

1.只用iOS和环信交互:在你app注册会员的时候,注册成功获得返回值,正确的返回值内去注册环信账号,而环信账号就是用户注册你app的账号,密码需要写死,例如:123456,那么无论谁注册,传给环信的密码都是123456。这样方便登录。如果环信返回给你是注册成功,那么你需要在成功里创建NSUserDeafults存储你的环信账号,密码就不用存了。并且调用环信登录方法。如果不在AppDelegate里写登录,你的APP如果退出了,下次打开就没用了,所以必须时时刻刻登录。所以你需要在AppDelegate登录,账号就是你本地存储的账号。密码还是死的。如果正常流程来说就是:

1.注册自己APP账号-成功-注册环信账号,密码为死的-成功-登录环信账号。

2.登录自己APP账号-成功-登录环信

3.AppDelegate存储账号。


2.让iOS,服务器,环信交互:通过上面的那种方式,跟服务器唯一交互的就是密码,你需要在用户注册你自己产品的时候,密码也注册环信。注册成功,将密码post给服务器,登录的时候成功,服务器不光返回error,msg,还要加一个环信的password,这样你拿到password 可以再进行登录。当然注册的时候Phone和Password需都需要存储,方便在AppDelegate入口类登录。

1.注册自己APP账号-成功-注册环信账号,密码为注册APP的密码-成功-Post密码给服务器-成功-登录环信账号。

2.登录自己APP账号-成功-拿到服务器返回的Password,登录环信账号-成功。

3.AppDelegate存储账号和密码

除了上面两种方式,还有一种就是环信有一个会记录的方法,除了注销会一直存在。怎么简单怎么来。
 
OK,注册成功,我们继续讨论:EaseConversationListViewController

如果你的页面换成了EaseConversationListViewController,那么你不需要做任何操作都可以获取到最新数据,但是你需要点击进入会话页面。




ChatViewController 就是你的会话列表页,关于ChatViewController * chatVc = [[ChatViewController alloc]initWithConversationChatter:model.title conversationType:eConversationTypeChat];

1.model.title 这个会话列表的用户名,你也可以写死。

2.eConversationTypeChat,枚举,这是单人会话,还有群聊等等。

有了这个就可以传到会话列表页了。

会话列表就不多说了,没有这个文件我直接发给你好了。

对了有人会出现这种情况,如下图:





是否发现重复消息。[self tableViewDidTriggerHeaderRefresh]; 检查一下这个方法是不是在chatViewController 和EaseMessageViewCOntroller 的ViewDidLoad 里面都调用了,看如果都有,随便删除一个这个方法。就ok了!
 
关于头像昵称如何能做成活的,思路是:环信有一个方法,可以获取消息列表的信息。




这个方法就在你的根视图里拿出来。能获取到所有消息的环信的账号,如果你们注册的环信账号是手机号的。第一次发请求的话给服务器依次发送这个手机号,获取他的昵称和头像,然后存到本地。下次再次发请求的时候之前获取一下这个信息,有的话直接拿,没有的话就发送请求。
 
现在我在研究如何改变会话列表的名字和头像,因为有些产品的需要,不能展示账号或者手机号,所以如果你还有不懂得地方你加我好友QQ:1119718338,欢迎一起交流。当然如果您觉得对您有帮助,请点赞或打赏!谢谢!
  查看全部
有人说环信需要服务器和iOS端配合,其实可以两种方式:

1.全有iOS端和环信交互。2.让服务器替我们保存环信密码。

先不说方式,先教大家如何集成。环信里有一个自带已经弄好的EaseUI,如果你对页面的要求不是很大,那就用环信自带的EaseUI开发。我使用的就是环信的EaseUI。为了不影响项目,你先导入需要的系统框架。我使用的是即时通讯V2版本。

集成准备前请看他们的官网文档介绍。http://docs.easemob.com/start/ ... mport

是即时通讯V3,请按照他去添加对应的库!没有安全感的可以全部添加!只要你不限工程大,麻烦就可以。

添加完成以后。下载他的SDK,有几种文件需要你拖进来。
1.EaseUIResource.bundle

2.gifimage(包含文件:EMGifImage.h以及.m)

3.EaseMobSDK

4.EaseUI(包括子目录:include,lib,resources*请注意里面不是图片是库,XMPP框架。 )

5.Resource(环信的图片文件夹)

6.ChatViewController(你可以用他们示范demo里拖,这个类就是对话类)

7.CystomizableCell

8.PrefixHeader.pch

9.Localizable.strings
如果还是少了什么东西不知道怎么加,请加我QQ:1119718338,我给你发送所有需要的文件,前提请注意加好友时候留言清楚。
如果你前面有一个会话列表页面,例如下图:
1240.png

如果你也有一个消息页面的话,如果没有什么太多内容,我建议放弃你自己自定义的TableViewCell,因为EaseUI 里有已经写好的消息页面:EaseConversationListViewController

这个页面不用改动太多。如果你发现这个页面为什么不用登录环信账号,环信是这样的:你在AppDelegate登录。

登录的demo为:
[[EaseMob sharedInstance].chatManager asyncLoginWithUsername:@“用户的环信账号” password:@“用户的环信密码” completion:^(NSDictionary *loginInfo, EMError *error) {

NSLog(@"error====%@",error);

if (!error)

{

NSLog(@"登录成功");

NSLog(@"===%@",loginInfo);

//获取数据库中数据

[[EaseMob sharedInstance].chatManager loadDataFromDatabase];

}

} onQueue:nil];
当然有登录就有注册

[[EaseMob sharedInstance].chatManager asyncRegisterNewAccount:phone.text password:password2.text withCompletion:^(NSString *username, NSString *password, EMError *error) {

NSLog(@"error====%@",error);

if (!error)

{

NSLog(@"注册成功");

NSLog(@"===%@",loginInfo);

}

} onQueue:nil];


1.只用iOS和环信交互:在你app注册会员的时候,注册成功获得返回值,正确的返回值内去注册环信账号,而环信账号就是用户注册你app的账号,密码需要写死,例如:123456,那么无论谁注册,传给环信的密码都是123456。这样方便登录。如果环信返回给你是注册成功,那么你需要在成功里创建NSUserDeafults存储你的环信账号,密码就不用存了。并且调用环信登录方法。如果不在AppDelegate里写登录,你的APP如果退出了,下次打开就没用了,所以必须时时刻刻登录。所以你需要在AppDelegate登录,账号就是你本地存储的账号。密码还是死的。如果正常流程来说就是:

1.注册自己APP账号-成功-注册环信账号,密码为死的-成功-登录环信账号。

2.登录自己APP账号-成功-登录环信

3.AppDelegate存储账号。



2.让iOS,服务器,环信交互:通过上面的那种方式,跟服务器唯一交互的就是密码,你需要在用户注册你自己产品的时候,密码也注册环信。注册成功,将密码post给服务器,登录的时候成功,服务器不光返回error,msg,还要加一个环信的password,这样你拿到password 可以再进行登录。当然注册的时候Phone和Password需都需要存储,方便在AppDelegate入口类登录。

1.注册自己APP账号-成功-注册环信账号,密码为注册APP的密码-成功-Post密码给服务器-成功-登录环信账号。

2.登录自己APP账号-成功-拿到服务器返回的Password,登录环信账号-成功。

3.AppDelegate存储账号和密码


除了上面两种方式,还有一种就是环信有一个会记录的方法,除了注销会一直存在。怎么简单怎么来。
 
OK,注册成功,我们继续讨论:EaseConversationListViewController

如果你的页面换成了EaseConversationListViewController,那么你不需要做任何操作都可以获取到最新数据,但是你需要点击进入会话页面。
1039815-3ecd18bb8205386e.jpg

ChatViewController 就是你的会话列表页,关于ChatViewController * chatVc = [[ChatViewController alloc]initWithConversationChatter:model.title conversationType:eConversationTypeChat];

1.model.title 这个会话列表的用户名,你也可以写死。

2.eConversationTypeChat,枚举,这是单人会话,还有群聊等等。


有了这个就可以传到会话列表页了。

会话列表就不多说了,没有这个文件我直接发给你好了。

对了有人会出现这种情况,如下图:

1039815-44d6a06e34d36547.png

是否发现重复消息。[self tableViewDidTriggerHeaderRefresh]; 检查一下这个方法是不是在chatViewController 和EaseMessageViewCOntroller 的ViewDidLoad 里面都调用了,看如果都有,随便删除一个这个方法。就ok了!
 
关于头像昵称如何能做成活的,思路是:环信有一个方法,可以获取消息列表的信息。
1039815-451bc4398ac8a957.png

这个方法就在你的根视图里拿出来。能获取到所有消息的环信的账号,如果你们注册的环信账号是手机号的。第一次发请求的话给服务器依次发送这个手机号,获取他的昵称和头像,然后存到本地。下次再次发请求的时候之前获取一下这个信息,有的话直接拿,没有的话就发送请求。
 
现在我在研究如何改变会话列表的名字和头像,因为有些产品的需要,不能展示账号或者手机号,所以如果你还有不懂得地方你加我好友QQ:1119718338,欢迎一起交流。当然如果您觉得对您有帮助,请点赞或打赏!谢谢!
 
1
评论

Duplicate interface definition for class 'EaseUI'解决办法 iOS EaseUI swift

※樂※ 发表了文章 • 1456 次浏览 • 2016-09-05 12:44 • 来自相关话题

今天项目迁移时发现报 Duplicate interface definition for class 'EaseUI' 错误,然后重新修改了EaseUI-Prefix的指定路径就好了!
今天项目迁移时发现报 Duplicate interface definition for class 'EaseUI' 错误,然后重新修改了EaseUI-Prefix的指定路径就好了!
5
评论

Android EaseUI里的百度地图替换为高德地图 EaseUI Android

Wxin 发表了文章 • 8631 次浏览 • 2016-01-30 13:11 • 来自相关话题

鉴于有些客户的项目里要使用高德地图,我就把EaseUI里的百度地图替换为了高德地图,提供给有需要的客户下载使用。
(EaseUI里的类名没有做修改,还是沿用的之前的,想修改的可自行修改)
依赖这个EaseUI之后,需要在项目的清单文件里去配置权限




还有高德地图的appkey和定位服务




我把依赖这个EaseUI写的demo也一并上传了,可以去参考下。
github上的地址:
https://github.com/wangxinjeff/WXEaseUIDemo
我在这里只是简单的实现了高德地图的地位,大家可以根据高德的api自行扩展。 查看全部
鉴于有些客户的项目里要使用高德地图,我就把EaseUI里的百度地图替换为了高德地图,提供给有需要的客户下载使用。
(EaseUI里的类名没有做修改,还是沿用的之前的,想修改的可自行修改)
依赖这个EaseUI之后,需要在项目的清单文件里去配置权限
QQ截图20160130130317.png

还有高德地图的appkey和定位服务
QQ图片20160128201903.png

我把依赖这个EaseUI写的demo也一并上传了,可以去参考下。
github上的地址:
https://github.com/wangxinjeff/WXEaseUIDemo
我在这里只是简单的实现了高德地图的地位,大家可以根据高德的api自行扩展。
3
评论

一个走过弯路的人告诉你 集成iOS-ui3.0 需要注意的事项. iOS 3.0 EaseUI 本地通知和离线推送 常见问题和注意事项

zl 发表了文章 • 7254 次浏览 • 2016-01-08 16:48 • 来自相关话题

 
开场就不擅长了,如题,直接上干货!喜欢请为我点个赞,就是这么直接!
 
 
1:关于easeui和sdk的导入,建议大家手动下载导入,尤其是easeui,这样后期可以定制,更自由。

2:​新下载的sdk文件里面,lib文件下有两个.a库:libEaseMobClientSDK.a是完整的库,libEaseMobClientSDKLite.a是不包含语音通话的轻量版。根据你的项目是否需要语音通话(注意不是发送语音消息,而是类似于QQ电话的实时语音)来选择删掉哪个。这里必须有且只有一个.a库。对应的other link设置 .a====-ObjC/****/ Lite.a====-force_load+路径。

3:注意sdk的依赖库不要少加。另外,文档给的依赖库截图是运行后的效果截图,Xcode会自动把sdk也编译显示出来,所以你在build phases里面添加的时候不用手动再添加环信sdk的库。

4:关于消息通知问题。消息通知分为两种。一种是home键后的app在后台的时候的通知,这时候消息走的还是长连接,所以此时后台的通知要自己做,做一个本地通知,demo已经实现了,具体参考demo mainvc里面的didreceivemessage里面的showNotificationWithMessage:,细心的也会注意到这里也是设置消息声音震动提示的地方。主要要写在你的主视图控制器里。第二种是离线推送,也就是apns,在app被杀掉的时候通知栏里会弹出横幅提示。这需要你上传证书到环信管理后台,详细流程在这里http://community.easemob.com/article/825307504。

5:关于环信SDK在appdelegate里面的配置一定不要少。

6:did开头的回调方法注意:1>.当前页面存在;2>.遵守协议,例如@interface MainViewController () < IChatManagerDelegate>;
3>.添加代理 [[EaseMob sharedInstance].chatManager removeDelegate:self];
 [[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:nil] 写在viewdidload里面。

7:关于昵称和头像问题,先参阅文档http://docs.easemob.com/doku.php?id=start:000quickstart:40nickname。

8:关地图定位问题,要在info.plist文件里加上字段NSLocationWhenInUseUsageDescription=需要使用定位,可以参考demo。

9:环信不支持bitcode,build set里面设置为NO。      

10:环信文档里有新手上路一项,里面有很多需求实现的思路,比如@功能的实现思路等,对大家扩展很有帮助,当然后续我们也会丰富更多。地址:http://docs.easemob.com/doku.p ... start。
 
 本篇就先整理这么多吧,有不明白的下方评论留言,后续持续更新! 查看全部
 
开场就不擅长了,如题,直接上干货!喜欢请为我点个赞,就是这么直接!
 
 

1:关于easeui和sdk的导入,建议大家手动下载导入,尤其是easeui,这样后期可以定制,更自由。

2:​新下载的sdk文件里面,lib文件下有两个.a库:libEaseMobClientSDK.a是完整的库,libEaseMobClientSDKLite.a是不包含语音通话的轻量版。根据你的项目是否需要语音通话(注意不是发送语音消息,而是类似于QQ电话的实时语音)来选择删掉哪个。这里必须有且只有一个.a库。对应的other link设置 .a====-ObjC/****/ Lite.a====-force_load+路径。

3:注意sdk的依赖库不要少加。另外,文档给的依赖库截图是运行后的效果截图,Xcode会自动把sdk也编译显示出来,所以你在build phases里面添加的时候不用手动再添加环信sdk的库。

4:关于消息通知问题。消息通知分为两种。一种是home键后的app在后台的时候的通知,这时候消息走的还是长连接,所以此时后台的通知要自己做,做一个本地通知,demo已经实现了,具体参考demo mainvc里面的didreceivemessage里面的showNotificationWithMessage:,细心的也会注意到这里也是设置消息声音震动提示的地方。主要要写在你的主视图控制器里。第二种是离线推送,也就是apns,在app被杀掉的时候通知栏里会弹出横幅提示。这需要你上传证书到环信管理后台,详细流程在这里http://community.easemob.com/article/825307504。

5:关于环信SDK在appdelegate里面的配置一定不要少。

6:did开头的回调方法注意:1>.当前页面存在;2>.遵守协议,例如@interface MainViewController () < IChatManagerDelegate>;
3>.添加代理 [[EaseMob sharedInstance].chatManager removeDelegate:self];
 [[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:nil] 写在viewdidload里面。

7:关于昵称和头像问题,先参阅文档http://docs.easemob.com/doku.php?id=start:000quickstart:40nickname。

8:关地图定位问题,要在info.plist文件里加上字段NSLocationWhenInUseUsageDescription=需要使用定位,可以参考demo。

9:环信不支持bitcode,build set里面设置为NO。      

10:环信文档里有新手上路一项,里面有很多需求实现的思路,比如@功能的实现思路等,对大家扩展很有帮助,当然后续我们也会丰富更多。地址:http://docs.easemob.com/doku.p ... start


 
 本篇就先整理这么多吧,有不明白的下方评论留言,后续持续更新!
12
评论

【视频学习】IOS EaseUI集成视频 iOS EaseUI 环信

beyond 发表了文章 • 103351 次浏览 • 2015-12-22 16:27 • 来自相关话题

 


0
评论

关于环信新版EaseUI库导入AndroidStudio问题 Android EaseUI

lzan13 发表了文章 • 16380 次浏览 • 2015-11-18 16:55 • 来自相关话题

环信大牛最新封装了一个供开发者直接使用的UI库 EaseUI,这个可以让大家快速的进行集成环信的sdk进行实现聊天,官方也说了老版本的demo不会进行维护,重点维护这个EaseUI,但是在自己导入的时候有时会有些问题,这里用1.4版本的AndroidStudio导入3.0的demo来说明下;
首先就是打开as导入项目




我喜欢给他改个名字EaseUIDemo




导入完成
我这边导入时没有问题的,有时导入demo或者我们自己创建的项目 然后导入easeui库,并加入到自己的项目中去的时候可能会出现下边这样的错误 ,出现问题的原因的大致因为EaseUI默认引入的v4包的版本20.0.0,但是大家的开发环境不同,sdk版本以及编译器和support库版本不同,会出现错误;




解决办法:这个时候就去点击项目设置,选中EaseUI把sdk版本设置成和build.gradle里一样的版本就行了,如果过低,建议更新sdk,还不行,就把自己的项目的sdk版本和EaseUI都设置成一样,v4库也设置成一样




设置了之后,要记得同步gradle 1 or 2 方式都可以




如果是自己创建的项目想在as中引入EaseUI库,可以点击File->New->Import Module选项




同步发表到个人博客:http://melove.net 查看全部
环信大牛最新封装了一个供开发者直接使用的UI库 EaseUI,这个可以让大家快速的进行集成环信的sdk进行实现聊天,官方也说了老版本的demo不会进行维护,重点维护这个EaseUI,但是在自己导入的时候有时会有些问题,这里用1.4版本的AndroidStudio导入3.0的demo来说明下;
首先就是打开as导入项目
tupian010.png

我喜欢给他改个名字EaseUIDemo
tupian011.png

导入完成
我这边导入时没有问题的,有时导入demo或者我们自己创建的项目 然后导入easeui库,并加入到自己的项目中去的时候可能会出现下边这样的错误 ,出现问题的原因的大致因为EaseUI默认引入的v4包的版本20.0.0,但是大家的开发环境不同,sdk版本以及编译器和support库版本不同,会出现错误;
tupian012.png

解决办法:这个时候就去点击项目设置,选中EaseUI把sdk版本设置成和build.gradle里一样的版本就行了,如果过低,建议更新sdk,还不行,就把自己的项目的sdk版本和EaseUI都设置成一样,v4库也设置成一样


tupian013.png

设置了之后,要记得同步gradle 1 or 2 方式都可以
tupian014.png

如果是自己创建的项目想在as中引入EaseUI库,可以点击File->New->Import Module选项
tupian009.png

同步发表到个人博客:http://melove.net