本文介绍如何创建一个 IMCloud iOS 项目,实现即时通讯功能。你也可以通过阅读代码,了解即时通讯的最佳实践。
获取 AppID 和 Token,你可以通过阅读密钥说明了解更多 Token 相关信息
Xcode 14.1+
iOS 11.0+ iPhone 或 iPad 真机
项目已配置有效的开发者签名
本步骤为如何创建一个新项目,如集成到已有项目,请直接查看集成 SDK。
打开 Xcode,选择 File > New > Project。
选择 iOS > App,单击 Next。
输入项目名称、团队名称、选择开发语言(Objective-C),单击 Next。
选择项目存储位置,单击 Create。
签名设置:进入 TARGETS > Project Name > Signing & Capabilities,查看 Automatically manage signing 是否勾选,若没有勾选请勾选 ,并在弹出菜单中选择 Enable Automatic。
你可以使用 CocoaPods 自动加载的方式,或者手动下载 IMSDK 导入到项目中。
sudo gem install cocoapods
pod init
platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/volcengine/volcengine-specs.git' target 'App' do # warn 请使用静态库链接方式,否则会链接出错 # use_frameworks! # 如果是 Swift 工程,请使用 use_modular_headers! 不要使用 use_frameworks! use_modular_headers! # 指定你所需要的 SDK 版本,可在产品动态页面获取历史版本号,推荐使用最新版本 pod 'imsdk-tob', '1.x.x', :subspecs => [ 'Core', 'Config/CN', ] end
platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/volcengine/volcengine-specs.git' target 'App' do # warn 请使用静态库链接方式,否则会链接出错 # use_frameworks! # 如果是 Swift 工程,请使用 use_modular_headers! 不要使用 use_frameworks! use_modular_headers! # 指定你所需要的 SDK 版本,可在产品动态页面获取历史版本号,推荐使用最新版本 pod 'imsdk-tob', '1.x.x', :subspecs => [ 'Core', 'Config/Global', ] end
pod install
下载 SDK 并将 imsdk-tob.framework 导入工程中。
在使用 IMSDK 接口功能前需要先进行初始化操作,可以在 IM功能使用前比如applicationDelegate 的 - (BOOL)application:didFinishLaunchingWithOptions: 回调函数中添加如下代码。其中 BIMSDKConfig 可配置 IMSDK 的日志监听。
BIMSDKConfig *config = [[BIMSDKConfig alloc] init]; [config setLogListener:^(BIMLogLevel logLevel, NSString * _Nonnull logContent) { // 日志 输出 }]; [[BIMClient sharedInstance] initSDK:appID config:config];
BIMLogLevel 日志级别含义如下
日志级别 | 含义 |
---|---|
BIM_LOG_DEBUG | debug 日志, 调试信息。 |
BIM_LOG_INFO | Info 日志,上下文环境等信息。 |
BIM_LOG_WARN | warn 日志,警告信息。 |
BIM_LOG_ERROR | error 日志,错误信息。 |
设置 Imsdk 生命周期内重要事件的监听可以了解 IMSDK 的运行状态,数据同步状态等信息,便于开发者业务逻辑判断。
[[BIMClient sharedInstance] addConnectListener:<#(nonnull id<BIMConnectListener>)#>]; - (void)onConnectStatusChanged:(BIMConnectStauts)status { } - (void)onTokenInvalid { }
完成初始化并设置监听后,即可进入到登录流程,登录后才能正常使用组件功能。
客户端登录示例代码如下。登录会根据当前传入的 uid,token 鉴权,并拉取历史会话、消息等数据,同时建立长链接。
[[BIMClient sharedInstance] login:uid token:token completion:^(BIMError * _Nullable error) { // 无error代表登录成功,反之失败 }];
获取当前登录用户
客户端登出
[[BIMClient sharedInstance] logoutWithCompletion:nil];
账号切换
开发者可以通过 logout 当前账号,再 login 新账号实现此功能。
通过以下简单步骤可实现单聊功能,单聊是 IM 的基础功能,能够实现一对一的即时通信能力。
[[BIMClient sharedInstance] createSingleConversation:uid completion:^(BIMConversation * _Nonnull conversation, BIMError * _Nullable error) { }];
//创建消息 BIMMessage *sendMsg = [[BIMClient sharedInstance] createTextMessage:@"消息内容"]; //发送消息 [[BIMClient sharedInstance] sendMessage:sendMsg conversationId:@"会话id" saved:nil progress:nil completion:^(BIMMessage * _Nullable message, BIMError * _Nullable error) { }];
[[BIMClient sharedInstance] addMessageListener:<#(nonnull id<BIMMessageListener>)#>]; /// 收到新消息 - (void)onReceiveMessage:(BIMMessage *)message { } /// 收到消息被删除 - (void)onDeleteMessage:(NSString *)msgID { } /// 收到消息撤回 - (void)onRecallMessage:(BIMMessage *)message { } /// 消息被修改(内容+扩展) - (void)onUpdateMessage:(BIMMessage *)message { } /// 发送消息入库完成 - (void)onSendMessage:(BIMMessage *)message { }
在 v1.9.0 及之后版本,IM SDK 同时支持海外服务,你可以在初始化时配置海外环境,示例代码如下。
说明
目前海外版本暂不支持收发语音消息和视频消息,调用发送会返回上传失败错误。
// 国内:BIM_ENV_DEFAULT_ZH 海外:BIM_ENV_I18N [[BIMClient sharedInstance] initSDK:appid config:config env:BIM_ENV_I18N];
IM SDK 提供了日志记录和性能分析功能,以帮助用户分析线上问题,默认开启。为了更好地排查问题,SDK 会上报部分客户端数据到火山国内的监控服务,如评估后有风险,可以在 initSDK 时配置 BIMSDKConfig 关闭日志功能,示例代码如下。
BIMSDKConfig *config = [[BIMSDKConfig alloc] init]; config.enableAPM = NO; // 默认开启,建议开启辅助问题排查 config.enableAppLog = NO; // 默认开启,建议开启辅助问题排查 [[BIMClient sharedInstance] initSDK:appid config:config];