对接环信im

环信SDK,现在bug不断,不建议大家试用。2025年的环信,感觉不如2014年的环信稳定。

pod 'EaseChatUIKit', '4.13.1' 稍微稳定一些,会话列表最后一条不显示头像和昵称,(线上能收到推送,测试环境也能收到推送。自定义cell也不会上漂。)

pod 'EaseChatUIKit', '4.15.0' 会话列表最后一条不显示头像和昵称 ,线上收不到推送通知,测试环境能收到推送

pod 'EaseChatUIKit', '4.16.0' 聊天页面,自定义cell上飘,界面显示错乱,线上收不到推送通知,测试环境能收到推送(解决了  会话列表最后一条不显示头像和昵称)

pod 'EaseChatUIKit', '4.16.1' (解决了 聊天页面,自定义cell上飘,界面显示错乱)还是线上收不到推送通知(他们把测试代码传到了线上,导致正式环境咱们绑定deviceToken无效,环信后台给返回的总是a8937417bcda382f95c3dd91f33dba52cfaf488fe2908954b9ef4f8e6f97a3de       EMClient.shared().bindDeviceToken(deviceToken)  不管用。)

 

1.移动端用的环信的会话列表和聊天页面UI样式   pod 'EaseChatUIKit'

https://doc.easemob.com/uikit/chatuikit/ios/chatuikit_overview.html

初始化SDK,环信id和密码登录(需要我们后台将所有用户去环信注册一遍,然后登录接口里把某人的环信id和环信密码返回给移动端)

发消息的地方,需要我们后台返回,对方的头像、昵称、环信id。最好也返回,当前人的头像、昵称、环信id。

如果,老版本,已经登录app的老用户,没有环信im功能,新版本,对接环信im,发起消息的地方,需要判断 

isLoggedInBefore 查询是否登录过。 如果登录成功后未调用 `logout` 方法,这个方法的返回值一直是 `true`
isConnected 检查 SDK 是否连接到 Chat 服务器

自定义消息卡片

    // 构建信息卡片数据 ext里传json数据
    NSMutableDictionary *cardData = [NSMutableDictionary dictionary];
    //可以设置默认的头像URL
    // 创建自定义消息体 event 是自定义消息类型。聊天页面每种UI样式可以定义一种event 然后自定义cell 前后端发消息都是通过event决定消息UI类型
    EMCustomMessageBody *customBody = [[EMCustomMessageBody alloc] initWithEvent:@"cardType" customExt:cardData];
    
    // 创建消息
    EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:conversationId
                                                               from:EMClient.sharedClient.currentUsername
                                                                 to:conversationId
                                                               body:customBody
                                                              ext:@{}];
    
    // 发送消息
    [[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:^(EMChatMessage *message, EMError *error) {

        if (error) {
            NSLog(@"发送信息卡片失败: %@", error.errorDescription);
        } else {
            NSLog(@"发送信息卡片成功");
        }
    }];

 

 环信推送 环信管理后台需要传推送证书,代码中初始化sdk的地方,需要将推送证书的名称传过去,不然收不到推送

 

2.我们后台

将所有用户去环信注册一遍,然后登录接口里把某人的环信id和环信密码返回给移动端

将头像和昵称也去环信注册一遍,跑一遍脚本。

用户修改了头像、昵称后,我们后台去环信更新一下某人的头像、昵称。

环信注册免费版最多注册100个环信id,清了这100个,还可以注册100个。不是一年之内,含注册历史100。

3.系统消息或者客服

我们后台去环信注册一个特定用户,来给所有人发消息用。

 

4.我们业务是B端app管家用,C端app租客用。需求是两个app,可以通信。租客跟管家聊天。

在环信后台建一个应用线上用,俩app(B端C端)共用一个环信appkey。初始化环信sdk用同一个appkey。

在环信后台建一个应用demo测试环境用,俩app(B端C端)共用一个环信appkey。初始化环信sdk用同一个appkey。

 

appkey

根据我们公司域名,正式环境用正式环境的appkey,其他环境用测试环境的appkey

 

推送证书配置 名字需要与环信后台设置的一致

      #if DEBUG
            // 开发环境
            option.apnsCertName = "C_dev" // 推送证书名称
        #else
            // 生产环境
            option.apnsCertName = "C_release" // 推送证书名称
        #endif

 

5.俩app,有不同的包名,都要收到推送,分别去苹果开发者账号,去生成推送证书。

B_dev

B_release

C_dev

C_release

 

posted @ 2025-08-14 11:17  黄增松  阅读(10)  评论(0)    收藏  举报