注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

Demo体验

Demo体验

场景Demo,开箱即用
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有

iOS开发小记:关于环信Demo3.0的使用总结以及昵称和头像问题的研究与解决

来献个丑,关于Demo3.0昵称和头像问题的处理,博主写了一篇详细的文章,希望能帮到大家。 最近公司在开发一款创业项目,可以说是以即时通讯功能为主的,所以用到了第三方的即时通讯SDK----环信。相比于国内的几家即时通讯云服务商,像网易云信、融云什么的,环信...
继续阅读 »
来献个丑,关于Demo3.0昵称和头像问题的处理,博主写了一篇详细的文章,希望能帮到大家。

最近公司在开发一款创业项目,可以说是以即时通讯功能为主的,所以用到了第三方的即时通讯SDK----环信。相比于国内的几家即时通讯云服务商,像网易云信、融云什么的,环信应该算比较早的了吧,可以说IM云服务的老大。

       我们要做的项目类似于微信,有联系人页面、聊天列表与聊天页面、设置页面,刚刚好包括了环信Demo3.0的全部内容,所以理论上应该把Demo直接嵌入工程。由于这个Demo是实现了一些IM的基本UI,但是因为环信的官方文档和视频比较欠缺,维护起来相当麻烦,所以在开发的过程中有好多次决定弃用这个Demo,自己构建UI。但是又考虑到,Demo的代码可以说相当健壮,各种机制都集成的非常好(比如好友申请和删除的回调处理),最终决定还是硬着头皮上,改Demo的UI部分以供自己使用。

        环信的官方文档虽然比较欠缺,但是代码的注释和命名还是很好的,基本上可以一目了然每个变量、每个函数在做什么事情。笔者遇到的最大的问题就是好友头像和用户的显示问题,因为环信的服务器是不存储除了用户名和密码以外的其他任何数据的。解决这个问题的办法,就是将你要保存的其他用户信息保存在应用程序自己的服务器上。先来看一张官方图:


20160204215052121.png


 
 如图所示,你需要构建自己的应用服务器。环信的建议是,包括好友体系都不要用环信来维护,最好是由你APP自己的服务器来维护。但是笔者为了简化开发,并没有这样做,而是使用环信维护的好友体系,把昵称和头像存在自己的服务器上,每次从环信上获得当前用户的好友列表,再根据每个好友的用户名到自己的服务器上去获取。

         需要显示昵称和头像的地方有以下几处:联系人列表、聊天页表、聊天页面、联系人和群的详情页面。环信Demo3.0中有一个叫做ContactListViewController的类正是联系人列表页面,笔者决定从这个类入手。这个类是一个常见的带Tableview的Controller,找到它的下拉刷新和tableview的几个代理方法进行尝试,发现无论如何也不能完美的实现想要的效果。于是开始研究Demo是怎样显示昵称和头像的,经研究发现,环信是使用国外的App数据储存商Parse来实现储存,于是找到Demo中存取Parse部分的代码:


20160204221831667.png



  在ViewDidLoad中,笔者找到了一个叫做UserProfileManager的类(绿色部分),看了看这个类的h和m文件,发现这个类就是管理存取Parse上数据的类,而且全局是一个单例。笔者认真分析了一下这个类的作用,根据它提供给外部使用的方法的名称,发现他的作用主要有以下三个,且是按照以下顺序的:


        1----获取当前用户在Parse服务器上的好友数据(头像、昵称),储存到内存中或者本地沙盒中:loadUserProfileInBackgroundWithBuddy:self.contactsSource saveToLoacal:YES completion:NULL

        2----根据好友的用户名(环信储存的用户名),返回内存或本地沙盒中保存的昵称:  - (NSString*)getNickNameWithUsername:(NSString*)username;


        3---根据好友的用户名(环信储存的用户名),返回内存或本地沙盒中保存的头像Url:- (UserProfileEntity*)getUserProfileByUsername:(NSString*)username;



        其中2和3其实可以合成一个,因为头像的url一般都是用一个用户的唯一标识(数据库表中的主键)来命名,而这个唯一标识刚好可以是环信服务器上所储存的用户名字段

        举个例子,在ViewDidLoad方法中,先调用方法1,获取到昵称和头像,然后在tableview的cellForRowAtIndexPath,也就是给每个cell赋值的那个方法中,先调用方法2和3,再给cell赋值。

20160204223444233.png


如图所示,(绿色部分),根据model.buddy.username属性,获取到环信服务器所保存的用户名,再调用23方法得到昵称和头像url的拼接。

       于是根据这个类,笔者仿照它也写了一个单例,给单例加了一个保存所有好友昵称的NSDictionary属性,这个单例对象在APP全局是唯一的,所以该属性在内存中也是唯一的,每次调用获取它的方法,不用担心是空或者重新生成新对象的问题发生。而且最好将属性设置成nonatomic的,这样可以防止在一次网络请求构建改属性的过程中被访问,导致数据错误。但是笔者还是加上了判断。笔者的这个类叫做NickNameAndHeadImage,也就是上面两幅截图中绿色注释部分紧跟的代码。并且还加入了一些判断,比如,如果昵称为空,则显示环信服务器上保存的用户名。当然,如果你想让更新即时的话,你可以在这个类中实现一些发送和接受透传消息的方法,笔者暂时没有写。

        大家可以全局搜索UserProfileManager的使用地方(比如按昵称搜索,首字母排序,详情等),发现基本上就是用到了笔者所提到那三种操作,所以,可以用自己仿制的这个单例类完美的代替UserProfileManager的功能,这样就可以在不修改环信Demo逻辑的前提下,接入自己的APP服务器,这样便保留了环信Demo的所有优良特性。

       下面将NickName类的代码列出,供大家参考:
#import <Foundation/Foundation.h>

@interface NickNameAndHeadImage : NSObject

+(instancetype) shareInstance;

- (void)loadUserProfileInBackgroundWithBuddy:(NSArray*)buddyList;

- (NSString*)getNicknameByUserName:(NSString*)username;


#import "NickNameAndHeadImage.h"

@interface NickNameAndHeadImage()

@property (strong, nonatomic) NSMutableArray *UserNames;

@property (strong, nonatomic) NSMutableDictionary *NickNames;

@property (nonatomic) BOOL DownloadHasDone;

@property (nonatomic) BOOL LoadFromLocalDickDone;


@end

@implementation NickNameAndHeadImage
{

}
static NickNameAndHeadImage* _instance = nil;

+(instancetype) shareInstance
{
static dispatch_once_t onceToken ;
dispatch_once(&onceToken, ^{
_instance = [[self alloc] init] ;
}) ;

return _instance ;
}

- (instancetype)init
{
self = [super init];
if (self) {
_DownloadHasDone = NO;
_LoadFromLocalDickDone = NO;
_UserNames = [NSMutableArray array];
NSMutableDictionary *dic = [[NSUserDefaults standardUserDefaults] objectForKey:dUserDefaults_Dic_NickName];
if (dic == nil || [dic count] == 0) {
_NickNames = [NSMutableDictionary dictionary];
_LoadFromLocalDickDone = YES;
}
else
{
_LoadFromLocalDickDone = YES;
_NickNames = [NSMutableDictionary dictionaryWithDictionary:dic];
}


}
return self;
}


- (void)loadUserProfileInBackgroundWithBuddy:(NSArray*)buddyList
{
_DownloadHasDone = NO;
[_UserNames removeAllObjects];
[_NickNames removeAllObjects];

if (buddyList == nil || [buddyList count] == 0)
{
return;
}
else
{
for (EMBuddy *buddy in buddyList)
{
[_UserNames addObject:buddy.username];
}
}

[self loadUserProfileInBackgroundWithUsernames];
}

- (void)loadUserProfileInBackgroundWithUsernames
{

_DownloadHasDone = NO;

//首先构造Json数组
//1.头
NSMutableString *jsonString = [[NSMutableString alloc] initWithString:@"{\"mobilelist\":["];

for(NSString *mobile in _UserNames){

//2. 遍历数组,取出键值对并按json格式存放
NSString *string;

string = [NSString stringWithFormat:
@"{\"mobile\":\"%@\"},",mobile];

[jsonString appendString:string];

}
// 3. 获取末尾逗号所在位置
NSUInteger location = [jsonString length]-1;

NSRange range = NSMakeRange(location, 1);

// 4. 将末尾逗号换成结束的]}
[jsonString replaceCharactersInRange:range withString:@"]}"];

NSLog(@"请求昵称时要发送的jsonString = %@",jsonString);

NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:dUserDefaults_String_LoginToken];
NSString *url = [NSString stringWithFormat:@"customer/contract?token=%@",token];
NSDictionary *postdic = [NSDictionary dictionaryWithObjectsAndKeys:jsonString,@"mobilelist",nil];
[HttpUtil POST_Path:url params:postdic completed:^(id JSON,NSString *str)
{
_LoadFromLocalDickDone = NO;
NSLog(@"打印JSON数据:%@",str);//打印Json数据
NSString *state = [[JSON objectForKey:@"json"] objectForKey:@"state"];
if ([state isEqualToString:@"1"]) {//获得昵称成功

//打印信息
NSString *msg = [[JSON objectForKey:@"json"] objectForKey:@"msg"];
NSLog(@"获得昵称成功:msg:%@",msg);

NSArray *array = [[[JSON objectForKey:@"json"] objectForKey:@"data"] objectForKey:@"list"];


for (NSDictionary *dic in array) {
[_NickNames setObject: [dic objectForKey:@"name"] forKey: [dic objectForKey:@"mobile"]];
}

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:_NickNames forKey:dUserDefaults_Dic_NickName];
[ud synchronize];
_LoadFromLocalDickDone = YES;

_DownloadHasDone = YES;


}
else//获得昵称失败
{
_DownloadHasDone = NO;
//打印信息
NSString *msg = [[JSON objectForKey:@"json"] objectForKey:@"msg"];
NSLog(@"获得昵称失败:msg:%@",msg);
}
}
failed:^(NSError *err){

_DownloadHasDone = NO;
[SVProgressHUD showSuccessWithStatus:@"登录失败"];
NSLog(@"获得昵称失败:%@",err);

}];
}

- (NSString*)getNicknameByUserName:(NSString*)username
{
if(_DownloadHasDone == YES)
{
NSString *string = [_NickNames objectForKey:username];
if (string == nil || [string length] == 0) {
return username;
}
return string;
}

else if(_LoadFromLocalDickDone == YES)
{
NSMutableDictionary *dic = [[NSUserDefaults standardUserDefaults] objectForKey:dUserDefaults_Dic_NickName];
NSString *string = [dic objectForKey:username];
if (string == nil || [string length] == 0) {
return username;
}
return string;
}
return username;
}
附上截图

20160204225153412.png


其中,第一行为没有上传头像而有昵称,第二行为有头像有昵称,第三行为有头像无昵称,则显示用户名。

希望可以和大家多交流,做出更完美的App。 收起阅读 »

IOS V2.2.2 2016-02-02版本更新

流浪的脚步在外闯荡,家是永远的方向。不管你是已经到家,还是在回家的路上或还坚守在公司,环信送上最真挚的祝福,道一声朋友,祝你一路顺风,新春快乐。 环信与你同在,在距离春节最后一周,我们期待已久的ios新版本sdk发布了,这里让我们向还奋斗在一线的工程师们致敬。...
继续阅读 »
流浪的脚步在外闯荡,家是永远的方向。不管你是已经到家,还是在回家的路上或还坚守在公司,环信送上最真挚的祝福,道一声朋友,祝你一路顺风,新春快乐。

环信与你同在,在距离春节最后一周,我们期待已久的ios新版本sdk发布了,这里让我们向还奋斗在一线的工程师们致敬。
 
以下是此次新版本介绍,文章结尾附下载链接

 新功能:


实时通话新增弱网监测、暂停或打开音频视频流等API(相应增加的方法可查看文档)。
实时视频新增录制功能(相应增加的方法可查看文档)。



bug fix:


SDK bug: iphone 6s 实时视频挂断crash。
SDK bug: 优化iphone 6s 实时语音外放噪音。
SDK bug: 使用sdk发送高分辨率图片crush bug。
SDK bug: 附件下载失败,附件下载状态为成功的bug。



SDK细节调整:


提升实时语音音质


 
点击下载体验http://www.easemob.com/downloads 收起阅读 »

支付宝为什么拼了命做社交

悄然何时,身边掀起了一阵“集五福分大奖“的热潮,支付宝规定,参与福卡活动的用户新添加10个支付宝好友,即可获得3张福卡。一时间,大量的社交关系链流入支付宝。 支付宝真的打算做社交了吗? 福卡的玩法将进一步推动用户在支付宝上沉淀自...
继续阅读 »
悄然何时,身边掀起了一阵“集五福分大奖“的热潮,支付宝规定,参与福卡活动的用户新添加10个支付宝好友,即可获得3张福卡。一时间,大量的社交关系链流入支付宝。



20334875_062804601000_2.jpg



支付宝真的打算做社交了吗?


福卡的玩法将进一步推动用户在支付宝上沉淀自己的关系链。以红包为支点,让用户逐步习惯在支付宝内与好友互动。

我们都知道,支付宝重点在于商业,支付只是手段而已,但本身关系链不强大,只有通过各种商业环境来布局自身的触角,通俗点讲,就是在需要使用支付业务时打开支付宝,付款完成,然后就等着被打入手机后台吧~

说到这里,我们就不得不谈下支付宝的对头”微信“了,虽然微信本身是社交,支付只是衍生,但我更愿意把他们看成竞争对手。由于微信社交平台的粘性,我们看到微信从社交化到各个领域的渗透,比如”微信红包“,”网上购物“,“生活缴费”等各种层出不穷的服务(有了用户关系链的场景真的不一样)


那支付宝这次到底是图啥呢?


支付宝其实是在构建金融场景,寻找社交和支付的结合点,借助社交的关系链给支付宝提供服务场景!

我们可以来看下未来的愿景,举个例子,你给家里的父母转每个月的孝敬费,一转过去了可以问下“妈,钱收到了吗,哦,收到了是吧,好的,最近天冷 多保重身体呀” 父母就很开心了,不仅钱收到了,还收到了子女的问候,甚至可以在手机另一边唠叨两句“哎,闺女,过年什么时候回家呀,今年男朋友带回来吗”


为什么很多公司做社交产品没有成功?


场景有了,可是用户间的沟通缺少核心技术。
 
用户已经有非常多的沟通渠道,比如:短信、微信甚至陌陌,经常看到在一些新上架APP里用户的沟通还停留在“请加 我微信***详聊”甚至没有通讯功能,在这个即时通讯连接人与商业的时代,拥有像QQ微信这样的收发文字、图片、语音、实时音视频这样的功能真的很重要。
 


 我们实现即时通讯难吗?


自行研发移动IM,技术门槛高,开发周期长。
 
主要的技术难点包括:
1:协议和IM服务器的选择:
当前常用作IM的协议包括XMPP和MQTT,也有用SIP的,还有自行开发的私有协议。可以使用的开源的IM服务器包括OpenFire, Tigase, Prosody, Mosquitto, ejabberd等。你知道它们各自的优缺点吗,你知道哪个协议,那个IM服务器实现最适合你的需求吗,你知道你一旦选定了一个方案,你分别需要对协议和IM服务器做哪些改动和改进吗?
 
2:不稳定网络环境下(3G,2G,Wifi,无网络,及各种网络环境下的切换)     
    移动终端即时通讯长连接可靠性的维护
    移动终端耗电量优化
    移动终端流量优化
    发送各类富媒体消息的特定处理,如语音文件格式选择,语音压缩算法,语音降噪算法,图片压缩处理,地理位置,名片,文档等
    消息回执处理(ack),防止消息丢失。
    离线消息处理。离线时的实时消息通知(比如通过第三方推送平台)     实时状态同步
    支持千万级同时在线用户的高可靠,高并发的服务器集群架构的搭建和运维
安全
 
 3:移动IM是一个需要长期跟进和维护的技术,并不是产品上线后研发团队就可以解散了。
作为运营者,你做好长期的技术投入的思想准备了吗?比如新的IM功能层出不穷,如匿名社交,阅后即焚,你的产品要不要与时俱进?移动IM相关的各种安全隐患和漏洞,你要不要及时修复?所以你需要问自己一个问题,移动IM技术是你的核心竞争力吗,还是只是支撑你的业务实现的一个工具?


 
实现即时通讯功能那么难,有没有简单的办法轻松拥有?


这里给各位推荐一家即时通讯云服务厂商--环信
 
环信提供基于移动互联网的即时通讯能力,如单聊、群聊、发语音、发图片、发位置、实时音频、实时视频等,让开发者摆脱繁重的移动IM通讯底层开发,24小时即可让App拥有内置IM能力。


 
公司介绍
环信成立于2013年4月,是一家全通讯能力云服务提供商。产品包括全球最大的即时通讯云PaaS平台——环信即时通讯云,以及全球首创的全媒体智能云客服平台——环信移动客服。截至2015年底,环信共服务了50833家 App 客户,SDK覆盖手机终端3.19亿,平台日均发送消息2.1亿条。

 融资情况:
环信一年时间内完成了4轮融资。天使轮为经纬中国500万人民币、A轮为SIG 500万美元、A+轮为红杉资本300万美元,B轮融资1250万美元,由红杉资本领投,经纬中国和SIG跟投。是即时通讯云和SaaS客服领域融资最快、资金最充裕的平台。

 业绩规模:
环信是国内起步最早、规模最大的即时通讯云平台和全媒体智能云客服平台。现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等20大领域的Top10客户,典型用户包括国美在线、58到家、快牙、随手记、猎聘、海尔等。截至2015年底,环信共服务了50833家 App 客户,SDK覆盖手机终端3.19亿,平台日均发送消息2.1亿条。
收起阅读 »

来自环信的新年问候

辞旧迎新,2015年已经随着新年的钟声渐渐远去,但是给中国企业级服务市场所带来的深远影响才刚刚开始。随着中国人口红利的消退、经济走弱带来的各行业毛利下滑以及移动互联网红利的凸显,通过Saas提高企业运营效率,节省成本,成为企业服务加速爆发的核心驱动力,SaaS...
继续阅读 »

head.jpg

辞旧迎新,2015年已经随着新年的钟声渐渐远去,但是给中国企业级服务市场所带来的深远影响才刚刚开始。随着中国人口红利的消退、经济走弱带来的各行业毛利下滑以及移动互联网红利的凸显,通过Saas提高企业运营效率,节省成本,成为企业服务加速爆发的核心驱动力,SaaS领域将会迎来一个爆发式增长的黄金时期。


2015年是中国企业级服务元年,也是中国SaaS元年。企业服务市场因此成为资本追逐的热点,而其中环信更是明星中的明星公司,一年时间实现四轮融资。环信从连接“人与人”为愿景的即时通讯云产品出发,进而在PaaS平台上生长出了连接“人与商业”的SaaS产品环信移动客服。同时还逐步上线了环信大数据产品、环信反垃圾产品,打造了一个IM蓝图的全产业链布局。环信推动了整个即时通讯云行业从PaaS服务向SaaS服务延展的风潮,引领了整个行业的发展趋势。


因为有你,环信连接人与人才有价值。
因为有你,环信连接人与商业才有基础。
感谢有你,环信飞速发展,一年四轮融资。
见证有你,环信即时通讯云领军行业,覆盖TOP20领域TOP10客户。
见证有你,环信移动客服占据SaaS移动端客服市场77.4%份额居行业第一。
感谢有你,环信大数据产品,反垃圾服务等如雨后春笋茁壮成长。
感谢有你,感恩有你,感激有你,2016“环信”有“你”更精彩!
环信祝福小伙伴们,新春快乐,猴年吉祥!​​



融资情况:
环信一年时间内完成了4轮融资。天使轮为经纬中国500万人民币、A轮为SIG 500万美元、A+轮为红杉资本300万美元,B轮融资1250万美元,由红杉资本领投,经纬中国和SIG跟投。是即时通讯云和SaaS客服领域融资最快、资金最充裕的平台。

业绩规模:
环信是国内起步最早、规模最大的即时通讯云平台和全媒体智能云客服平台。现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等20大领域的Top10客户,典型用户包括国美在线、58到家、快牙、随手记、猎聘、海尔等。截至2015年底,环信共服务了50833家 App 客户,SDK覆盖手机终端3.19亿,平台日均发送消息2.1亿条。
  收起阅读 »

凡信2.0beta发布-超仿微信的开源项目 (更新了朋友圈和钱包)

         凡信的第一个版本于2015年4月份发布,之后由于自己工作忙碌的原因,一直没有重大的更新内容。2016年1月份抽空做了一些更新。主要是加入了朋友圈和钱包这两块内容,以及对第一版的一些bug的修复。凡信2.0依然是基于环信IM通信云SDK开发的,...
继续阅读 »
         凡信的第一个版本于2015年4月份发布,之后由于自己工作忙碌的原因,一直没有重大的更新内容。2016年1月份抽空做了一些更新。主要是加入了朋友圈和钱包这两块内容,以及对第一版的一些bug的修复。凡信2.0依然是基于环信IM通信云SDK开发的,当前状态下第三方通信云趋于火热,环信也这一年走过四轮共计几千万美元的融资,开发者用户也呈现几万的增长。这个项目也算是给需要集成IM云的开发者提供一个参考,给刚接触Android开发,对Android整体开发框架还很模糊同学提供一个学习的教材。

       关于此次更新的朋友圈版块,有些地方的处理的我觉得非常有技术分享的价值,项目为了极速开发,整个项目写得有点凌乱粗糙,但是部分功能单独拎出来讨论。会以博客的形式的解析一些功能。

    可关注http://www.imgeek.org/people/huangfangyi 
    作者QQ : 84543217
    技术讨论群:437758366(已有900名小伙伴等着你)


APP运行效果图展示


Screensho.png


 
APK扫码下载体验

liantu.png



二维码下载不了的,直接用链接
http://120.24.211.126/fanxin/download/Fanxin.apk
 
github源码下载 https://github.com/huangfangyi/FanXin2.0_IM



凡信2.0beta的代码更新说明:
 
   
一、朋友圈相关
1.发布动态--文字 图片 位置
2.朋友动态列表
3.点赞
4.评论
5.识别网址
6.好友的所有动态查看
7.我的相册
8.部分功能待完善
二、钱包相关
1.零钱 -虚拟账户
2.充值 选择卡-充值-每张卡初始额度200元
3.提现 提现到卡-需要手动处理才能完成,我就不手动去弄 了,因此提现后无法到你的卡(注:此卡指的是凡信中的虚拟卡)
4.交易记录---转账、充值、提现三类
5.银行卡 后台虚拟了一些卡账号,每张卡有200的额度。添加后可充值。
6.给好友转账--后面会添加提现和在聊天页显示。     
7.支付宝集成(app中常用的功能)-----集成了支付宝的SDK,由于密钥等参数都是比较重要的,已在工程中去掉了。体验这个带参数的功能,可以下载这个包-http://120.24.211.126/fanxin/download/Fanxin.apk,做了一个打赏的功能。
   三、  逻辑变化:
好友关系独立化,弃用了环信的好友关系表,在后端自己管理好友关系,这样做是跟朋友圈的业务相关,因此请务必注册新的账号的测试,

前情回顾:
本项目的IM通信部分是基于第三方通信云——环信的SDK开发的。对于个人开发者或者小企业来说,做IM用第三方的也是一种趋势吧,毕竟自己整一套可供运营使用的IM系统几乎是不切实际的(技术门槛和维护成本)。之前用环信做了几个外包项目,其中有些设计和安排我觉得很赞,所以总结了以前的经验和收获,做了这套全仿微信的APP。总的来说,这里面大的架构还是沿用了环信官方提供的UIdemo,但是里面的很多的细节和大部分页面都是我精心按照微信的逻辑和UI设计进行编写的。功能上目前解决了好友体系、用户资料、单聊、群聊等社交功能,后续还会继续更新类似于更换聊天背景、搜索本地用户、朋友圈、更多聊天表情等功能。。。希望有兴趣的小伙伴能一起更新这个开源项目。      整套代码编写的时间仓促,加上作者水平有限,望理解!
第一版功能说明:
1.注册登录部分:
     1.1重写了EditText的默认的蓝色底线,变成微信的绿色
     1.2 登录和注册按钮对输入框进行监听,并变色
     1.3 密码明文和隐藏
2.主页
     2.1全仿微信底部导航
     2.2 右上角加号按钮可进入 “发起群聊”和“添加朋友“
     2.3 显示未读消息数和未读通知数
3.聊天列表页:
     3.1 群聊头像是群成员头像的组合,有1.2.3.4.5种类型的头像
     3.2 置顶功能。置顶后该会话item置于列表顶端,并像微信一样变底色
     3.3 删除列表功能,删除该条会话记录
4.通讯录页
     4.1 显示好友列表
     4.2 进入还有申请通知
     4.3 进入群聊列表
5.发现页(正在开发朋友圈功能.....)
6.用户详情页
      6.1 资料设置(目前可更改的资料是:头像、昵称、性别)
      6.2 微信号只能设置一次。
      6.3 设置页(通知、声音、震动、退出登录)
7.用户申请通知
      7.1按时间由近及远排序
      7.2 显示申请理由
      7.3 处理状态(已添加、同意)
8.查找添加用户
      8.1 按用户的手机号查找用户
      8.2 搜索的用户的存在显示用户资料
      8.3 若该用户已经是好友,显示”发送消息“按钮
      8.4 若该用户不是好友,显示添加好友,并要求输入申请理由
9.发起群聊
      9.1可以在输入框内按用户昵称搜索好友
      9.2 添加群聊的用户的头像可以动态显示在顶部
10.聊天页面
      可以发送语音文字图片和视频(后续更新更多表情和设置聊天背景)
11聊天设置
       11.1单聊:置顶聊天、免打扰、和清除聊天记录
       11.2 群聊:显示群成员列表、增加群成员、删除群成员(群主可操作)、
                  修改群名称、置顶聊天、屏蔽清除群消息 收起阅读 »

致美洽,造谣抹黑和博同情不能赢得市场,好产品不需要说谎!

1月26日,易观智库发布了《2015中国SaaS客服市场专题研究报告》全方位解读了国内SaaS客服市场现状。易观报告详细诠释了未来客服行业移动端、全媒体、智能化等发展趋势,预测2017年中国SaaS客服市场将达到680亿元人民币。同时公布了2015主要SaaS...
继续阅读 »
1月26日,易观智库发布了《2015中国SaaS客服市场专题研究报告》全方位解读了国内SaaS客服市场现状。易观报告详细诠释了未来客服行业移动端、全媒体、智能化等发展趋势,预测2017年中国SaaS客服市场将达到680亿元人民币。同时公布了2015主要SaaS移动端客服厂商用户覆盖比例,其中环信以77.4%的份额占据SaaS移动端客服市场第一,从而一石惊起千层浪。在报告中份额比较小的美洽通过造谣抹黑环信,付费刷爆微信群和朋友圈,以弱者的姿态博同情误导不明真相群众,我们对此深表遗憾。与之形成鲜明对比的是行业主流SaaS客服厂商均没有借势抹黑环信来抬高自己的产品,我们对此表示由衷的钦佩,因为好产品从不需要说谎。
 
环信呼吁公开、公平、公正测评,规范中国SaaS客服市场
 
中国SaaS客服软件市场将是一个千亿级市场,但目前市场份额的很大部分还是被传统安装型软件和传统的单一语音呼叫中心所占领。中国新一代的SaaS客服厂商的共同战场是SaaS VS 传统安装软件,是移动互联网时代应运而生的创新技术对诞生在PC互联网时代的上一代客服技术的革新,提高整个客服行业的用户体验和工作效率。环信衷心希望可以团结中国新一代的SaaS客服厂商,教育市场,培育市场,一起把中国的SaaS客服市场做大做强。

环信一直秉承着用数据和事实说话,环信郑重承诺,环信公开发布的所有数据包括融资金额、产品数据和客户量等信息均真实可靠,环信愿意为此承担一切法律责任和道德风险。

 环信提倡在一个公开、公平、公正的环境下用第三方的评测标准和透明的用户数据来规范中国SaaS客服市场,大家带上自己的TOP 用户一起来比一比,美洽,敢约么?


640.webp_(12)_.jpg


 
 环信用数据说话,不服来战,美洽敢约么?
 
环信在即时通讯云领域耕耘数年,积累了大量的用户和良好的口碑,成就了环信“连接人与人”的愿景。环信移动客服是在环信即时通讯云PaaS平台上生长出来的SaaS产品,环信移动客服SDK与环信即时通讯云SDK共享核心代码,历经5万余家APP实践验证,2年半迭代开发,承担着环信“连接人与商业”的愿景。环信携其优势移动端技术和客户资源,在SaaS客服的移动端客服领域后发先至,高歌猛进也是理所当然。

企业级服务市场从来都是靠产品技术和市场销售实力取胜,而不是靠造谣、抹黑和博同情,针对美洽质疑报告数据,环信提议美洽带上自己的TOP用户一起来比一比,敢约么?


具体提议如下:(环信已将评测方案开源在github上,其余友商有兴趣参加,环信同样欢迎。)


640.webp_.jpg



 
1,用户:提交各自TOP50移动端app用户名单,需要有明确客服入口,需要检测明确使用了自己的SDK。(针对美洽质疑TOP5/TOP10用户不代表整个厂商市场覆盖,那我们直接加码到TOP50客户,如果对方不足50家客户的可以酌情减少到40家)

2,机构:主持评测机构:第三方公证处。数据来源机构:各大应用商店,App annie、易观千帆、QuestMobile等。

3,评测方法:1、各自Top50 App用户的总累计市场下载量。2、、各自Top50 App用户的总累计日活量。为保证日活数据的透明公正,可采用至少2家研究机构的日活监控数据,如app annie、易观千帆、QuestMobile等。

4,如果你敢接受环信的挑战,请在2月19日前提交申请。SaaS移动端客服市场占有率公开评测方案GitHub开源地址:https://github.com/haozki/servicecloudmarket
 


 市场份额不是大锅饭:主流SaaS客服厂商均认可,为啥单美洽质疑?
 
易观《2015中国SaaS客服市场专题研究报告》发布后获得了广泛传播。其中部分领先厂商比如逸创云、智齿、爱客服等均第一时间解读了,并在各自微信和优势媒体传播了报告里的趋势,引用了报告里的核心市场数据。
 
 

640.webp_(1)_.jpg


 
逸创云客服微信描述易观智库为国内知名数据机构,智齿客服微信描述易观智库为权威的第三方机构,这是为什么呢?


640.webp_(2)_.jpg


 
为啥美洽你口中的“大佬”《2015中国SaaS客服市场专题研究报告》代表厂商天润融通和Live800不质疑,这么多比你优秀的厂商不质疑,为什么只有你质疑?在移动端美洽1.7%的真实市场占有率影响到你投资人信心了是么?市场不是大锅饭,靠的是实力。


640.webp_(3)_.jpg



美洽:恶意中伤,黑稿路人群全覆盖,误导不明真相群众,红包发到手抽筋。
 


640.webp_(4)_.jpg


 
以上为部分大群截图,绑架友商恶意中伤环信,妄图鹤蚌相争渔翁得利,可惜友商都有职业操守。请问程总您是如何得知逸创、Udesk、环信三家的核心市场数据的?还得出结论环信排第四,靠冥想么?
 

640.webp_(5)_.jpg



组团将黑稿发到行业群里供大家讨论本也无可非议,刷爆上百个微信群也没什么,砸红包诱发转发都能理解,美洽COO程总将黑稿发到众多不明真相的普通路人群,比如“北京程氏宗亲群”是单纯为了冲阅读数?还是里面有一股来自东方的神秘力量?


产品和市场落后可以追,最可怕的是固步自封、观念落后

根据官网显示美洽成立于2013年,而环信移动客服2014年12月开始内测,于2015年4月正式上线,环信移动客服是晚于美洽进入市场,但现在市场占有率环信远超美洽,美洽有反思过为什么吗?

2015年某国内最大O2O平台的App内置客服选型,其中某友商爆出两年完全免费的价格,但最后仍旧付费采购了环信移动客服。某友商是否在失败后在产品和技术层面进行了反思:


1,你的移动端客服是否基于IM长连接技术?只有基于IM长连接技术的移动端客服才能保证消息必达、24小时在线,这已经是常识。

2,SaaS云客服要支持互联网上的海量用户,你的移动端客服是否有经过验证的支持千万级用户同时在线咨询的能力?



企业级服务产品的核心竞争点是产品和技术实力,是靠高质量的研发团队的长期和巨量的投入,不是靠价格,更不是靠打嘴仗,发黑稿博取同情,绑架用户。
 

640.webp_(6)_.jpg


 
 易观报告客户服务领域关于移动端和全媒体的趋势已经不需累述,如果SaaS客服“移动端”指标还算是程总口中所谓意淫的“中国特色”指标,那么很遗憾您的观念起码已经落后整个SaaS客服行业了。如果行业厂商一直固步自封,停留在原来的产品和市场圈子自沾自喜,将会被新一轮先进的生产力无情的淘汰,这也是他们为什么市场占有率低的主要原因。当然如果程总能和谈笑风生的 Nielsen 或者其他机构一起在以下美洽提议的三个方面: “付费用户数占比”、“付费金额占市场总额比”和“注册用户占比”做一个中立报告,环信将积极参与并提供数据。


640.webp_(7)_.jpg


 
环信新媒体小编努力工作效率高也有错?行业调研机构发布报告以后,第一时间完成解读借势传播难道不是每个厂商市场部的最起码职责么?由此可以看出美洽的全方面落后,不单只在市场部。

俗话说“离开剂量谈毒性”都是耍流氓,抛开数据谈第一是不是更耍流氓?美洽COO程总说:“反正美洽比环信领先的多了。”亲,原因呢?数据呢?哼,讨厌、恶心、呸,就是比你领先的多…
 

不堪入目的骂街都来了


 

640.webp_(8)_.jpg



造谣和吹牛逼三神兽:“我同学、我朋友、我亲戚”。本来想深度扒扒易观智库的,后来想想还是省省力气吧…其实大家真的很想听。下面这幅图还给您,不谢。


640.webp_(9)_.jpg


 
Udesk:你没看清楚数据,我不怪你


640.webp_(10)_.jpg


 
求Udesk小编手下留情,马上大过年的,就不要打打杀杀啦。重要的事情说三遍:“移动端、移动端、移动端。”这个图里说明的是环信占中国SaaS移动端客服市场比例,而不是整个市场。也许媒体自发转载传播的标题有歧义,你没看清楚数据我不怪你。


写在最后,2015年是中国SaaS元年,行业需要自律,同时也需要新标准。环信衷心希望可以团结中国新一代的SaaS客服厂商,教育市场,培育市场,一起把中国的SaaS客服市场做大做强,市场足够大,大家都可以活下来。 收起阅读 »

【有奖调查】关于表情的使用需求

为了更好地服务环信用户,了解大家对表情的使用需求,环信和萌岛合作发起本次有奖调查,感谢大家支持!如果有需要,可以抓你们的运营或者 PM 来回答哦。    萌岛是一个专注于互联网卡通形象的服务平台,汇聚国内专业卡通形象设计师,大家熟悉的各路表情包设计大...
继续阅读 »
为了更好地服务环信用户,了解大家对表情的使用需求,环信和萌岛合作发起本次有奖调查,感谢大家支持!如果有需要,可以抓你们的运营或者 PM 来回答哦。
 

萌岛.jpg


 
萌岛是一个专注于互联网卡通形象的服务平台,汇聚国内专业卡通形象设计师,大家熟悉的各路表情包设计大神,都在萌岛。萌岛已为国内多个互联网产品提供卡通形象和表情设计服务。


萌岛表情设计稿.png



 1、你是否想要类似天猫和京东狗这样的卡通形象?
 
 2、你是否想要企业专属定制的卡通形象表情包? 
 
3、单个表情制作费用多少钱能够接受?500以内 / 500-1000 / 1000-2500 / 其它价格(可以具体说明)
 
 4、关于表情有任何想法请告诉我们。


 
如果对卡通形象表情感兴趣,还可以关注萌岛的微信服务号了解哦。   



萌岛服务号二维码8.jpg

收起阅读 »

java.lang.NoClassDefFoundError: com.easemob.chat.EMChat

导入jar,在自定义application里oncreat中跑EMChat.getInstance().init(this)这个就报错,估计是导包的问题,就是找不到哪里错了


aaa.png


导入jar,在自定义application里oncreat中跑EMChat.getInstance().init(this)这个就报错,估计是导包的问题,就是找不到哪里错了

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

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

QQ截图20160130130317.png


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

QQ图片20160128201903.png


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

ANDROID开发之BUG专讲:入门篇(一)

话说诸葛亮是一个优秀的程序猿,每一个锦囊都是应对不同的case而编写的!但是优秀的程序猿也敌不过更优秀的bug!六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮只因为有一个错误的case-马谡,整个结构就被break了!   BUG真的是一个很讨人厌烦的东西...
继续阅读 »
话说诸葛亮是一个优秀的程序猿,每一个锦囊都是应对不同的case而编写的!但是优秀的程序猿也敌不过更优秀的bug!六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮只因为有一个错误的case-马谡,整个结构就被break了!

 

BUG真的是一个很讨人厌烦的东西,它总是在你以为自己已经战胜它的时候跳出来嘲笑你。如何才能拿下这些烦人的BUG呢?我想要从DEBUG开始。这里给刚刚接触编程的新手们介绍一下Debug的方法,学会了这些方法后反复练习,当你积累了上万的有效代码量以后自然会发现你的水平将大大精进。

 

工具介绍

 

Android Studio:几乎所有的编译器都会带上自己的DEBUG调试器,所以先来讲讲这个。我这里就以Android studio为例,Android studio是谷歌推出的专门同来进行Android开发的软件,由于针对性比eclipse强所以里面集成了很多插件个人觉得比eclipse方便不少。现在多数安卓开发者都在使用这款IDE了。

 

Android Studio自带模拟器:简单讲Android不像C或者C++甚至是单纯的Java编程。它从设计到编写程序到调试,都离不开手机,Android Studio自带一款强大的模拟器,他能在电脑上模拟出一台手机,如果你不考虑程序在真实设备上的兼容性,这款模拟器已经非常棒了,一般程序在开发阶段的需要都能用模拟器来满足。

 

云手机:模拟器也有缺点,它的效率比较低,并且程序在真机上的运行情况,远比模拟器要复杂,所以开发者的程序写好后还需要用真机来调试。我不太不愿意用自己手机调试,所以会用Testbird的云手机,它们会在云端提供好几百款主流手机,你可以直接用Android Studio等IDE,去远程连接这些机器做调试,简直就是为调试Android程序量身定做的,感兴趣的同学可以注册使用,现在免费开放注册

 https://dt.testbird.com/sign_up/?i18n=zh-cn&cl=DNgwzY&invite=gLKeRY

建立一个初始程序

 

首先在建立一个默认的空白工程之后,我们先在工程里面加点儿东西,这样我们才有东西可调。因为这篇文章是写给新手们看的(调试都不会你敢自称老手?),大家都知道Android编程里非常重要的一个概念就是MVC,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。其中模型(model)大家可以不管,因为这涉及到结构和数据类型,本例还涉及不到。

 

View可以这么概括——你在手机上所看见的都是view或者由view组成的,但这句话反过来是错的,View并不都是可见的。至于controller控制器你可以将其理解为你的控制逻辑。在Android studio默认工程里面本来是有一个TextView和一个信封样的按钮,我们可以对这个默认工程作出如下修改:添加一个Button按键,在用户按下该按键之前那个TextView显示的内容为默认的“Hello world!”。当用户按下按钮以后该TextView变成“->按下的次数”。我把具体步骤贴在这儿:

 

以Design形式打开content_main.xml,拖出一个Button控件,再进入content_main.xml的Text形式,在button里面加入这样一句话:android:onClick="Btn1_Click",然后进入MainActivity.java文件,依次加入下面的语句:

import android.widget.*; // 引入JAVA包



TextView textView;//创建一个TextView对象

Button button; // 创建一个button对象

int count = 0;



在onCreate()方法中添加如下语句:

button = (Button)findViewById(R.id.button);

textView = (TextView)findViewById(R.id.textView);//这两句话将View和controller联系了起来,也就是说你对手机上view的操作有了这两句话才能反映到你的控制逻辑也就是程序中来~

public void Btn1_Click(View view)//按键后要作出反映的函数。
{
     String str = "---->" + count;
     textView.setText(str);
     count++;
}

然后运行程序就可以了,按一下数字就会增加一个。这里先上一张图(我用的是云手机,大家有条件的可以用自己的手机或者模拟器):

 

 

DEBUG的第一步,设置断点

 

现在初始程序就算是完成了,接下来说说调试,Android调试首先你得知道自己在哪儿打断点,它不像C语言那样只有C文件在你想打哪儿打哪儿。Android主要有两种形势的文件,一种是.java文件一种是.xml文件。打断点只能打在.java文件里面,因为.java文件就是控制逻辑。而.xml文件大家可以理解成视图文件或者叫布局文件,程序走逻辑流程是永远不会走到那儿的,就算到了也没有任何的意义。打断点的方式也非常简单,只是在某一行代码前用鼠标左键点一下出现了红圆点就表示打断点成功了。如下图:

 


 

 

打点是使用DEBUG的第一步,那么接下来就只需要点击run->debug”run”就可以了。当你的程序运行到断点所在的位置的时候程序就会自动暂停,如下图:

 

 

 

如果你是通过DEBUG运行程序手机也会有提示,大家可以看看。

然后程序如果运行到断点处你就会看见某行处于被选中的状态,这个时候程序已经暂停了。

 

 

 

这个时候你可以选择继续运行到下一个断点或者自己一步一步的跟踪调试下去:

一步步调试(F8)

 

 

 

直接运行到下一个断点(F9)

 

 

Debug的操作核心就只有这简单的三步:打断点,通过DEBUG运行程序,按自己的需要选择调试方式(调试途中也可以打断点)。

 

今天主要给大家简单的介绍了一下Debug,是基本使用方式,下一节将为大家具体讲解DEBUG的用法和特性。 收起阅读 »

环信移动客服v4.3更新说明

各位开发者大大好呀,寒潮终是过去,年味气息也越来越近了。从上一次发版以来,我们是实实在在感受到了各位小伙伴对环信的热情!为了让大家都能在春节前用上新版本过个好年,我们工程师也是彻底开挂了!如约而至,移动客服V4.3出来了,这次新版本包含了大家期待已久的“机器人...
继续阅读 »
各位开发者大大好呀,寒潮终是过去,年味气息也越来越近了。
从上一次发版以来,我们是实实在在感受到了各位小伙伴对环信的热情!为了让大家都能在春节前用上新版本过个好年,我们工程师也是彻底开挂了!如约而至,移动客服V4.3出来了,这次新版本包含了大家期待已久的“机器人”,“客服自定义消息”“发送文件消息”等热门功能,赶紧来体验下吧!

 1. 新功能    


1.1. 智能机器人客服    
1.2. 企业欢迎语    
1.3. 多级问候语    
1.4. 访客中心    
1.5. 手机版客服工作台(长连接)    
1.6. 会话结束自动发送满意度评价邀请    
1.7. 转接会话需要对方确认    
1.8. 文件发送    
1.9. 自定义消息    
1.10. 客服在线时长统计    
1.11. 客服超时未回复访客端提示    
1.12. 注册验证    
1.13. 消息提示音(客服端)    
1.14. 企业形象展示位(网页访客端)    
1.15. 客服状态切换提示    
1.16. 最大接待人数设置开关    


 
2.优化内容


2.1. 优化数据统计    
2.2. 增加客服最后回复时间    
2.3. 解决客服关闭窗口后30秒内依然分配会话的问题    
2.4. 历史会话消息详情按单会话查询    
2.5. 历史会话可以精确到分钟查询    
2.6. 满意度评价记录和评语查看   
2.7. 访客资料备注区域增大    


  
 
点击下载详细说明↓ 收起阅读 »

群跟聊天室最多能容纳多少人?

群上限是2000人,聊天室是5000人。
群上限是2000人,聊天室是5000人。

类似ChatService这样的服务很容易会被系统或者杀毒软件给kill掉,在安卓sdk中环信是怎么让ChatService不被kill掉的?

在sdk里环信是加了个守护进程,在应用中也可以在应用设置里允许后台运行和保持后台连接。
在sdk里环信是加了个守护进程,在应用中也可以在应用设置里允许后台运行和保持后台连接。

华为手机(小米新版)不自动重连 该怎么处理?

华为(小米新版本)有白名单,不在白名单的应用不准在后台运行 ,需要让用户把应用放到白名单里 ,这个完全是厂家和系统的设置。app绕不过去,我们也增加了小米推送,具体可参考 http://docs.easemob.com/doku.php?id=start:20...
继续阅读 »
华为(小米新版本)有白名单,不在白名单的应用不准在后台运行 ,需要让用户把应用放到白名单里 ,这个完全是厂家和系统的设置。app绕不过去,我们也增加了小米推送,具体可参考 http://docs.easemob.com/doku.php?id=start:200androidcleintintegration:115payloadmsg。 收起阅读 »

如果一个群主解散了一个群,这个群在本地的聊天记录还有吗?

解散群组后本地聊天记录就删除了。
解散群组后本地聊天记录就删除了。

javalangRuntimeException: Appkey is null or empty, Please check AndroidManifestxml,这个错误是什么问题呢?

这是因为没填appkey,需要用户去AndroidManifestxml里面填上appkey。
这是因为没填appkey,需要用户去AndroidManifestxml里面填上appkey。

在IDEA中开发的项目,有的手机会报couldn't find libeasemobserviceso ,请问怎么解决?

检查是否加入了so,没有加入的话请加入so。
检查是否加入了so,没有加入的话请加入so。

Android打包混淆之前实时语音和视频是正常的,混淆之后总是无法建立连接,这个可能是什么原因?

看下官网的相关混淆,音视频相关那些类是不是都keep了,如果还不行的话,请分析下日志看看,无法连接的状况也可能和混淆无关。
看下官网的相关混淆,音视频相关那些类是不是都keep了,如果还不行的话,请分析下日志看看,无法连接的状况也可能和混淆无关。

环信的图片和语音文件是经过加密的么?

上传附件成功后会返回的数据中会有secret,需要根据secret和url从服务器下载附件。
上传附件成功后会返回的数据中会有secret,需要根据secret和url从服务器下载附件。

Demo中用到的友盟部分是什么作用?

做数据统计用的(不需要可以删掉)。从2.2.3以后还会有自动更新。
做数据统计用的(不需要可以删掉)。从2.2.3以后还会有自动更新。

android客户端可以获取群的历史记录吗?

正常来说是看不到进群前面的历史记录。如有需要,可按以下步骤完成。第一步,用户服务端通过环信rest将聊天记录导入用户自己的服务器上;第二步,用户服务器给客户端提供拉取聊天记录的一个接口,手机客户端从用户自己服务器下载到聊天记录后,可以再通过环信的客户端sdk导...
继续阅读 »
正常来说是看不到进群前面的历史记录。如有需要,可按以下步骤完成。第一步,用户服务端通过环信rest将聊天记录导入用户自己的服务器上;第二步,用户服务器给客户端提供拉取聊天记录的一个接口,手机客户端从用户自己服务器下载到聊天记录后,可以再通过环信的客户端sdk导入到手机本地的db中: 调用importmessage存入 收起阅读 »

实时判断好友在不在线能做到吗?

环信与微信类似,弱化了用户在线状态。即使用户不在线环信也会推送消息。
环信与微信类似,弱化了用户在线状态。即使用户不在线环信也会推送消息。

如何设置免打扰这些,如何自定义notification?

从sdk2.1.8开始已经放到demo层控制了,可以参考HXNotifier这个类。
从sdk2.1.8开始已经放到demo层控制了,可以参考HXNotifier这个类。

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

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

环信demo通过长按home键,弹出的应用列表里面关掉应用,然后就不能及时收新消息,这种情况算bug吗?

服务被kill掉长链接断了所以收不到消息。
服务被kill掉长链接断了所以收不到消息。

环信的表情可以换成自己的吗?

可以换成自己的,用户自己app里协定好了就可以。比如<:)> 这个字符串代表笑脸的图片,用户在ui上截取了替换就可以了。 对于环信来说,发的就是一个字符串。
可以换成自己的,用户自己app里协定好了就可以。比如<:)> 这个字符串代表笑脸的图片,用户在ui上截取了替换就可以了。 对于环信来说,发的就是一个字符串。

接收不到透传,请问是什么原因?

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

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

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

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

客户可以先把消息内容按照自己的算法加密之后再通过环信来发送,iOS的回调是EMChatManagerEncryptionDelegate.h;安卓是EncryptProvider,接口说明在http://www.easemob.com/apidoc/andro...
继续阅读 »
客户可以先把消息内容按照自己的算法加密之后再通过环信来发送,iOS的回调是EMChatManagerEncryptionDelegate.h;安卓是EncryptProvider,接口说明在http://www.easemob.com/apidoc/android/chat/ 收起阅读 »

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

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

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

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

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

没有只清除内存的方法,deleteConversation和clearConversation都会删除会话和本地db中的记录。不同的是clearConversation会在内存中保留会话对象。demo中调clearConversation清空后没有在会话列表显...
继续阅读 »
没有只清除内存的方法,deleteConversation和clearConversation都会删除会话和本地db中的记录。不同的是clearConversation会在内存中保留会话对象。demo中调clearConversation清空后没有在会话列表显示出空会话,是因为对消息数为零的会话做了过滤。 收起阅读 »

环信sdk的数据库中有个表是用来存储token的,这个token的用处在哪里?这个token在sdk里的作用和应用场景是什么?

token是用来验证客户身份的,没有合法的token是没法链接服务器的。Token一般是上传下载附件是需要用到的一个认证。
token是用来验证客户身份的,没有合法的token是没法链接服务器的。Token一般是上传下载附件是需要用到的一个认证。

环信的聊天室是不是一个时间只能加入一个聊天室吗,可以加入聊天室不用退出?聊天记录会保存吗?

可以加入多个聊天室,但建议只加一个聊天室。聊天记录是服务器推下来的,一般是10条,会在本地做保存,当leave的时候会删除。
可以加入多个聊天室,但建议只加一个聊天室。聊天记录是服务器推下来的,一般是10条,会在本地做保存,当leave的时候会删除。

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

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

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

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

关于GCM推送什么时候用,国内外怎么区分?

根据国内情况,目前GCM推送只适用于在国外,国内正常走的还是环信本身推送,SDK会自动切换推送,如果你的APP有国外用户,只要按照文档加上相应的gcm设置即可,当你的设备在国内,SDK会判断出,不会启动GCM,当你的app在国外登陆,SDK识别到国外,同时保证...
继续阅读 »
根据国内情况,目前GCM推送只适用于在国外,国内正常走的还是环信本身推送,SDK会自动切换推送,如果你的APP有国外用户,只要按照文档加上相应的gcm设置即可,当你的设备在国内,SDK会判断出,不会启动GCM,当你的app在国外登陆,SDK识别到国外,同时保证你的设备带有Google play 服务,SDK会自动切换到GCM推送; 收起阅读 »

视频通话的横竖屏在哪设置?

EMVideoCallHelper.setVideoOrientation(); 我们已经支持支持横屏视频了。
EMVideoCallHelper.setVideoOrientation(); 我们已经支持支持横屏视频了。

如何将消息批量导入到本地数据库,同时保存到内存?

用importMessage(EMMessage message,boolean addToMemory);这个方法里的第二个参数可以控制是否加载到内存,多的话遍历即可。importMessages(List list); 只能导数据库,如果想同时导入内存的话...
继续阅读 »
用importMessage(EMMessage message,boolean addToMemory);这个方法里的第二个参数可以控制是否加载到内存,多的话遍历即可。importMessages(List list); 只能导数据库,如果想同时导入内存的话可以用EMConversation来添加。 收起阅读 »

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

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

你们的log日志在哪?

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

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

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

我们聊天记录要同步,环信是否保存聊天记录呢?

环信服务器会保存聊天记录3天的,开发者需要通过rest api定期获取历史消息到app服务器,每次获取聊天记录从app服务器获取。
环信服务器会保存聊天记录3天的,开发者需要通过rest api定期获取历史消息到app服务器,每次获取聊天记录从app服务器获取。

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

可以用EMChat.getInstance().isLoggedIn();
可以用EMChat.getInstance().isLoggedIn();

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

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

环信的appkey可以写到代码里面吗?

2.2.0之后是可以的,EMChat.getInstance().setAppKey(String appkey);
2.2.0之后是可以的,EMChat.getInstance().setAppKey(String appkey);

关于为群组添加二维码加群的经验分享

一个矛盾的问题,环信群组分为公开群组与私有群组,各自特征请自己查阅。项目前阶段并没有为群组添加二维码加群的功能,所以 使用 :  eGroupStyle_PrivateMemberCanInvite; // 所有群成员都可以邀请非成员进群型  这个类型建了群,...
继续阅读 »
一个矛盾的问题,环信群组分为公开群组与私有群组,各自特征请自己查阅。项目前阶段并没有为群组添加二维码加群的功能,所以 使用 :
 eGroupStyle_PrivateMemberCanInvite; // 所有群成员都可以邀请非成员进群型 
这个类型建了群,成员与群主均可邀请成员。
后期添加了 二维码扫描入群, 那么问题来了, 如果想要添加此功能就必须使用 公开群组 :
eGroupStyle_PublicOpenJoin //公开群组,允许非群组成员加入,不需要管理员同意
但是公开群组的设定只允许群主邀请好友,成员无法邀请。起初并不知道这个设定,工作人员告诉我也并不清楚,知道安卓小哥做到成员邀请的时候 发现了这个问题,与工作人员讨论了许久 ,后台创建群组也是无法 是公开群组 成员可邀请好友。
结论就是 :想为群组添加二维码扫描入群,就需要舍弃 成员邀请;想要成员邀请好友功能,二维码扫描入群这个功能就无法实现了。
 
希望环信早点完善这个冲突。。
 
  收起阅读 »

根据易观发布的《中国SaaS客服市场专题研究报告2015》显示,截至2015年第三季度,环信移动客服占据中国SaaS移动端客服市场77.4%的份额,稳居行业第一。

 1月26日,易观国际发布了《2015中国SaaS客服市场专题研究报告》,全方位解读了国内SaaS客服市场现状,环信以高达77.4%的份额遥遥领先竞品,绝对优势稳居市场第一。易观预测SaaS客服将在2016年进入高速发展期,市场规模将在2017年达到680亿元...
继续阅读 »
 1月26日,易观国际发布了《2015中国SaaS客服市场专题研究报告》,全方位解读了国内SaaS客服市场现状,环信以高达77.4%的份额遥遥领先竞品,绝对优势稳居市场第一。易观预测SaaS客服将在2016年进入高速发展期,市场规模将在2017年达到680亿元人民币,或将诞生SaaS客服领域首个“独角兽”公司。



图片1.png


环信移动客服市场占有率高达77.4%,绝对优势稳居市场第一。


 SaaS客服为啥这么火?环信或将成首个独角兽公司

自2006年起,中国就有企业提供SaaS客服,主要提供语音呼叫中心客服和网页端客服,探索期前期发展缓慢。随着移动互联网的发展,专门为移动端提供SaaS客服的厂商纷纷崛起,促进了SaaS客服领域的高速发展。自2014年以来,SaaS客服领域吸引了大量的投资者,促进了更多的客服提供厂商进入市场。预计2016年开始进入高速发展期。
 

图片2.png


在北美市场,2015年客服软件市场采购总额高达96亿美元。这个市场在过去一年里就新出现了两家“独角兽”公司Zendesk和Freshdesk。Zendesk于2014年上市,股票首日即大涨50%,市值最高近30亿美元。同时另一家SaaS客服厂商Freshdesk于2015年完成E轮融资估值也已超过10亿美元。这还不包括在这个领域中的传统巨头,如微软,Salesforce,Oracle等。足以见得资本对SaaS客服市场的追捧程度。易观预测到2017年,中国SaaS客服市场交易规模将增长至680亿元人民币,并将继续保持平稳增长。
目前来看,中国SaaS客服市场的成长路径相当清晰。PC时代诞生了最早的传统话音呼叫中心,PC互联网诞生了网页在线客服,社交媒体时代诞生了微信、微博等社交媒体客服。进入2015年后,随着移动互联网井喷,消费者全面转向移动设备进行消费和交易,将以环信移动客服为代表的新一代智能云客服又推到了风口浪尖。这一代智能云客服的特点是重视移动端APP的内置客服接入体验,同时支持多种渠道的接入如电话,网页,微信和APP。通过云服务SaaS形式降低用户使用成本,大量运用人工智能技术提高效率。因此,新一代智能云客服正日益成为移动互联网时代企业客服的标配。而在国内,已经有过四轮融资、市场份额一直保持第一的环信很有可能扛起大旗,或将成为国内SaaS客服领域首个“独角兽”公司。

中国SaaS客服市场发展现状:环信移动客服市场、融资、产品技术均遥遥领先

根据易观报告显示,中国SaaS客服中传统客服渠道仍旧占有较大份额,如呼叫中心仍受33.0%的消费者偏好,2014年语音呼叫中心占据整体SaaS客服市场80.4%的市场份额。但调研数据显示,三分之二客户偏好来自网页端、移动端、微信公众号、微博等互联网渠道客服类型。随着移动互联网井喷,消费者全面转向移动设备进行消费和交易,尤其是移动端客服,将逐渐成为SaaS客服的主流。易观智库预计2017年移动端客服将占整体SaaS客服市场7.9%的市场份额,全媒体客服将占据市场12.3%的市场份额。这说明移动端和全媒体客服形式具有强劲市场潜力。


图片3.png


 
根据易观报告,SaaS客服市场厂商占有率出现比较明显的集中趋势。其中,环信移动客服用户覆盖占比为77.4%,稳坐市场第一宝座,遥遥领先竞品厂商,为“互联网+”时代的客户服务产品树立了一个新的标杆。

环信之所以取得如此佳绩,原因不是偶然的,而是多方面综合决定的,主要在于:

1,从市场销售角度来说,环信即时通讯云服务了国内包括电商、O2O、互联网教育、互联网医疗、智能硬件等TOP20行业的TOP10客户,市场份额绝对领先,积累了良好的品牌,构建了良好的开发者关系,并赢得了极佳的客户美誉度。环信移动客服是在环信即时通讯云PaaS平台上孵化出来的SaaS产品,因此具有巨大的客户资源优势和很低的获客成本。

2,从产品角度来说,环信以移动端客服,全渠道客服,智能问答机器人为核心切入点。环信移动客服是全球首创的全媒体智能云客服平台。支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、移动端客服和呼叫中心等多种渠道。环信移动客服基于环信业界领先的IM长连接技术保证消息必达,并通过强大的智能机器人技术极大降低人工客服工作量。

图片4.png


3,从资本角度,环信已经实现四轮融资,是SaaS客服领域融资最快,资金最充裕的平台。 2014年5月经纬中国天使伦融资500万人民币,2014年8月SIG A轮融资500万美金,2014年10红杉300万美金A+轮融资,2015年4月红杉领投1250万美金B轮融资,融资总额近1亿5000万元人民币,而SaaS客服行业其余竞品都还停留在A轮阶段。环信CEO刘俊彦表示:“当你的产品和技术足够领先,你的资本又是竞品的数倍,你的市场份额没有理由不占据绝对优势。”对于环信移动客服取得77.4%的高市场份额,刘俊彦表示毫不意外,未来还将要继续扩大这一优势。

中国SaaS客服市场未来发展趋势:环信大有可为

易观报告同时指出了中国SaaS客服厂商未来应该注意的四点趋势:
1、客服中心将由企业成本中心向盈利中心转变,承担起更多的营销、销售职责。而在移动互联网时代,客服将成为互联网时代用户和企业的第一连接点,拥有更多主动权,并承担起更多客户关系维护,二次销售,市场营销职能,而不再是原来那样简单的承担售后服务职能,而是直接参与营销、销售等企业盈利业务。

2、从企业需求角度而言,云服务形式有利于降低购买成本与维护成本。部署简单、按需付费、弹性扩容、席位灵活是企业对SaaS形式的客服系统的基本需求。通讯连接技术升级、系统架构开放、富媒体信息处理是对SaaS客服平台的技术要求。

3、从SaaS客服服务提供商角度来说,市场份额逐渐向领先的厂商集中,客服企业逐渐呈现出平台化趋势。SaaS软件产品标准化程度高,单个用户服务成本低,规模化优势明显。将导致大批以销售安装型软件的传统中小型软件厂商失去竞争力面临威胁。市场份额出现向少数几个领先厂商集中的趋势。领先的厂商将通过PaaS平台来解决特定用户或特定行业的定制化需求,并通过PaaS平台打造由合作伙伴,集成商,开发者等多方参与者构成的平台型企业生态圈。SaaS客服市场将向有先发优势和规模优势的企业进一步倾斜。

4、具备移动端技术优势的SaaS客服企业将更有可能胜出。从消费者角度而言,消费者对客户服务的需求越来越多的体现在移动端上,对客服需求也越来越高。随着移动终端的普及和移动互联网用户习惯的养成,客服需求将表现为向移动端为首的全媒体接入迁移。移动互联网的发展使得用户的客服需求开始由目的型客服需求逐渐向场景型客服需求发展。

环信移动客服于2014年12月上线,截至2015年底,环信移动客服共服务了12000家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等20大领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、随手记、海尔、51talk,链家自如客等众多互联网和传统企业。

未来环信还将会给行业带来什么样的惊喜,我们拭目以待!
 

 
 
点击下载研究报告 ↓
  收起阅读 »