環(huán)信3.0簡單集成及昵稱與頭像的顯示

環(huán)信簡單集成,這是官方文檔,按照這個分分鐘搞定,但是我遇到的是UI頭像和昵稱不顯示的問題,分享下我的解決方法。
快速集成鏈接:http://git.oschina.net/markies/HxChatDemo

關于頭像和昵稱的問題,需要向自己的后臺服務器請求。
我是在會話列表頁請求數(shù)據(jù)并緩存到數(shù)據(jù)庫。
1.請求頭像


#pragma mark - EaseConversationListViewControllerDelegate
 - (void)postUserInfoWithChatter:(NSString *)chattar model:(EaseConversationModel *)model{
             
             NSDictionary *pamaa = @{
                                     @"phones":chattar
                                     };
             
             [until AFNetworkPOSTurl:@"http://demo.bianguo.com.cn/ccjtest/lvtt/api/home/index/get_userinfos" paraments:pamaa complete:^(id json, NSError *error) {
                 
                 NSLog(@"環(huán)信數(shù)組-%@",json);
                 model.title = json[@"data"][0][@"nickname"];
                 model.avatarURLPath = json[@"data"][0][@"headimg"];
                 
                 
                 NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
                 
                 NSMutableDictionary *dic = [NSMutableDictionary dictionary];
                 
                 dic[@"name"]  = model.title;
                 dic[@"avatarURLPath"] = model.avatarURLPath;
                 [defults setObject:dic forKey:chattar];
                 
                 //緩存用戶頭像
                 [UserCacheManager saveInfo:chattar imgUrl:model.avatarURLPath nickName:model.title];
                 
             }];
             
         }

在下面這個方法中顯示會話列表的頭像和昵稱,并緩存到UserCacheManager這個類中


- (id<IConversationModel>)conversationListViewController:(EaseConversationListViewController *)conversationListViewController modelForConversation:(EMConversation *)conversation{
    self.chatter = conversation.conversationId;

    EaseConversationModel *model = [[EaseConversationModel alloc] initWithConversation:conversation];
                            if (model.conversation.type == EMConversationTypeChat) {
                                NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
                                NSString *chatterBig = [conversation.conversationId  uppercaseString];
                                NSMutableDictionary *sqDic = [defults objectForKey:chatterBig];
                 //在這里顯示會話列表的頭像和昵稱
                  if (sqDic) {
                                    model.title = sqDic[@"name"];
                                    model.avatarURLPath = sqDic[@"avatarURLPath"];
                                    [UserCacheManager saveInfo:conversation.conversationId imgUrl:model.avatarURLPath nickName:model.title];
                                }else{
                                    [self postUserInfoWithChatter:chatterBig model:model];//請求數(shù)據(jù)
                                }

                            } else if (model.conversation.type == EMConversationTypeGroupChat) {
                                NSString *imageName = @"groupPublicHeader";
                                if (![conversation.ext objectForKey:@"subject"])
                                {
                                    NSArray *groupArray = [[EMClient sharedClient].groupManager getAllGroups];
                                    for (EMGroup *group in groupArray) {
                                        if ([group.groupId isEqualToString:conversation.conversationId]) {
                                            NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithDictionary:conversation.ext];
                                            [ext setObject:group.subject forKey:@"subject"];
                                            [ext setObject:[NSNumber numberWithBool:group.isPublic] forKey:@"isPublic"];
                                            conversation.ext = ext;
                                            break;
                                        }
                                    }
                                }
                                model.title = [conversation.ext objectForKey:@"subject"];
                                imageName = [[conversation.ext objectForKey:@"isPublic"] boolValue] ? @"groupPublicHeader" : @"groupPrivateHeader";
                                model.avatarImage = [UIImage imageNamed:imageName];
                            }
                            return model;
                        }

接下來顯示聊天會話中自己的頭像和對方的頭像

在EaseBaseMessageCell中,

- (void)setModel:(id<IMessageModel>)model
這個方法中進行賦值。

if (self.model.isSender) {//這是自己的頭像
        _nameLabel.text = [ZYTokenManager usernickname];
        [self.avatarView sd_setImageWithURL:[NSURL URLWithString:[ZYTokenManager userheadimg]] placeholderImage:model.avatarImage];
else{//這里是對方頭像,從緩存的UserCacheManager這個類中取出來
        UserCacheInfo * userInfo = [UserCacheManager getById:model.nickname];
        if (userInfo!=nil) {
            _nameLabel.text = userInfo.NickName;
            [self.avatarView sd_setImageWithURL:[NSURL URLWithString:userInfo.AvatarUrl] placeholderImage:model.avatarImage];
        }else{
            _nameLabel.text = @"nil";
        }
        
    }

這樣基本上就沒有問題了。

2.最近做環(huán)信推送遇到點問題。本地推送沒有聲音,后來參考demo,解決方法如下。
2.1 本地通知。在進入后臺3分鐘之內(nèi),由于長連接沒有關系,發(fā)送的通知是本地通知,之后發(fā)送的消息通知是APNS。

在
ChatUIHelper.m文件中找到這個方法

- (void)didReceiveMessages:(NSArray *)aMessages
本地推送消息聲音代碼圖1

如果這樣推送還沒有聲音的話,還是在這個.m文件的最后,再加一句

本地推送消息聲音代碼圖2

2.2 離線推送。離線推送集成看官方demo,這邊說一下證書的配置。
如果只是連接到Xcode真機測試,選擇開發(fā)環(huán)境下的證書測試。
如果上傳到蒲公英之類的掃碼測試,就需要生成環(huán)境下的證書測試,也就是和上線之后的證書是一致的。

開發(fā)上線的推送證書配置
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容