IOS之环信集成和头像昵称的存储

目录

1、集成
2、EaseUI中类的使用
3、对于头像昵称等信息的获取(群&个人)
4、app在后台运行时(没有杀死)接收好友发来的消息

集成

关于集成和appKey的获取这些东西,我相信我写的再清楚都不如官方文档了,所以下放给出链接,请直接去官网看文档,再详细不过了。
IOS环信官网文档
IOS环信视频集成demo
IOS环信项目源码demo

EaseUI的使用

1、首先你必须知道EaseUI当中所存在的ViewController、View、Model都作用于什么页面,只有这样你才能准确知道你想要哪个页面,或者按照自己项目需求更改哪些页面,因为毕竟demo中所存在的还是有很多是项目中不需要的功能,下面呢。我就按照问题配图的方式指出页面对应的类~

EaseConversationListViewController

EaseMessageViewController
EaseConversationModel赋值
EaseMessageModel赋值
EaseBaseMessageCell
对于头像昵称等信息的获取(群&个人)

思考?首先环信demo中是不会存储头像(人&群聊),当然也不会存储昵称(人&群聊),demo当中只会展示环信ID(eg:19001)和环信默认的头像(单聊---->EaseUIResource.bundle/user 群聊----->EaseUIResource.bundle/group)那我们总不能展示环信ID和默认头像吧。所以我们必须依靠后台和自己本地存储来实现头像和昵称的展示。
解决方式如下~

解决方式1:我们本地一定会有类似于我的好友这样的页面。如果没有后台也能帮我们查得到,那么我们可以把这些list存储在本地,在聊天的时候对本地的数据进行遍历便利之后我们就可以获取到想要的头像和昵称了。

我的同事页面

备注:这种解决方式是有弊端的,因为你是无法保证你好友数据是实时刷新的也就是我举个例子(A+B为好友 B在A同意添加好友之后 B还没有走我的好友的接口,A就和B说了话,那么这个时候 B会话列表的展示一定是没有A的昵称和头像的!)

所以为了解决上面这个问题,我们采用以下方案来实现实时获取数据。

方案如下、利用归档存储的方案,在本地存储我的好友数据,那么我们需要在什么情况下获取到对方好友的信息呢?
第一个地方~ 场景:A+B为好友 B在同意的时候 把A的信息存起来(包括头像和昵称)有的人会问了他的头像和昵称你是怎么查到的。那肯定是后台帮你查的啊。通过环信的ID后台帮你查到这个人的头像和昵称,然后返回给你,你存储在本地即可。
第二个地方~扩展消息当中在环信demo中又一个实例方法

- (void)messagesDidReceive:(NSArray *)aMessages{
            [self playNewMessageSound];/*声音开启*/
for (EMMessage *message in aMessages) {
        // 消息中的扩展属性
        self.extDic = [[NSMutableDictionary alloc] initWithDictionary:message.ext];
        NSLog(@"消息中的扩展属性是 -- %@",self.extDic);
  }
}

扩展消息当中所返回的message.ext就是当A和B说话的时候,B收到的回调内容。而message.ext恰恰就是A的信息(包括他自己的头像和昵称等信息)那么这个时候一定会有人问A这个消息是什么时候发的呢。请看下面~
在EaseMessageViewController.m文件中,有一个实例方法是

- (void)sendTextMessage:(NSString *)text withExt:(NSDictionary*)ext
{
    NSLog(@"%@",ext);
    //    /*取出环信登录账号 和姓名 还有头像*/
    NSString *hyName = [kUserDefaults objectForKey:SAVE_HyphName];
    NSString *myName = [kUserDefaults objectForKey:SAVE_Name];
    NSString *myPicture = [kUserDefaults objectForKey:SAVE_Picture];
    NSDictionary *parma = @{
                            @"hxid":hyName,
                                @"pic":myPicture,
                                @"name":myName,
                            };
    NSLog(@"%@",parma);

    
    EMMessage *message = [EaseSDKHelper sendTextMessage:text
                                                     to:self.conversation.conversationId
                                            messageType:[self _messageTypeFromConversationType]
                                             messageExt:parma];
    NSLog(@"%@",ext);
    [self _sendMessage:message];
}

在sendTextMessage这个方法中text参数就是A和B说话A说话的内容,而ext就是扩展消息的内容,也就是上面messagesDidReceive方法中B接到回调里面包含A信息的参数message.ext,所以现在发和接受都找到了。

备注:以上的方法中,第一种并不能保证实时刷新数据,有可能产生的问题就是在A+B为好友的时候,B同意之后并不能立马知道好友数据,从而使聊天出现头像不争取,昵称不正确的现象。那么第二种的优势,就在于我们可以实时知道对方的头像,昵称等信息(但是千万别忘了查重处理,同样的数据不要存了,以免本地很卡)

解决完个人聊天的头像和昵称之后,我们来思考下,群内人员头像和昵称的操作

eg:A+B创建了一个群。然后A作为群主又向群里拉人(拉了一个C),这个时候问题就出现了。当C说话的时候,A电话里面是不存在C的信息的。那么也会出现头像和昵称不对应的状态。那么这个问题怎么处理呢。方案如下~

其实上面写的扩展消息的回调方法无论是群还是个人还是聊天室。都是会走的。那么我们可以采用和上面个人头像昵称一样的方式,创建本地的数据库,来存储群聊天中出现的陌生人的数据。也就是代码如下~

- (void)messagesDidReceive:(NSArray *)aMessages{
            [self playNewMessageSound];/*声音开启*/
for (EMMessage *message in aMessages) {
        // 消息中的扩展属性
        self.extDic = [[NSMutableDictionary alloc] initWithDictionary:message.ext];
     /*判断是不是群聊的消息*/
         NSLog(@"%d",message.chatType);
       /*1为群聊 0 为单聊*/
      if (message.chatType == 1) {
            /*如果是群聊就把self.dic存起来 当然这里还是需要做查重处理的,如果有了就别加了。容易卡*/
        }
        NSLog(@"消息中的扩展属性是 -- %@",self.extDic);
  }
}

按照上面的解决方式,我们还是可以获取到群里不是本人好友的数据,这样群中头像和昵称的问题也解决了。

app在后台运行时(没有杀死)接收好友发来的消息

代码的话这边就不复制了,直接上demo~

iOS-10-本地推送通知Demo

代码当中唯一需要更改的就是


将Hello换成给你发送信息人的名字即可

希望本文能帮助到你,我是辛小二 喜欢的话记得点赞哦😘

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

推荐阅读更多精彩内容