对接环信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

浙公网安备 33010602011771号