iOS

最近更新时间:2023-09-11 17:12:41

我的收藏

开发环境要求

Xcode 10 及以上
iOS 9.0 及以上

CocoaPods 集成

TUIKit 从 5.7.1435 版本开始支持模块化集成,您可以根据自己的需求选择所需模块集成。
1. 根据实际业务需求在 Podfile 中添加对应的 TUI 组件,比如需要聊天功能,可以添加pod 'TUIChat';需要会话列表功能,可以添加 pod 'TUIConversation';需要音视频通话功能,可以添加pod 'TUICallKit'。TUI 组件之间相互独立,添加或删除均不影响工程编译。
# 防止 TUI 组件里的 *.xcassets 与您项目里面冲突。
install! 'cocoapods', :disable_input_output_paths => true

# TUI 组件依赖了静态库,需要屏蔽如下设置,如果报错,请参考常见问题说明。
# use_frameworks!

# 集成聊天功能
pod 'TUIChat'
# 集成会话功能
pod 'TUIConversation'
# 集成关系链功能
pod 'TUIContact'
# 集成群组功能
pod 'TUIGroup'
# 集成搜索功能(需要购买旗舰版套餐)
pod 'TUISearch'
# 集成音视频通话功能
pod 'TUICallKit'
2. 执行以下命令,安装 TUI 组件。
pod install
如果无法安装 TUIKit 最新版本,执行以下命令更新本地的 CocoaPods 仓库列表。
pod repo update
TUI 组件集成后效果




快速搭建

常用的聊天软件都是由会话列表、聊天窗口、好友列表、音视频通话等几个基本的界面组成,参考下面步骤,您仅需几行代码即可在项目中快速搭建这些 UI 界面。

步骤一:组件登录

#import "TUILogin.h"
// 您可以在用户 UI 点击登录的时候登录 UI 组件
- (void)loginSDK:(NSString *)userID userSig:(NSString *)sig succ:(TSucc)succ fail:(TFail)fail {
// SDKAppID 可以在 即时通信 IM 控制台中获取
// userSig生成见 GenerateTestUserSig.h
[TUILogin login:SDKAppID userID:userID userSig:sig succ:^{
NSLog(@"-----> 登录成功");
} fail:^(int code, NSString *msg) {
NSLog(@"-----> 登录失败");
}];
}

步骤二:构建会话列表

会话列表只需要创建TUIConversationListController对象即可。会话列表会从数据库中读取最近联系人,当用户单击联系人时,TUIConversationListController将该事件回调给上层。
@implementation ConversationController // 您自己的 ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建 TUIConversationListController
TUIConversationListController *conv = [[TUIConversationListController alloc] init];
conv.delegate = self;
// 把 TUIConversationListController 添加到自己的 ViewController
[self addChildViewController:conv];
[self.view addSubview:conv.view];
}

- (void)conversationListController:(TUIConversationListController *)conversationController didSelectConversation:(TUIConversationCell *)conversation
{
// 会话列表点击事件,通常是打开聊天界面
}
@end

步骤三:构建聊天窗口

初始化聊天界面时,上层需要传入当前聊天界面对应的会话信息,示例代码如下:
@implementation ChatViewController // 您自己的 ViewController
- (void)viewDidLoad {
// 创建会话信息
TUIChatConversationModel *data = [[TUIChatConversationModel alloc] init];
data.userID = @"userID";
// 创建 TUIC2CChatViewController
TUIC2CChatViewController *vc = [[TUIC2CChatViewController alloc] init];
[vc setConversationData:data];
// 把 TUIC2CChatViewController 添加到自己的 ViewController
[self addChildViewController:conv];
[self.view addSubview:conv.view];
}
@end
TUIC2CChatViewController会自动拉取该用户的历史消息并展示出来。

步骤四:构建通讯录界面

通讯录界面不需要其它依赖,只需创建对象并显示出来即可。
@implementation ContactController // 您自己的 ViewController
- (void)viewDidLoad {
// 创建 TUIContactController
TUIContactController *vc = [[TUIContactController alloc] init];
// 把 TUIContactController 添加到自己的 ViewController
[self addChildViewController:conv];
[self.view addSubview:conv.view];
}
@end

步骤五:构建音视频通话功能

TUI 组件支持在聊天界面对用户发起音视频通话,仅需要简单几步就可以快速集成:
视频通话
语音通话






1. 创建音视频服务
1.1 创建项目。创建项目,选择类型及场景,开通相关服务。
1.1.1 登录 腾讯云视立方控制台 > 项目管理,单击创建项目开始创建。


1.1.2 选择项目类型。可选择创建新项目并输入项目名称,或关联已有项目
1.1.3 选择接入场景。选择快速接入的音视频场景,分为聊天应用音视频通话


1.1.4 选择集成方式。选择含 UI 快速集成
1.1.5 开通相关服务。使用音视频通话 SDK 需提前开通即时通信 IM 和实时音视频 TRTC 服务,仅开通服务,不涉及付费购买产品。
1.1.6 单击创建项目并下一步,完成项目创建,进入开发指引。


1.2 准备开发。
1.2.1 体验 Demo。您可提前体验 Demo 了解 SDK 应用效果,包括 Android、iOS 和 Web 端。
1.2.2 关联/创建 IM 应用。音视频通话创建需要使用 IM 服务,请选择一个 IM 应用进行关联或者创建新的应用。


1.2.3 领取资源。每个应用可免费体验音视频通话 SDK 功能一次有效期7天,音视频通话 SDK 体验版详细能力支持请参见 套餐包功能说明。业务上线请升级购买正式版本套餐,享受完整功能。


1.2.4 单击 前往集成
1.3 集成指南
1.3.1 选择集成环境并下载 TUIKit 开发包。集成环境包括 Android 和 iOS。
1.3.2 集成测试。下载 TUIKit 开发包后,参照集成测试的步骤查看相关集成文档完成集成测试。
1.3.3 正式开发。完成 SDK 接入测试后,若需正式开发并上线音视频应用,可购买音视频通话套餐包,包括基础版、进阶版和尊享版,升级当前项目业务版本,享受完整功能。


2. 集成 TUICallKit 组件在 podfile 文件中添加以下内容
// 集成音视频通话组件
pod 'TUICallKit'
3. 发起和接收视频或语音通话
消息页发起通话
联系人页发起通话






集成 TUICallKit 组件后,聊天界面和联系人资料界面默认会出现 “视频通话” 和 “语音通话” 两个按钮,当用户单击按钮时,TUIKit 会自动展示通话邀请 UI,并给对方发起通话邀请请求。
当用户在线收到通话邀请时,TUIKit 会自动展示通话接收 UI,用户可以选择同意或者拒绝通话。
当用户离线收到通话邀请时,如需唤起 App 通话,就要使用到离线推送能力,离线推送的实现请参见 添加离线推送
4. 添加离线推送
在使用离线推送之前,您需要开通 IM 离线推送 服务。
关于 App 的配置,您可以参考文档:集成 TUIOfflinePush 跑通离线推送功能
配置完成后,当单击接收到的音视频通话离线推送通知时, TUICallKit 会自动拉起音视频通话邀请界面
说明:
更多实操教学视频请参见:极速集成 TUIKit(iOS)

常见问题

1、提示 "target has transitive dependencies that include statically linked binaries" 如何处理?

如果在 pod 过程中出现该错误,是因为 TUIKit 使用到了第三方静态库,需要在 podfile 中注释掉use_frameworks!。 如果在某种情况下,需要使用use_frameworks!,则请使用 cocoapods 1.9.0 及以上版本进行pod install,并修改为:
use_frameworks! :linkage => :static
如果您使用的是 swift,请将头文件引用改成 @import 模块名形式引用。

2、TUICallKit 和自己集成的音视频库冲突了?

腾讯云的 音视频库 不能同时集成,会有符号冲突,如果您使用了非 TRTC 版本的音视频库,建议先去掉,然后 pod 集成TUICallKit/Professional 版本,该版本依赖的 LiteAV_Professional 音视频库包含了音视频的所有基础能力。如果您使用了 LiteAV_Enterprise 音视频库,暂不支持和 TUICallKit 共存。具体解决方案可以参考文档:音视频常见问题

3、通话邀请的超时时间默认是多久?

通话邀请的默认超时时间是 30 秒。

4、在邀请超时时间内,被邀请者如果离线再上线,能否立即收到邀请?

如果是单聊通话邀请,被邀请者离线再上线可以收到通话邀请,TUIKit 内部会自动唤起通话邀请界面。
如果是群聊通话邀请,被邀请者离线再上线后会自动拉取最近 30 秒内的邀请,TUIKit 会自动唤起群通话界面。

交流与反馈

欢迎加入 QQ 群进行技术交流和反馈问题。