上云无忧 > 文档中心 > 环信IM即时通讯使用教程(iOS) - SDK 集成概述
IM即时通讯
环信IM即时通讯使用教程(iOS) - SDK 集成概述

文档简介:
介绍 iOS 集成相关内容。 前提条件: 开始前,请注册有效的环信即时通讯 IM 开发者账号并获得 App key,详见 环信即时通讯云管理后台 (opens new window)。 集成环境: 详见 开发环境要求。 SDK 初始化: 初始化是使用 SDK 的必要步骤,需在执行所有接口方法调用前完成。
*此产品及展示信息均由环信官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

介绍 iOS 集成相关内容。

前提条件

开始前,请注册有效的环信即时通讯 IM 开发者账号并获得 App key,详见 环信即时通讯云管理后台 (opens new window)

集成环境

详见 开发环境要求。

SDK 初始化

初始化是使用 SDK 的必要步骤,需在执行所有接口方法调用前完成。

如果进行多次初始化操作,只有第一次初始化以及相关的参数生效。

初始化示例代码:

// appkey 替换成你在环信即时通讯 IM 管理后台注册应用中的 App Key 
EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"];
[[EMClient sharedClient] initializeSDKWithOptions:options];
 

注册用户

可以使用如下代码创建账号:

// 异步方法  [[EMClient sharedClient] registerWithUsername:@"username" password:@"your password" 
completion:^(NSString *aUsername, EMError *aError) { }]; 
 

注意

  • 以上注册模式为在客户端注册,旨在方便测试,并不推荐在正式环境中使用;
  • 正式环境应使用服务器端调用 REST API 接口 注册用户。

用户登录

目前登录服务器支持手动和自动登录。手动登录有两种方式:

  • 用户 ID + 密码
  • 用户 ID + token

手动登录

登录时传入的用户 ID 必须为 String 类型,支持的字符集详见用户注册的 RESTful 接口。

手动登录后,收到 connectionStateDidChange 回调表明 SDK 与环信服务器连接成功。

用户 ID + 密码 是传统的登录方式。用户名和密码均由你的终端用户自行决定,密码需要符合密码规则要求。

// 异步方法  [[EMClient sharedClient] loginWithUsername:@"username" password:@"your password" completion:
^(NSString *aUsername, EMError *aError) { }]; 
 

用户 ID + token 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 环信用户 token 的获取。

注意

使用 token 登录时需要处理 token 过期的问题,比如每次登录时更新 token 等机制。

// 异步方法  [EMClient.sharedClient loginWithUsername:@"username" token:@"token" completion:^(NSString *
 _Nonnull aUsername, EMError * _Nullable aError) { }]; 
 

自动登录

在初始化的时候,可以设置是否自动登录。如果设置为自动登录,则登录成功之后,后续启动初始化的时候会自动登录。

自动登录完成后,触发 EMClientDelegate 中的以下回调:

- (void)autoLoginDidCompleteWithError:(EMError * _Nullable)aError { } 
 

退出登录

// 异步方法  [EMClient.sharedClient logout:YES completion:^(EMError * _Nullable aError) { }]; 
 

连接状态相关

你可以通过注册连接监听 EMClientDelegate 确认连接状态。

- viewDidLoad { ... // 注册连接状态监听,在 SDK 初始化之后调用。
 [EMClient.sharedClient addDelegate:self delegateQueue:nil]; ... } // 连接状态变更时触发该回调
 - (void)connectionStateDidChange:(EMConnectionState)aConnectionState { if(aConnectionState 
== EMConnectionConnected) { // 连接成功 }else { // 断开连接 } } // token 已过期,使用 agoraToken
 登录可能触发 - (void)tokenDidExpire:(EMErrorCode)aErrorCode { } // token 已过期,使用 agoraToken 
登录可能触发 - (void)tokenWillExpire:(EMErrorCode)aErrorCode { } 
 

断网自动重连

如果由于网络信号弱、切换网络等原因引起的连接中断,SDK 会自动尝试重连。重连成功或者失败会触发回调 - (void)connectionStateDidChange:(EMConnectionState)aConnectionState。

被动退出登录

你可以通过监听 EMClientDelegate 中的以下回调,调用 EMClient#logout:completion: 退出登录并返回登录界面。

// 当前登录账号在其它设备登录时会触发回调 - (void)userAccountDidLoginFromOtherDevice { }
 // 当前登录账号被强制退出时会收到该回调,如密码被修改、登录设备过多、服务被封禁、被强制下线等原因 
- (void)userAccountDidForcedToLogout:(EMError *_Nullable)aError { } 
// 当前登录账号已被从服务器端删除时会收到该回调 - (void)userAccountDidRemoveFromServer { } 
// 当前用户账号被禁用时会收到该回调 - (void)userDidForbidByServer { } 
 

输出信息到日志文件

SDK 默认的日志输出级别为 DEBUG,开发阶段如果希望在环信即时通讯云管理后台上输出 SDK 日志,可在 SDK 初始化时开启以下开关:

EMOptions* option = [EMOptions optionsWithAppkey:@"<#appkey#>"]; // 日志输出到环信即时通讯管理后台 
option.enableConsoleLog = YES; // 调整日志输出级别,默认为 `Debug` option.logLevel = EMLogLevelDebug;
 [EMClient.sharedClient initializeSDKWithOptions:option]; 
 

获取本地日志

SDK 会写入日志文件到本地。日志文件路径如下:沙箱Library/Application Support/HyphenateSDK/easemobLog/easemob.log。

以真机为例,获取本地日志过程如下:

  • 打开 Xcode,连接设备,选择 Xcode > Window > Devices and Simulators
  • 进入 Devices 选项卡,在左侧选择目标设备,例如 Easemob IM,点击设置图标,然后选择 Download Container

日志文件 easemob.log 文件在下载包的 AppData/Library/Application Support/HyphenateSDK/easemobLog 目录下。

相似文档
  • 静态配置 IP 地址(域名): SDK 默认指向公有云地址,在部署私有云后,需要将地址重新指向到新的地址,以下是地址修改方法: 注意: 如果需要配置 HTTPS 只需加一个属性即可。
  • 版本 V4.0.1 Dev 2023-3-16(开发版)新增特性: [IM SDK] 新增 群成员自定义属性功能并增加自定义属性更新事件实现群成员设置和获取在群组中的昵称和头像等属性。 [IM SDK] 新增 EMChatMessage#deliverOnlineOnly 属性实现发消息只投递给在线用户。若开启了该功能,用户离线时消息不投递。
  • 功能描述: 环信即时通讯 IM 支持多种消息类型,开发者可以方便地对本地会话、消息进行管理,可以从服务端获取历史会话和消息,提供送达回执和已读回执能力。
  • 登录即时通讯服务后,用户可以在单聊、群聊、聊天室中发送如下类型的消息: 文字消息,包含超链接和表情消息。 附件消息,包含图片、语音、视频及文件消息。 位置消息。 透传消息。 自定义消息。
  • 本文介绍环信即时通讯 IM iOS SDK 如何管理本地消息数据。SDK 内部使用 SQLite 保存本地消息,方便消息处理。 除了发送和接收消息外,环信即时通讯 IM SDK 还支持以会话为单位对本地的消息数据进行管理,如获取与管理未读消息、删除聊天记录、搜索历史消息以及统计消息流量等。其中,会话是一个单聊、群聊或者聊天室所有消息的集合。用户需在会话中发送消息或查看历史消息,还可进行清空聊天记录等操作。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部