iOS 环信集成通过服务器实现头像和昵称的显示

最近项目结束了很无聊,想起一直看别人的技术贴自己还不曾写过什么东西,就打算写篇文章。思前想后觉得本人没啥技术(诶、、、这才是真正的码农Y(^_^)Y)但是又想写点什么。所以就把集成环信遇到的一些问题写出来和大家分享。

下面开始  思路有点混乱(毕竟是菜鸡、、、)大家见谅


1.聊天界面中不想要红包、分享位置、视频等功能怎办?

在EaseChatBarMoreView.m中你就可以看到相关的代码(命名很直白相信小伙伴们都能看的明白)

2.监听好友申请

EMContactManagerDelegate这个代理方法中有各种监听的方法即看即用(别忘了遵守协议0哦)。最好的跟控制器写。

在获取当前有几个好友请求通知的时候可能或出现问题如下方法即可()

- (void)didReceiveFriendInvitationFromUsername:(NSString *)aUsername

message:(NSString *)aMessage{

NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:@{@"title":aUsername, @"username":aUsername, @"applyMessage":aMessage, @"applyStyle":[NSNumber numberWithInteger:ApplyStyleFriend]}];

[[ApplyViewController shareController] addNewApply:dic];

[self reloadApplyView];

}

3、软件集成环信之后退到后台三分钟左右被杀死

解决很简单就是在软件进入后台、进入前台中不要操作环信的方法。目前我去掉没什么影响

[[EMClient sharedClient] applicationDidEnterBackground:application];

当时我就是按照环信文档写的,这个比较坑。

4、统计消息未读数

统计消息未读数

for (EMConversation *conversation in conversations) {

unreadCount += conversation.unreadMessagesCount;

}

这个要和实时监听收到消息的监听方法一起用 是在EMChatManagerDelegate代理方法中

- (void)didReceiveMessages:(NSArray *)aMessages

{}

5、环信的推送

环信的推送分为俩种,本地推送、离线推送。集成环信后,当app推到后台没被杀死的时候,接收消息会走本地推送,很多开发者误以为这时候走APNs,其实这时候app长连接未断开,调用苹果的本地通知即可。

本地推送方法传送门

环信接收消息本地推送的实现 - EaseMob.沈冲 - 博客频道 - CSDN.NET

APNs参考开发文档即可,

做好推送了你会发现收到的推送消息是”您有一条新消息“而不是我们想要显示的消息内容,设置如下即可

EMPushOptions *pushOptions = [[EMClient sharedClient] pushOptions];

pushOptions.displayStyle = EMPushDisplayStyleMessageSummary;

[[EMClient sharedClient] updatePushOptionsToServer];

[[EMClient sharedClient] initializeSDKWithOptions:options];

6、利用环信做单点登录

调用如下方法即可

/*!

*  \~chinese

*  当前登录账号在其它设备登录时会接收到该回调

*

*  \~english

*  Current login account to log in on other devices will receive the callback

*/

- (void)didLoginFromOtherDevice;

7、设置群组会话名称

在创建群组后再会话列表看到的可能是此群组的ID并不是群组的名称。

解决办法是在EaseConversationListViewController.m文件中的tableViewDidTriggerHeaderRefresh方法中对model进行判断赋值代码如下

//设置群组的会话名称

if (model.conversation.type == EMConversationTypeGroupChat) {

NSArray *groupArray = [[EMClient sharedClient].groupManager getAllGroups];

for (EMGroup *group in groupArray) {

if ([group.groupId isEqualToString:converstion.conversationId]) {

model.title = group.subject;

}

}

}

8、设置用户的头像、昵称

环信并未保存用户的头像、昵称所以这里要我们自己处理,相信支持各位看官看下来的动力(了解如何设置用户头像、昵称)就是这个吧。

环信为我们提供了俩种解决方案并详细的说明了各自的优缺点。这里我使用的是方法一:从APP服务器获取昵称和头像

昵称和头像的显示与更新 [环信开发文档]

使用这种办法的必要条件是自己用户体系的某个字段(可以标识用户的唯一性)必须与环信的用户id保持一致。这样我们才能拿到该用户存在在我们服务器上的昵称、头像及各种信息。

为了节省用户的流量我们应该做一个本地数据库,获取环信用户id现在本地数据库查询,有即使用、无即下载保存本地数据库在使用。


说了辣么多废话,下面我们来点实际的

a、设置会话列表单聊的头像、名称

与设置群组聊天的会话名称一样在EaseConversationListViewController.m文件中的tableViewDidTriggerHeaderRefresh方法中对model进行判断赋值代码如下

if (model.conversation.type == EMConversationTypeChat) {

//数据库查询数据赋值

[[BGFMDB intance]queryWithTableName:TableName keys:nil where:@[@"loginName",@"=",String(converstion.conversationId)] complete:^(NSArray *array) {

model.title = array[0][@"nickName"];

model.avatarURLPath =[NSString stringWithFormat:@"%@%@",PhotoUrl,array[0][@"iconUrl"]];

}];

}

b、设置聊天界面(单聊、群聊)的头像、昵称

在EaseBaseMessageCell.m文件中的- (void)setModel:(id)model方法中对model进行判断赋值代码如下

[super setModel:model];

//消息来自哪个人 用这个id查询数据困

NSLog(@"%@",model.message.from);

[[BGFMDB intance] queryWithTableName:TableName keys:nil where:@[@"loginName",@"=",String(model.message.from)] complete:^(NSArray *array) {

if (array[0][@"iconUrl"]) {

[self.avatarView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",PhotoUrl,array[0][@"iconUrl"]]] placeholderImage:model.avatarImage];

} else {

self.avatarView.image = model.avatarImage;

}

_nameLabel.text = array[0][@"nickName"];

if (self.model.isSender) {

注:如果完成后如果出现用A号跟B号聊天  什么都正常,但是换C号,D号跟B号聊天显示的都是A号的名、聊天记录都是A,B的话。极有可能就是用户退出的时候在环信的服务上没有正常的退出,在用户退出的时候点用环信的退出即可

本人菜鸡一个写下这个:一是为了帮助像我这样的小白。二是好记性不如烂笔头(烂笔头都买不起)就写在这里。有什么不对的请指教!勿喷!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容