
Podfile 文件中添加 pod 'TUICallKit_Swift' 依赖。例如:target 'YourProjectTarget' dopod 'TUICallKit_Swift'end
.xcodeproj 目录下,然后执行 pod init 命令创建 Podfile 文件,创建完成后,在您的 Podfile 文件中添加 pod 'TUICallKit_Swift' 依赖。例如:// 1cd /Users/yourusername/Projects/YourProject// 2podinit// 3在生成的 Podfile 文件中target 'YourProjectTarget' dopod 'TUICallKit_Swift'end
Podfile 文件所在的目录,然后执行以下命令安装组件。pod update
Info.plist 文件中添加以下两项,并填写对应的使用说明,这些说明将在系统请求权限时向用户显示:<key>NSCameraUsageDescription</key><string>TUICallKitApp 需要访问您的摄像头,并可用于视频通话、群组视频通话等功能。</string><key>NSMicrophoneUsageDescription</key><string>TUICallKitApp 需要访问您的麦克风,并可用于音频通话、群组音频通话、视频通话、群组视频通话等功能</string>

import TUICoreimport TUICallKit_Swiftfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {let userID = "denny" // 请替换为您的 UserIdlet sdkAppID: Int32 = 0 // 请替换为在控制台得到的 SDKAppIDlet secretKey = "****" // 请替换为在控制台得到的 SecretKeylet userSig = GenerateTestUserSig.genTestUserSig(userID: userID, sdkAppID: sdkAppID, secretKey: secretKey)TUILogin.login(sdkAppID, userID: userID, userSig: userSig) {print("login success")} fail: { code, message inprint("login failed, code: \\(code), error: \\(message ?? "nil")")}return true}
#import <TUICore/TUILogin.h>#import <TUICallKit_Swift/TUICallKit_Swift-Swift.h>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {NSString *userID = @"denny"; // 请替换为您的 UserIdint sdkAppID = 0; // 请替换为第一步在控制台得到的 SDKAppIDNSString *secretKey = @"****"; // 请替换为第一步在控制台得到的 SecretKeyNSString *userSig = [GenerateTestUserSig genTestUserSigWithUserID:userID sdkAppID:sdkAppID secretKey:secretKey];[TUILogin login:sdkAppIDuserID:userIDuserSig:userSigsucc:^{NSLog(@"login success");} fail:^(int code, NSString * _Nullable msg) {NSLog(@"login failed, code: %d, error: %@", code, msg);}];return YES;}
参数 | 类型 | 说明 |
userId | String | 只允许包含大小写英文字母(a-z A-Z)、数字(0-9)及下划线和连词符。 |
sdkAppId | int | |
secretKey | String | |
userSig | String | 一种安全保护签名,用于对用户进行登录鉴权认证,确认用户是否真实,阻止恶意攻击者盗用您的云服务使用权。 |
GenerateTestUserSig.genTestSig函数生成 userSig。该方法中 secretKey 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。import TUICallKit_SwiftTUICallKit.createInstance().setSelfInfo(nickname: "jack", avatar: "https:/****/user_avatar.png") {} fail: { code, message in}
#import <TUICore/TUILogin.h>#import <TUICallKit_Swift/TUICallKit_Swift-Swift.h>NSString *nickname = @"jack";NSString *avatar = @"https:/****/user_avatar.png";[[TUICallKit createInstance] setSelfInfo:nickname avatar:avatar callback:nil];
参数 | 类型 | 说明 |
nickname | String | 目标用户的昵称 |
avatar | String | 目标用户的头像 |
import TUICallKit_Swift// 发起单人语音通话TUICallKit.createInstance().calls(userIdList: ["mike"], callMediaType: .audio, params: nil) {} fail: { code, message in}
#import <TUICallKit_Swift/TUICallKit_Swift-Swift.h>#import <RTCRoomEngine/TUICallEngine.h>[[TUICallKit createInstance] calls:@[@"mike"] callMediaType:TUICallMediaTypeAudio params:NULL succ:^{} fail:^(int code, NSString * _Nullable errMsg) {}];
参数 | 类型 | 说明 |
userIdList | [String] | 目标用户的 userId 列表 |
mediaType | 通话的媒体类型,例如视频通话、语音通话 | |
params | 通话扩展参数,例如:房间号、通话邀请超时时间,离线推送自定义内容等 |

import TUICallKit_SwiftTUICallKit.createInstance().enableFloatWindow(enable: true)
[[TUICallKit createInstance] enableFloatWindow:YES];
enableIncomingBanner 接口开启或关闭来电横幅功能:默认(关闭)状态下,被叫端收到邀请会直接弹出全屏通话界面;开启后则会先展示横幅通知,然后根据需要再拉起全屏通话界面。
import TUICallKit_SwiftTUICallKit.createInstance().enableIncomingBanner(enable: true)
[[TUICallKit createInstance] enableIncomingBanner:YES];
calls 方法发起通话时,若被叫用户列表超过一人,则自动视为群组通话。其他成员可通过 join 方法加入该多人通话。calls 方法发起通话时,若被叫用户列表(userIdList)超过一人,则自动视为群组通话。import TUICallKit_SwiftTUICallKit.createInstance().calls(userIdList: ["mike"], callMediaType: .audio, params: nil) {} fail: { code, message in}
#import <TUICallKit_Swift/TUICallKit_Swift-Swift.h>#import <RTCRoomEngine/TUICallEngine.h>[[TUICallKit createInstance] calls:@[@"mike", @"tate"] callMediaType:TUICallMediaTypeAudio params:NULL succ:^{} fail:^(int code, NSString * _Nullable errMsg) {}];
参数 | 类型 | 说明 |
userIdList | [String] | 目标用户的 userId 列表 |
mediaType | 通话的媒体类型,例如视频通话、语音通话 | |
params | 通话扩展参数,例如:房间号、通话邀请超时时间,离线推送自定义内容等 |
join 方法加入指定的群组通话。import TUICallKit_SwiftTUICallKit.createInstance().join(callId: "")
[[TUICallKit createInstance] joinWithCallId: @"***"];
参数 | 类型 | 说明 |
callId | String | 此次通话的唯一标识。 |
TUIGlobalization.setPreferredLanguage方法设置语言,以设置语言为英文示例代码如下。 import TUICorefunc steLanguage() {TUIGlobalization.setPreferredLanguage("en")}
参数 | 类型 | 说明 |
language | String | 设置的语言: "zh-Hans" :简体中文 。 "zh-Hant" :繁体中文。 "en" :英文。 "ar" :阿拉伯语。 |
import TUICallKit_SwiftTUICallKit.createInstance().setCallingBell(filePath: "***/callingBell.mp3")
[[TUICallKit createInstance] setCallingBell:@"***/callingBell.mp3"];
参数 | 类型 | 说明 |
filePath | String | 铃声文件的路径 |
import TUICallKit_SwiftTUICallKit.createInstance().enableMuteMode(enable: true)
[TUICallKit createInstance] enableMuteMode: YES];
import TUICallKit_Swiftlet params = TUICallParams()let pushInfo: TUIOfflinePushInfo = TUIOfflinePushInfo()pushInfo.title = "TUICallKit"pushInfo.desc = "TUICallKit.have.new.invitation"pushInfo.iOSPushType = .apnspushInfo.ignoreIOSBadge = falsepushInfo.iOSSound = "phone_ringing.mp3"pushInfo.androidSound = "phone_ringing"// OPPO必须设置ChannelID才可以收到推送消息,这个channelID需要和控制台一致pushInfo.androidOPPOChannelID = "tuikit"// FCM channel ID, 您需要更改 PrivateConstants.java 并设置 "fcmPushChannelId"pushInfo.androidFCMChannelID = "fcm_push_channel"// VIVO 消息类型: 0-推送消息,1-系统消息(送达率较高)pushInfo.androidVIVOClassification = 1// HuaWei 消息类型: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835pushInfo.androidHuaWeiCategory = "IM"params.userData = "User Data"params.timeout = 30params.offlinePushInfo = pushInfoTUICallKit.createInstance().call(userId: "123456", callMediaType: .audio, params: params) {} fail: {code, message in}
[[TUICallKit createInstance] call:@"mike 的 id" params:[self getCallParams] callMediaType:TUICallMediaTypeVideo];- (TUICallParams *)getCallParams {TUIOfflinePushInfo *offlinePushInfo = [self createOfflinePushInfo];TUICallParams *callParams = [TUICallParams new];callParams.offlinePushInfo = offlinePushInfo;callParams.timeout = 30;return callParams;}+ (TUIOfflinePushInfo *)createOfflinePushInfo {TUIOfflinePushInfo *pushInfo = [TUIOfflinePushInfo new];pushInfo.title = @"";pushInfo.desc = TUICallingLocalize(@"TUICallKit.have.new.invitation");pushInfo.iOSPushType = TUICallIOSOfflinePushTypeAPNs;pushInfo.ignoreIOSBadge = NO;pushInfo.iOSSound = @"phone_ringing.mp3";pushInfo.AndroidSound = @"phone_ringing";// OPPO必须设置ChannelID才可以收到推送消息,这个channelID需要和控制台一致pushInfo.AndroidOPPOChannelID = @"tuikit";// FCM channel ID, 您需要更改 PrivateConstants.java 并设置 "fcmPushChannelId"pushInfo.AndroidFCMChannelID = @"fcm_push_channel";// VIVO 消息类型: 0-推送消息,1-系统消息(送达率较高)pushInfo.AndroidVIVOClassification = 1;// HuaWei 消息类型: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835pushInfo.AndroidHuaWeiCategory = @"IM";return pushInfo;}
图标 | 文件名称 | 说明 |
![]() | icon_dialing.png | 接听来电图标 |
![]() | icon_hangup.png | 挂断通话图标 |
![]() | icon_mute_on.png | 关闭麦克风图标 |
![]() | ticon_handsfree.png | 关闭扬声器图标 |
![]() | icon_camera_off.png | 关闭摄像头图标 |
![]() | icon_add_user.png | 通话过程中邀请用户图标 |
pod 'TUICallKit_Swift', :path=>"您的 TUICallKit_Swift.podspec 路径"

文档反馈