You need to enable JavaScript to run this app.
导航
iOS
最近更新时间:2024.01.18 21:38:26首次发布时间:2023.05.29 20:17:24

本文介绍如何创建一个 IMCloud iOS 项目,实现即时通讯功能。你也可以通过阅读代码,了解即时通讯的最佳实践。

开发环境要求
  • 获取 AppID 和 Token,你可以通过阅读密钥说明了解更多 Token 相关信息

  • Xcode 14.1+

  • iOS 11.0+ iPhone 或 iPad 真机

  • 项目已配置有效的开发者签名

步骤 1:创建项目(可选)

本步骤为如何创建一个新项目,如集成到已有项目,请直接查看集成 SDK

  1. 打开 Xcode,选择 File > New > Project

  2. 选择 iOS > App,单击 Next。

  1. 输入项目名称、团队名称、选择开发语言(Objective-C),单击 Next

  2. 选择项目存储位置,单击 Create

  3. 签名设置:进入 TARGETS > Project Name > Signing & Capabilities,查看 Automatically manage signing 是否勾选,若没有勾选请勾选 ,并在弹出菜单中选择 Enable Automatic

步骤 2:集成 SDK

CocoaPods 集成

  1. 安装 CocoaPods。在终端窗口中输入如下命令(需要提前在 Mac 中安装 Ruby 环境):
sudo gem install cocoapods
  1. 创建 Podfile 文件。进入项目所在路径输入以下命令行,之后项目路径下会出现一个 Podfile 文件。
pod init
  1. 配置 Podfile 示例如下。你需要填写所需要的 SDK 版本号,最新版本号参看资源获取
source 'https://github.com/volcengine/volcengine-specs.git'
source 'https://github.com/CocoaPods/Specs.git'

 platform :ios, '11.0'

target 'ByteBusiness' do
  # Comment the next line if you don't want to use dynamic frameworks
  # use_frameworks!
  
  # 指定你所需要的 SDK 版本,可在产品动态页面获取历史版本号,推荐使用最新版本
  pod 'im-uikit-tob', '1.x.x'

end
  1. pod install,如果更新最新版本失败执行以下命令更新本地的 CocoaPods 仓库列表。
pod repo update

本地集成

下载 SDK 和 UIKit 到本地,解压并拷贝文件到项目工程中。其中 UIKit 已经开源,你也可以通过 GitHub 仓库获取 UIKit 源码。

步骤 3:快速搭建

初始化

在使用 IMSDK 接口功能前需要先进行初始化操作,在 application 启动函数中添加如下代码。其中 BIMSDKConfig 可配置 IMSDK 的日志监听。

BIMSDKConfig *config = [[BIMSDKConfig alloc] init];
    [config setLogListener:^(BIMLogLevel logLevel, NSString * _Nonnull logContent) {
            // 日志 输出
    }];
    [[BIMUIClient sharedInstance] initSDK:[kVEIMDemoAppID integerValue]  config:config];

BIMLogLevel 日志级别含义如下

日志级别含义
BIM_LOG_DEBUGdebug 日志, 调试信息。
BIM_LOG_INFOInfo 日志,上下文环境等信息。
BIM_LOG_WARNwarn 日志,警告信息。
BIM_LOG_ERRORerror 日志,错误信息。

登录登出

完成初始化并设置监听后,即可进入到登录流程,登录后才能正常使用组件功能

客户端登录

客户端登录示例代码如下。登录会根据当前传入的 uid,token 鉴权,并拉取历史会话、消息等数据,同时建立长链接。

[[BIMUIClient sharedInstance] login:uid token:token completion:^(BIMError * _Nullable error) {        
    // 无 error 代表登录成功,反之失败      
}];

客户端登出

[[BIMUIClient sharedInstance] logoutWithCompletion:nil];

账号切换

开发者可以通过 logout 当前账号,再 login 新账号实现此功能。

集成界面

会话列表界面

创建自己的会话列表容器控制器,如 xxxConversationListController,然后将 BIMConversationListController 作为子 vc 添加到 xxxConversationListController,可以在 viewDidLoad 时添加如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    BIMConversationListController *conListController = [[BIMConversationListController alloc] init];
    conListController.delegate = self;
    [self addChildViewController:conListController];
    [self.view addSubview:conListController.view];
}

BIMConversationListController 提供了点击监听,便于业务自定义会话点击事件。

@protocol BIMConversationListControllerDelegate <NSObject>

- (void)conversationListController:(BIMConversationListController *_Nullable)controller didSelectConversation:(BIMConversation *)conversation;

@end

集成后会话列表页面实现样式参考下图:

消息列表页面

创建自己的消息列表容器控制器,如 xxxChatViewController,然后将 BIMChatViewController 作为子 vc 添加到 xxxChatViewController,可以在 viewDidLoad 时添加如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    BIMChatViewController *chatVC = [BIMChatViewController chatVCWithConversation:self.conversation];
    [self addChildViewController:chatVC];
    [self.view addSubview:chatVC.view];
}

集成后消息列表页面实现样式参考下图:

海外服务

在 v1.9.0 及之后版本,IM SDK 同时支持海外服务,你可以在初始化时配置海外环境,示例代码如下。

说明

目前海外版本暂不支持收发语音消息和视频消息,调用发送会返回上传失败错误。

// 国内:BIM_ENV_DEFAULT_ZH 海外:BIM_ENV_I18N
[[BIMUIClient 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; // 默认开启,建议开启辅助问题排查
[[BIMUIClient sharedInstance] initSDK:appid config:config];