注册
环信即时通讯云

环信即时通讯云

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

环信开发文档

Demo体验

Demo体验

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

RTE开发者社区

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

技术讨论区

技术交流、答疑
资源下载

资源下载

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

iOS Library

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

Android Library

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

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,链家自如客等众多互联网和传统企业。

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

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

单聊或群聊-的聊天历史的实现

这是 效果图, 群组 或是单聊 均可,用的 2.0的sdk ,之前项目没有添加视频,聊天历史中只有文字与图片,这一部分开始 是个妹纸写的,后来妹纸离开了,项目加了视频发送,聊天历史中也要添加,群聊也要添加聊天历史功能, 看妹纸的代码 也是看了许久,毕竟我工作也...
继续阅读 »



x.png



这是 效果图, 群组 或是单聊 均可,用的 2.0的sdk ,之前项目没有添加视频,聊天历史中只有文字与图片,这一部分开始 是个妹纸写的,后来妹纸离开了,项目加了视频发送,聊天历史中也要添加,群聊也要添加聊天历史功能, 看妹纸的代码 也是看了许久,毕竟我工作也就几个月,她也是个新人。。。 简单的说下实现思路吧。


m.png



文件目录, model 就是参照 环信demo 中的MessageModel ,cell布局需要判断 消息的类型,Controller中需要 两个 关键参数:单聊就是用户ID,群聊就是 群组ID ;
然后:
@property (strong, nonatomic) EMConversation *conversation;环信的,具体内容自己点进去看
// 根据接收者的username获取当前会话的管理者

    if (_numForGroup==42) {
       _conversation =[[EaseMob sharedInstance].chatManager conversationForChatter:_groupID conversationType:eConversationTypeGroupChat];
    }else{
    _conversation = [[EaseMob sharedInstance].chatManager conversationForChatter:_username
                                                              conversationType:eConversationTypeChat];
      } 
获取到消息以后  NSArray *messages = [_conversation loadAllMessages];   //这里的messages 数组 就是与 用户ID 或群组ID 相对应 单聊或群聊的所有消息,
接下来 就要解析这个数组里面的 消息了,可以参照 ChatVC 中的消息解析; 
下面是一部分代码
-(void)analyzeData:(NSArray *)messages{

//    [_messageList removeAllObjects];

    _messageList = [[NSMutableArray alloc] init];

    int i = 1;

    for (EMMessage *mes in messages) {

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

        ChatHistoryModel *chatModel = [[ChatHistoryModel alloc] init];

        

        chatModel.massageID = mes.messageId;

        

        NSDictionary *ext = mes.ext;

        NSDictionary *em_apns_ext = ext[@"em_apns_ext"];

        chatModel.username = em_apns_ext[@"nickname"];

        

        NSDate *mesD = [NSDate dateWithTimeIntervalSince1970:mes.timestamp/1000];

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

        [dateFormatter setDateFormat:@"MM-dd HH:mm:ss"];

        chatModel.time = [dateFormatter stringFromDate:mesD];

        

        id<IEMMessageBody> mesbody = [mes.messageBodies firstObject];

        

        chatModel.messageType = mesbody.messageBodyType;

        

        if (chatModel.messageType == 1) {

            EMTextMessageBody *textbody = (EMTextMessageBody *)mesbody;

            chatModel.textMessage = textbody.text;

        }else if(chatModel.messageType == 2){

            EMImageMessageBody *imagebody = (EMImageMessageBody *)mesbody;

            chatModel.message = imagebody.message;

            //本地图片路径

            chatModel.thumbnailFile = imagebody.thumbnailLocalPath;

            chatModel.imageFile = imagebody.localPath;

            

            //网络图片路径

            chatModel.imageRemote = imagebody.remotePath;

            chatModel.trumbnailRemote = imagebody.thumbnailRemotePath;

            

            //图片大小

            chatModel.imageSize = imagebody.size;

            chatModel.thumbnailSize = imagebody.thumbnailSize;

            

        }else if(chatModel.messageType == 3){

            EMVideoMessageBody *videoMessageBody = (EMVideoMessageBody*)mesbody;

            

            chatModel.message = videoMessageBody.message;

            //第一帧图片

            chatModel.thumbnailImage = [UIImage imageWithContentsOfFile:videoMessageBody.thumbnailLocalPath];

            //视频第一帧图片大小

            chatModel.imageSize = videoMessageBody.size;

            chatModel.localPath = videoMessageBody.thumbnailLocalPath;

           }
        }
视频消息的显示, 是一个视频的第一帧图片 加上一个按钮,    另外有一个问题,就是 他人发送的图像 与自己发送的图片,在cell显示上会有大小的差异, 接下来我会把源码传上来,给大家参考,这一部分还需要优化,特别是cell中 图像与 视频的显示, 大小总是有些不满意,也希望大家帮忙修改下
  收起阅读 »

感谢环信技术支持对我集成环信的帮助

  我集成环信用的时间很短,直接按照文档来的,没有出现什么大问题,小问题有,都百度解决了。   不知道大家有没有遇到过,在更改聊天页面UI显示的时候出现了问题,因为环信很多信息由一个父类+N多个子类,通常找个信息更改要command很久,才能找到,没准还找错了...
继续阅读 »
  我集成环信用的时间很短,直接按照文档来的,没有出现什么大问题,小问题有,都百度解决了。
 
不知道大家有没有遇到过,在更改聊天页面UI显示的时候出现了问题,因为环信很多信息由一个父类+N多个子类,通常找个信息更改要command很久,才能找到,没准还找错了,浪费功夫。这可能是我技术、经验的缺陷造成的。
 
昨天弄环信昵称、头像、信息显示的UI,通过在线技术支持 指点解决了。
说句实在话,尽管我从事开发这一块时间短,但是也使用过不少的SDK,询问客服问题,你环信这一块做的让我感觉是最好的。

虽然有些东西你们也不太清楚,但是你们给的提示贼重要,是一个引路人
 
因为以前没有使用过环信,我为了可以方便改动一些你的demo上的东西,特意使用2.0,因为2.0暴露了.m文件,给我们这些程序员改东西提供了了很大的方便。
 
但是问题也就出现了,因为你们SDK封装很好,类一个嵌套一个,查找时很费时间,弄这个我自己摸索了将近一天,就是没有找到关键的地方,你们客服NO.3直接看到我的问题就反应过来我的目的是什么,直接说了父类名出来,我才能顺利的解决我的问题。
 
环信的技术支持部门给我感觉真的很强大,从集成环信以来,我接触了NO.11、17、03这三位技术支持,其他的没遇到过暂时就不评价了。
NO.11客服每次都很耐心回答我的问题,很棒。给我感触最深的是NO.3,我问她“你为什么知道的这么清楚呀?”她回了句很经典的话:遇到多了,自然就知道了。

可能大家会说我是喷子,拖,但是这里附上我写的更改昵称、头像、信息显示位置的文章链接:

http://community.easemob.com/article/825307564
 
大家共同进步! 收起阅读 »

2016,快来许下你的新年愿望吧

 新年伊始,你的新年愿望是什么?   回望刚刚过去的一年,也许困难和挫折曾让我们心痛,也行拼搏的豪情和胜利的喜悦依然洋溢心间。2015已经过去了,我们更应该把握好现在,展望未来。 你许下新年愿望了吗? 一人一个新年愿望!你的...
继续阅读 »
 新年伊始,你的新年愿望是什么?


心形.jpg


 

回望刚刚过去的一年,也许困难和挫折曾让我们心痛,也行拼搏的豪情和胜利的喜悦依然洋溢心间。2015已经过去了,我们更应该把握好现在,展望未来。

你许下新年愿望了吗?

一人一个新年愿望!你的2016新年愿望是什么?
 

1.png



大家一起为你祝福……  收起阅读 »

使用环信demo实现类似QQ那样的会话界面效果

使用环信即时聊天,将昵称和聊天信息显示样式更改成类似QQ的效果。 如图: 也就是图片的上半部分显示昵称,昵称下面紧跟着聊天信息的效果。如果你还不了解这种效果的话,那么你打开你的手机QQ进入一个群看下就明白了。 注意:我使用的是环信2.0,不是3.0...
继续阅读 »
使用环信即时聊天,将昵称和聊天信息显示样式更改成类似QQ的效果。
如图:

更改后的.png


也就是图片的上半部分显示昵称,昵称下面紧跟着聊天信息的效果。如果你还不了解这种效果的话,那么你打开你的手机QQ进入一个群看下就明白了。


注意:我使用的是环信2.0,不是3.0
 
1、更改昵称的位置
全局搜索找到EMChatViewBaseCell.h文件,在该文件中的layoutSubviews方法里面进行更改。


layoutSubviews.png


2、在layoutSubviews更改完成之后,还是在该文件中,然后在setMessageModel方法里面进行一个更改。代码如下图显示。

setmodel.png


3、这样昵称就显示出来了。如果是别人的信息(左侧),昵称在图片的右侧;自己发送的信息,昵称在图片的左侧。到目前位置,显示昵称及位置已经好了,但是问题出现了,聊天信息会遮住了昵称,那么就要往下看了。
4、找到EMChatViewCell.h文件,EMChatViewCell是继承于EMChatViewBaseCell的一个子类,这里主要是显示聊天信息的一个view。在这个文件里面进行聊天信息位置的设定即可。代码如下:
找到EMChatViewCell文件中的layoutSubviews方法,在这个里面进行设置即可。
将bubbleFrame.origin.y = self.headImageView.frame.origin.y;
改成
bubbleFrame.origin.y = self.headImageView.frame.origin.y + 15;即可
这layoutSubviews方法里面有俩个地方要改。如下图显示


viewset.png


 


 如果上面更改成功了,那么就完成了,可以看看效果了。如图


更改后的.png


 
 
  收起阅读 »

环信荣登易观2015年中国PaaS市场领先者象限

 Analysys易观智库近期发布《2015年中国PaaS领域开发者服务市场实力矩阵专题研究报告》,对2014年至2016年PaaS领域内主要开发者服务厂商在实力矩阵中所处的位置以及执行能力和创新能力的变化情况作如下解读。其中,环信凭借稳健的产品布局优异的产品...
继续阅读 »
 Analysys易观智库近期发布《2015年中国PaaS领域开发者服务市场实力矩阵专题研究报告》,对2014年至2016年PaaS领域内主要开发者服务厂商在实力矩阵中所处的位置以及执行能力和创新能力的变化情况作如下解读。其中,环信凭借稳健的产品布局优异的产品创新能力,以及领军行业的市场表现,荣登易观智库2015年中国PaaS领域开发者服务市场实力矩阵领先者象限。
 



b8975a6df1291806d49553.jpg


 

环信荣登易观智库领先者象限



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

Analysys易观智库分析认为,中国PaaS领域内开发者服务市场格局快速发展,厂商之间全方位竞争。而客户数量、头部合作伙伴、用户规模、产品营收则是评价厂商执行能力的重要指标。中国PaaS领域内开发者服务在快速增长的情况下,企业需注重产品的创新,来保证市场地位并争夺客户。产品功能创新、产品布局、产品研发实力、服务形式创新、用户体验创新和商业模式是评价厂商现有创新能力的重要指标。

领先者象限分析——环信

领先者在商业模式创新或产品/服务创新性上拥有较强的独特性,同时具有很好的系统执行力能够把创新性提供给市场并获取较高的市场认可。

易观点评:环信为开发者提供即时通讯云服务,为APP开发者提供语音、文字等即时通讯功能支持,并且活跃用户较低的应用可以免费使用,稳定的服务及低廉的价格为环信带来较多的用户,2015年环信增长迅速,在即时通讯云服务市场占据50%以上市场份额稳居行业第一,同时环信基于移动即时通讯云技术,积极拓展产品领域,推出环信移动客服,为开发者提供全媒体智能云客服功能。环信在产品创新、产品布局等领域具有明显优势。

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


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

收起阅读 »

环信荣获CSDN 2015年度“最佳品牌影响力”大奖

 2015年中国互联网市场风潮涌动,在大众创业万众创新的国家战略支持下,各种企业级服务犹如雨后春笋一般蓬勃发展,因此,2015年也成为了中国企业级服务元年。近日,由CSDN主办的“2015开发工具及服务年度大奖评选颁奖典礼”在京成功举办。企业级服务明星厂商环信...
继续阅读 »
 2015年中国互联网市场风潮涌动,在大众创业万众创新的国家战略支持下,各种企业级服务犹如雨后春笋一般蓬勃发展,因此,2015年也成为了中国企业级服务元年。近日,由CSDN主办的“2015开发工具及服务年度大奖评选颁奖典礼”在京成功举办。企业级服务明星厂商环信凭借其在即时通讯云和移动客服行业第一的市场占有率以及领军行业的开发者口碑和客户美誉度荣获2015年度“最佳品牌影响力”大奖。
 



16-160122103K4V0.jpg



环信荣获CSDN 2015年度“最佳品牌影响力”大奖



 
近两年开发工具及服务市场火热,从云服务、即时通讯云、安全到统计监测、人工智能、物联网平台等创新产品不断涌现。CSDN通过公开征集,并结合平台内用户数据采集分析,评选出了CSDN 2015开发工具及服务年度大奖。经过了两个月的征集与评选,环信最终在257家互联网企业中脱颖而出摘取了最佳品牌影响力大奖,这与环信在即时通讯云行业的辛勤耕耘密不可分。

环信于2014年6月在国内率先推出了环信即时通讯云,给众多APP打开了一扇社交窗户,同时开启了即时通讯云这一片蓝海,紧接着包括阿里、腾讯、网易等互联网巨头纷纷入场,环信仍然凭借其稳定的产品服务、领军行业的开发者口碑和客户美誉度牢牢占据中国即时通讯云行业第一的宝座。

2015年4月,环信基于业界领先的即时通讯云PaaS平台基础上推出了SaaS产品环信移动客服。环信移动客服是全球首创的全媒体智能云客服平台。支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、移动端客服和呼叫中心等多种渠道。环信移动客服基于环信业界领先的IM长连接技术保证消息必达,并通过强大的智能机器人技术极大降低人工客服工作量。

融资情况:
环信一年时间内完成了4轮融资。天使轮为经纬中国500万人民币、A轮为SIG 500万美元、A+轮为红杉资本300万美元,B轮融资1250万美元,由红杉资本领投,经纬中国和SIG跟投。是即时通讯云和SaaS客服领域融资最快、资金最充裕的平台。
业绩规模:
环信是国内起步最早、规模最大的即时通讯云平台和全媒体智能云客服平台。现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等20大领域的Top10客户,典型用户包括国美在线、58到家、快牙、随手记、猎聘、海尔等。截至2015年底,环信共服务了50833家 App 客户,SDK覆盖手机终端3.19亿,平台日均发送消息2.1亿条。
收起阅读 »

微信回调模式下,测试粉丝发消息客服已经收到,客服回复消息没有收到回调,怎么回事?

这种情况一般是发消息时候没有正确按照官网文档传递数据导致的,特别是from设置。在微信回调模式下,客服回复消息没有回调的情况,先确认发消息给客服的from是否为设置配置时候提供的回调用户id,并确认是否在消息扩展中是否按照格式传递微信 source。
这种情况一般是发消息时候没有正确按照官网文档传递数据导致的,特别是from设置。在微信回调模式下,客服回复消息没有回调的情况,先确认发消息给客服的from是否为设置配置时候提供的回调用户id,并确认是否在消息扩展中是否按照格式传递微信 source。

【当一个技术男干上了市场和运营的工作】环信市场及运营VP 程开源在GrwoingIO数据增长沙龙演讲精选

   在刚刚过去的上周,全国开启了速冻模式,迎来了入冬以来最冷一周,相信各位小伙伴们都感受到了本次寒潮满满的恶意!不知道你是宅在屋里和寒冷的冬季做着顽强的抵抗,还是奔波辗转在各个城市楼宇间为工作而努力着。   环信与你同在,在上周六零下17度的极端天气里,环信...
继续阅读 »
 
 在刚刚过去的上周,全国开启了速冻模式,迎来了入冬以来最冷一周,相信各位小伙伴们都感受到了本次寒潮满满的恶意!不知道你是宅在屋里和寒冷的冬季做着顽强的抵抗,还是奔波辗转在各个城市楼宇间为工作而努力着。
 
环信与你同在,在上周六零下17度的极端天气里,环信市场及运营VP 程开源在GrwoingIO数据增长沙龙
做了《一个SAAS企业的用户增长实践》 的分享,程开源先生以诙谐的演讲方式,丰富强硬的阅历知识给带大家带来了一场别开生面的演讲,现场业内大咖深入交流,气氛十分热烈。
 


现场图片
 


mmexport1453691477886.jpg




mmexport1453691465796.jpg




mmexport1453691458333.jpg



 
现场纪实
主持人:相信大家都听过环信,他们客户群有很多千万级的,都在使用环信的产品,我们今天的问答环节也是由环信提供的奖品,限量版的极客体恤衫,大家在提问或者朋友圈分享,都有机会参与这个活动。环信也是我们的客户,今天非常有幸请到环信市场及运营VP程开源来给大家分享。

程开源:大家好!我叫程开源,做过技术的同学都知道,这是一个技术词汇。我一不小心,我在环信负责市场和运营,一个技术宅,负责市场和运营。我在环信很快找到了自己的定位,找到了在环信的发展路径。今天的内容,如果在座有技术的同事,可以做一些参考,也可以干一点市场运营的事。我做过很多年的技术,同时我也做过四五年的销售,传统企业的销售,是卖软化的。我也做过大概三到四年的创业,我经历比较综合,我在环信的时候,虽然是负责一部分,但是我更愿意把它当成我自己的事业。我看全局,看整个环境,我们在运营过程当中的一些问题,怎么样使得我们的市场、产品、销售、研发还有我们的体系可以全部很好,是不是有一个公式,如果有五个变量的话,最后推导出来一个结果,这五个变量我们是否可以有一个图,有一个实时变化的图把它展示出来。我们通过不同部门的同事,不断去调校各项指标、各个变量,使得产生最好的业务成效。
这是我在环信一直在思考的问题,环信实际上是通过咖啡起家的一家公司,最近环信已经到B轮,从环信一条产品线发展到两条产品线,最初的一条产品线是即时通讯云,在即时通讯功能基础上,我们研发了在线客服云,及时聊天往商业迈进了一步,实现我们商业软件的变现过程。其实环信即时通讯云是个PaaS云,在线客服云是SaaS云。
在座都是一些2C的企业,很多数据分析师,我也认识不少,很多都是2C的公司,2C已经进入深水区了,在2B领域有越来越多的创业公司出现。有多少是做2B公司的同学?有不少,我相信随着越来越多的2B公司的出现,这些公司的特征一定是on line2B,是SaaS,意味着我们用户全生命周期的行为都是在线运行的,意味着用户的行为是可以被记录的,可以度量的,并且可以分析的。通过一定的干预,各个部门共同参与,这些指标是可以直接反馈出来的。于是我就想到,我们找到我们的规律,我们找到了我们的公式,找到一个方法,对于像我这种背景的,有技术背景,一个很重要的特征,我们必须要在公司找到目标感。我现在带市场和运营团队,我发现有些同事整天做,挺忙的,你不能说我什么吧,我也产生了很多工作内容。但是其实他的目标是什么?你做这些事情,目标难道是你很忙吗?我们要的是结果,这个结果我必须要可以度量。度量是什么?就是要用数据说话。如果没有数据,基本是不能存活的,这个公司。我们总想是不是能够把我们公司当中一些规律整理一下,变成程序化的东西。所有的目标是为了我们的增长增长再增长,从我们的市场指标、运营指标、产品指标各个方面。
我初步做了一个分析,我自己创业的时候是做2C的业务,我做销售的时候做的是传统2B的。我现在在环信是on line2B部分,我们在做传统2B,几乎是百万级的,单用户价值是小一万的,数据不精确,只是一个概数。我们更多时候关注用户的群体,比如我们关注女性用户,女性用户喜欢购物的,喜欢买化妆品的,买化妆品的品类当中又喜欢经常买衣服的,我们在做2C的时候,做用户群体分析就够了,这是我们很长时间,用百度的统计,用GA等等可能就够了,做群体分析,做统计分析往往就够了。
我们看传统2B的生意,用户是可以看到的,用户群体是小于一万的,单用户价值是大于十万的,往往公司关注的是单用户行为,我们是销售驱动。我们关注用户领导喜欢什么,几点上班,几点下班,是不是要堵他家门口,跟他搞好关系,他老婆喜欢什么包包,我是不是应该送点东西给他?后来我之所以到环信很重要的原因,我觉得这种事情已经非常不可扩展性,非常依赖销售个体的能力。这也是销售未来的一个出路,我们怎么样去用批量化的销售,销售更多的东西。我们选择on line2B,on line2B的特征,我们有用户群体在一万到一百万之间,单用户的价值是从一万到十万,我们关注和干预单用户行为的LI变得划算,以前2C的时候,关注单用户的行为是不划算的,本来就没赚多少钱,还要再关注和干预单用户行为,要花很多钱,是不划算的。我们on line2B,单用户的价值是一万到十万,是超出原来传统2C的,我们可以在每个用户花更多的成本做用户行为分析。最后我们会同时关注用户群体行为和单用户的行为,于是变成了运营+销售双轮驱动的模式。
我现在在做一些规划,从公司整个来讲,在思考这么几个问题。我们会思考什么样的推广手段最为高效?什么样的网站注册转化率最高?什么样的产品用户留存率最高?哪些用户最容易买单?哪些用户最容易流失?分别反映的就是拉新、转化、留存、变现和一些风险控制。在我们环信内部把用户分为好几类,我的观点和现在很多人不一样,我们多出了几类。第一类是潜在用户,第二类是到访用户,第三类是到访后又流失的用户,第四类是回访,但未注册的用户,第五类注册用户,付费用户。
下面这几排,我用不同的颜色标出来,其实是反映了公司不同的部门,比如绿色的是市场部门干的事,蓝色部分是我们运营部门的事,这个部分是产品的事,这块是销售的事。我们第一个关注的指标,最佳媒体投放的监测,我们要选出最佳的媒体投放。比如我们的手段,我们用各种不同的方式去测试,我们最佳的媒体投放策略是什么?最佳的投入产出比是什么?每个用户的到访成本是多少?非常不一样。我们最近在做我们今年的预算,我们去年做了很好的记录。今年我们市场部投放两千万,我们就有一个依据了,而不是领导拍脑袋,应该投多少,我们有很好的数据来做分析。
第二个就是在环信我们是把官网和产品页分开的。第二个指标我们可以做用户的行为监测,用户在官网的行为监测,用户在注册之前,会做大量的调研,看产品的功能特性,有哪些最佳案例,得过什么荣誉,媒体报道,看看你网站到底怎么样,这家公司怎么样,再来决定。官网本身是一个独立的产品,我们要去监测它的整个行为,落实到我们干预的措施上面,落地页,我下面列的每一项东西都可以展开讲,不讲那么多,只讲讲我们落地页的一些设计,社区建设、内容建设、AB测试,在官网建设当中就有大量的测试产生了。中间这一栏,这里面单独列出来对于到访又流失的用户,环信的数据是每天有几千个UP,几千个用户在环信网站上访问,每天有几百个用户注册,百分之七八十的用户我再也找不到他了,这是一个非常大的资源浪费,好不容易用户来了,结果大部分用户又走了。我们把这块独立做出来,到访后又流失的用户,我们这里做另外一个DSP,我们还有一些召回性的DSP。刚才覃超讲召回方式,通行的召回方式,邮件、通知,但是对于那种没有注册的用户,这两种方式都是不奏效的。我们通过数据的监测,用不同的手段召回来了又走了的用户。虽然用户没有注册,但是用户来了,就能记录下它的QQ号、手机号,涉及到用户隐私,我们会非常慎重。
第三个指标,注册转化率监测还有很多指标,包括产品满意度的监测,到注册用户这一栏,我们有更多的一些指标。在之前对潜在用户、新到访用户,到访后又流失的用户,注册用户,在市场和运营范畴里面,基本上传统的百度、GA差不多也是用的,但是对于单个用户的行为,比如注册用户、付费用户的行为是无法监测的,做起来很麻烦。我们每天把环信的用户ID传过去,做分析,是单用户的分析,每个用户的行为是带着他的ID号的,用户行为最终从哪里来,干了什么,在官网上干了什么,在我们的产品上做了什么,哪天来的,什么时候走的,访问了什么页面,都可以记录下来。到注册用户这个地方已经是带身份的,我们可以看到每个用户的产品使用满意度。通过用户的行为分析,我们可以看到每个用户最佳的销售时机,也就是用户的购买时机,也可以看到最易流失的用户时机,这时候我们需要不同部门的介入了。比如销售是不是要打电话问一下用户,是不是有什么不满意的地方,是因为产品不好呢还是技术支持做的不好还是误会造成的?通过对每个指标的干预,就可以改变这些指标。
对于付费用户来讲,也可以看到哪些用户最容易流失,这个图就像我最开始上来讲的,我们希望找到一种大的map,可以支撑整个运营。我们这个过程也在努力当中,我们发现摸到了一点门道,怎么通过一个大的map,从我们的市场运营、产品、销售到设计到研发,全都串起来,不再是独立的指标体系,是一个活的,随时变化的,通过一定的方式,是可以调整的一个体系。
这是我们用户在线的一个行为监测,以这个为核心串起来我们整个公司的业务。准备的比较仓促,没有更多内容带给大家,后续有机会再来分享一些我们在指标调整过程当中应该用什么样的方式和我们的一些实践是什么,未来有机会再分享给大家。谢谢!

 
 点击下载演讲PPT  ↓
  收起阅读 »

Android使用实时语音功能是报错

EXCEPTION: Thread-77936                                                                                   Process: com.example.lvp...
继续阅读 »
EXCEPTION: Thread-77936
                                                                                  Process: com.example.lvpeng.myapplication, PID: 26653
                                                                                  java.lang.UnsatisfiedLinkError: com.easemob.media.EIce
                                                                                      at com.easemob.chat.EMCallerJingleSession.makeCall(Unknown Source)
                                                                                      at com.easemob.chat.EMVoiceCallManager.syncMakeCall(Unknown Source)
                                                                                      at com.easemob.chat.EMVoiceCallManager.access$6(Unknown Source)
                                                                                      at com.easemob.chat.EMVoiceCallManager$3.run(Unknown Source) 收起阅读 »

环信移动客服网页端源码下载地址失效

https://github.com/easemob/kefu-webim/releases tag:easemob-webim-plugin-open1.0  环信移动客服网页端开发者版集成说明 一.集成方式 1.下载源码:https://github.c...
继续阅读 »
https://github.com/easemob/kefu-webim/releases tag:easemob-webim-plugin-open1.0
 环信移动客服网页端开发者版集成说明
一.集成方式

1.下载源码:https://github.com/easemob/kefu-webim/releases tag:easemob-webim-plugin-open1.0

2.解压源码包,将其放到您的服务器所指向的文件目录

3.将路径static/js/中的easemob.js 引入到</body>前即可完成集成 收起阅读 »

【开源啦】红包功能的实现 (内含源码下载)

    下载APK体验 easeUIcustomer.apk   先上几张APP效果图感受下吧   接下来讲一下详细的实现思路(提供的环信发送红包的和抢红包的流程代码,到了付款和提现那块就是自己选择接入微信付款还是支付宝付款 ) 1...
继续阅读 »
 
 
下载APK体验



 
先上几张APP效果图感受下吧



拼图.png




 
接下来讲一下详细的实现思路(提供的环信发送红包的和抢红包的流程代码,到了付款和提现那块就是自己选择接入微信付款还是支付宝付款


1.继承EaseChatFragment并implement EaseChatFragmentListener

2.在registerExtendMenuItem中增加红包菜单,以及onExtendMenuItemClick中增加红包点击事件

3.sendRedMoney类实现发送红包,需要自己实现支付宝付款接口,在onActivityResult中发送红包的自定义扩展消息,可以以文本消息携带金额和祝福语的扩展,以及支付宝凭证的扩展,然后发送给对方,并向自己服务器发送红包数据(这部分接口由自己服务器提供并实现)

4.实现MyEaseCustomChatRowProvider接口,重点是getCustomChatRow这个方法实现红包自定义 消息对象的创建ChatRowRedMoney

5.关于红包消息界面的布局就看一下ChatRowRedMoney这个类

6.点击红包事件的实现第一种:onMessageBubbleClick这个方法中通过判断是红包消息启动领取红包的activity,同时return true;第二种:ChatRowRedMoney 中的onBubbleClick中实现红包点击处理,并去自己服务器请求对应的红包数据(这个接口由自己服务器提供并实现)
群组内抢红包的分配实现,可以通过客户端发送抢红包请求后,通过您的服务器来处理分配金额,通过回调发送到您的手机上展示您抢到的金额


  
 
点击下载源码: https://github.com/shiyiling/ShiEaseUICustomer
  收起阅读 »

关于使用环信最新sdk集成小米推送的记录

环信已经发布最新的sdk到2.2.5,最新版更新历史中添加了一项“ 在小米手机上,im离线时支持使用小米推送进行消息的推送” 这一项能够让继承了环信sdk的app在小米手机上即使离线也可以收到推送消息,这一功能大大增加了app用户的黏性,不过在集成中有很多用户...
继续阅读 »
环信已经发布最新的sdk到2.2.5,最新版更新历史中添加了一项“ 在小米手机上,im离线时支持使用小米推送进行消息的推送”
这一项能够让继承了环信sdk的app在小米手机上即使离线也可以收到推送消息,这一功能大大增加了app用户的黏性,不过在集成中有很多用户会遇到一些问题,这里就把配置正确的方法贴出来,供大家参考一下
首先你要有小米的开发者账户,然后能够创建应用(开发者账户这一步自己解决)
环信官方配置推送文档地址:环信官方设置小米推送文档
小米推送服务地址:小米推送服务地址


首先声明一下:环信最新版SDK集成小米推送主要是针对小米设备,在有些小米设备上,这个推送的长连接服务是系统级别的服务,此时SDK就会启动小米的推送,当其他设备上这个长连接服务不是系统级别的,还是可以被杀死,所以和使用环信自己的长连接一样的效果,就不会启动小米推送,使用环信自身的长连接服务去接收消息,因此就算你在其他设备上配置了小米推送,一样不可用​



这里创建了一个现在在写的demo,创建成功后就可以看到应用的信息,我们需要用到AppID、AppKey、AppSecret(这一点在环信文档也有说明)

Image.png



得到这些后去下载小米推送的sdk,加入到自己的项目中,因为下边的配置需要小米推送的jar包
这些都得到了,然后就是要去环信的开发者后台上传证书了,这个有文档说明

Image2.png



接下来就是要配置app端
首先需要在自己的项目配置文件AndroidManifest.xml中添加小米推送的一些 Service 和 Receive
首先是在mainFest标签中加入权限,


(权限这里的包名一定要改成自己的、改成自己的、改成自己的)


<!--小米推送的权限-->
<permission
android:name="net.melove.demo.chat.permission.MIPUSH_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="net.melove.demo.chat.permission.MIPUSH_RECEIVE" />

然后再Application标签中加入Service 和Receive
<!--配置小米推送服务-->
<service
android:name="com.xiaomi.push.service.XMPushService"
android:enabled="true"
android:process=":pushservice" />
<service
android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
android:enabled="true"
android:exported="true" />
<service
android:name="com.xiaomi.mipush.sdk.MessageHandleService"
android:enabled="true" />

<receiver
android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver
android:name="com.xiaomi.push.service.receivers.PingReceiver"
android:exported="false"
android:process=":pushservice">
<intent-filter>
<action android:name="com.xiaomi.push.PING_TIMER" />
</intent-filter>
</receiver>
<receiver
android:name="com.easemob.chat.EMMipushReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
</intent-filter>
<intent-filter>
<action android:name="ccom.xiaomi.mipush.MESSAGE_ARRIVED" />
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.ERROR" />
</intent-filter>
</receiver>

最后就是官方文档说的,在初始化sdk的时候加上小米推送的AppID以及AppKey的配置
String APP_ID = "小米 appid";
String APP_KEY = "小米 appkey";
EMChatManager.getInstance().setMipushConfig(APP_ID, APP_KEY);

配置玩了之后可以先用小米官方的推送工具测试下app是否能正常收到推送,测试通过开始测试接收环信的离线消息推送;

这个配置还是比较简单的,只要细心,能理解就一般不会出现问题,
有什么问题可以在环信的社区提问Imgeek社区
  收起阅读 »

J9,IBM产品的坑

一样的java代码换了地方就不能跑了,也就只有我能找到答案。 java有四个jvm实现,一个是sun的hotspot,也是每个人机子上普遍装的,现在收归oracle所有了。当然oracle以前还收购了bea的JRocket jvm,一般oracle的webl...
继续阅读 »
一样的java代码换了地方就不能跑了,也就只有我能找到答案。
java有四个jvm实现,一个是sun的hotspot,也是每个人机子上普遍装的,现在收归oracle所有了。当然oracle以前还收购了bea的JRocket jvm,一般oracle的weblogic服务器都是用这个。而在ibm就存在传说中的J9实现,所有的IBM产品都是J9系的,但是所有的IBM产品都是自带JRE。我想我这辈子就只会遇到一次J9的坑了。 收起阅读 »

关注IT人的个人成长分享笔记

每个年初,每个人的手上都会有一张计划单,有关目标,有关梦想,有关爱好,这次的分享,摘客为大家带来的就是三张来自摘客的清单。 List1 人物:武学贤 身份:网络爬虫开发工程师,负责摘客的爬虫 属性:执着技术,低调腼腆,从...
继续阅读 »

每个年初,每个人的手上都会有一张计划单,有关目标,有关梦想,有关爱好,这次的分享,摘客为大家带来的就是三张来自摘客的清单。


0.gif



List1

人物:武学贤

身份:网络爬虫开发工程师,负责摘客的爬虫

属性:执着技术,低调腼腆,从容淡定

台词:不断保持学习的动力

计划清单:

1.掌握python

2.jvm调优

3.学习分布式负载均衡


城狮们的修炼之路

1.想清楚自己的发展方向,职业规划

从java 1995年推出,it 行业经过20年的翻天覆地的发展,已经出线,很多细分的岗位,各种技术也越来越深入,人的精力往往有限,结合自己的兴趣和知识结构,选择一个合适的发展发展方向很重要。

2.课程设计和工业化代码

计算机专业的学生,大学里都做过课程设计,基本为直接写代码,在自己的机器上跑起来就好了。很少有版本管理、设计文档、单元测试、代码样式,项目发布、持续集成,但这些内容是需要初级程序员逐步掌握的,例如maven、jenkins,都是企业级开发中需要用到的技术。

3.关注开源社区

关注自己领域优秀的开源项目,研读项目源码,开源社区的代码是经过程序员不断review的,有助于快速提高自己的代码水平。

4.学好英语

英语是程序员的母语,排名前20的开发语言都是用英语,越是越新的技术,文档资料几乎都是英语,学好英语更有利于学习一些国外的优秀资料。

5.解决问题

不要过于依赖前辈,要学会设置断点,调适自己的程序bug,通过调适发现问题,学会求助社区。

6.写技术博客

据统计有技术博客的程序员比不写技术博客的程序员薪资高10%。



List2

人物:刘培

身份:迅速成长的需求分析师和运营

属性:在运营方面独具慧眼,90后,新晋IT人

台词:不管做什么事情,拥有一个好的心态很重要

计划列表:

1.研究100个不同类型的app

2.用axure画出多交互页面

3.有自己的资料整理库

4.能更融洽的交流


需求与运营的相生相克

首先说说运营的意义:

需求的好坏决定一个产品的好坏,产品的好坏又直接决定了运营的好坏。简单的例子就是如果运营在推一个自己完全不喜欢的产品,那么负能量会不停积累,直至最后运营满腹怨气,产品不得不停止。所以如果运营在最开始就加入产品开发工作中,和需求分析师共同做好分工和调研,就是最好的状态。

一个项目的开始,运营从立项就加入。负责市场调研、用户调研、合作方联系,运营内容准备。只有这样,运营才能真实感觉到这是自己的产品,自己才是亲妈,才能在做的过程中不断的去修正产品的失误,不断的充满能量的完成这件事情。要不然,最后产品做完,木已成舟,运营要去运营并维护一个自己并不喜欢且并没有实际参与过的东西,产品发现你运营他的东西,你一点都不高兴。大家都在负能量。无非就是后妈的角色,没有人会喜欢。

接下来我们单说需求搜集及实现的全过程:

用户是需求之源,首先必须要有接地气且符合用户使用习惯的需求,才能做好一款产品。

在产品开发的前期,需要进行用户访谈来搜集需求。用户对产品提出一系列需求。需求分析师必须要将搜集来的需求整理分类删减评估,划分需求优先级并做成表格,以方便后期研讨及开发。

在产品开发过程中需求分析师主要完成与程序员沟通的工作,在这个过程中程序员按照需求来设置程序,若有沟通不畅,必定会增加开发成本。

其中若有需求更改,也必须要需求分析师把控。需求分析要做的偶事情不仅是搜集整理,还需要做用户访谈,深刻理解用户是需求之源。

一年说长不长,说短不短,想学的东西能学到,想参与的项目能参与就够了。我自己的座右铭就是:吃亏是福,牢记在心。



List3

人物:黄磊

身份:参与摘客推荐算法

属性:工作尽显风骚,生活尽显逗比

台词:早起的鸟儿有虫吃

计划清单:

1.能在JAVA上加深自己的功力

设计模式:http://www.cnblogs.com/java-my-life/

《深入理解Java虚拟机:JVM高级特性与最佳实践》

《HotSpot实战》

《Java并发编程实战》

《Java多线程编程核心技术》

《Effective Java中文版》

《深入分析Java Web技术内幕》

《大型网站技术架构核心原理与案例分析》

《大型网站系统与Java中间件实践》

《从Paxos到ZooKeeper 分布式一致性原理与实践》

《MySQL5.6从零开始学》

《Spring源码深度解析》

重点参考:http://www.cnblogs.com/xrq730/p/4994545.html?utm_source=tuicool&utm_medium=referral

2.勤锻炼,坚持每周一次的10km跑步

3.多花时间陪陪女朋友和家人,学习一些小的生活技能,提升生活品质


实习工作路上的打怪技能


1.尽早开始准备好简历

一份简历是对自己大学时代的一个交代和学习成果的总结,所以,一方面,可以思考自己想要一个什么样的简历?里面的内容是什么?未来自己想要做一份什么样的工作。另一方面,简历并不是一次写好就可以了。如何把所有的内容写在一张纸上?如何突出自己的优势?如何围绕目标岗位展现自己的核心竞争力?都是值得思考和一次次修改的内容。

2.关于如何写好一份简历

在知乎、豆瓣以及学长学姐的实际经验中可以得到各种非常好的简历。

3.尽早开始实习,特别是可以全职的实习

第一,找实习的过程中会一次一次的碰壁。可以思考为什么会不行?是简历上没有突出自己的优势?还是本身能力上还有不足,那如何加强?这一切都是为了在毕业季有好的工作机会时一把抓住。

第二,在公司做一个项目和在学校做一个项目的差异,会让自己思考这样的一份工作是不是自己真的喜欢的?是不是愿意每天花8小时在这上面。更本质的问题是,从实习经历中试错的低成本可以问自己是否真的喜欢这样的工作。

第三,相关实习经验的积累,一方面可以看到自己在这个岗位上深耕的不足,另一方面累积起来的实习经验和在公司的项目经验是未来求职时的巨大优势,特别是大公司和实际上线项目的实习。

4.如何找到一份好的实习

一份实习,是需要投入很多时间和精力的。如果没能从中得到预期想要的成长,那就很浪费了。所以,如何找到一份好的实习?一看公司大小和背景,二看在该岗位实习的成长度。

一,利用好校友资源和校内的bbs,特别是知名大公司的校友资源。

二,遗留在各大网络上的招聘信息,如新浪微博的博主,知乎,V2EX

三,各个垂直招聘平台,如拉勾网。

5.找准自己的着力点,构建自己的技能树

在实习和专业学习中会逐渐发现自己的优势,围绕自己的优势,如JAVA,做深,加强内功的修炼。而使之能逐渐快速掌握其他所需的各类附属技能。这点也是短期和长期目标的结合。




IMG_19012016_163350.png




好啦,看完摘客的三张清单,是不是也想为自己定下一个新年计划了呢。

其实好多时候看着新年的计划单,又多又难,真的害怕任务完不成,也真的害怕过程艰辛。但毕竟我们想要的并不只是一个结果,更好的东西,是过程中我们对这个世界全新的认识,对我们自己更深的认识,而且谁说不会有意想不到的彩蛋呢~



0_(1).gif




摘客

随心阅读,极致体验

优质互联网好文个性推荐阅读平台:http://zkread.com



  收起阅读 »

推荐几款实用的Android Studio 插件

1、android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化, 注意:需要先导入butterknife包才能使用 2、Gson...
继续阅读 »
1、android-butterknife-zelezny

android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,
注意:需要先导入butterknife包才能使用


1.gif



2、Gsonformat

可根据json数据快速生成java实体类


2.gif




3.gif



3、Android Postfix Completion
 

4.gif



4、AndroidAccessors


5.gif



5、Lifecycle Sorter

可以根据Activity或者fragment的生命周期对其生命周期方法位置进行先后排序,快捷键Ctrl + alt + K


6.gif



6、JsonOnlineViewer


7.gif



7、CodeGlance


8.gif



8、findBugs-IDEA

顾名思义,就是帮你一起找bug的,当然Android Studio也提供了代码审查的功能(Analyze-Inspect Code...)


9.png



以上所有插件都可在android Studio plugin 仓库中找到 收起阅读 »