tencent cloud

实时音视频

动态与公告
产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
产品简介
产品概述
基本概念
产品功能
产品优势
应用场景
性能数据
购买指南
计费概述
免费时长说明
月订阅
现收现付
TRTC 逾期与暂停政策
常见问题解答
退款说明
新手指引
Demo 体验
视频通话 SDK
组件介绍
开通服务
跑通 Demo
快速接入
离线唤醒
会话聊天
云端录制
AI 降噪
界面定制
Chat 集成通话能力
更多特性
无 UI 集成
服务端 API
客户端 API
解决方案
错误码表
发布日志
常见问题
视频会议 SDK
组件介绍(TUIRoomKit)
开通服务(TUIRoomKit)
跑通 Demo(TUIRoomKit)
快速接入(TUIRoomKit)
屏幕共享(TUIRoomKit)
预定会议(TUIRoomKit)
会中呼叫(TUIRoomKit)
界面定制(TUIRoomKit)
虚拟背景(TUIRoomKit)
会议控制(TUIRoomKit)
云端录制(TUIRoomKit)
AI 降噪(TUIRoomKit)
会中聊天(TUIRoomKit)
机器人推流(TUIRoomKit)
更多特性(TUIRoomKit)
客户端 API(TUIRoomKit)
服务端 API(TUIRoomKit)
常见问题(TUIRoomKit)
错误码 (TUIRoomKit)
SDK更新日志(TUIRoomKit)
直播与语聊 SDK
Live 视频直播计费说明
组件介绍
开通服务(TUILiveKit)
跑通 Demo
无 UI 集成
UI 自定义
直播监播
视频直播
语聊房
高级功能
客户端 API
服务端 API
错误码
发布日志
常见问题
RTC Engine
开通服务
SDK 下载
API-Example
接入指引
API-参考手册
高级功能
AI 集成
概述
MCP 配置
Skills 配置
集成指南
常见问题
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
控制台指南
应用管理
套餐包管理
用量统计
监控仪表盘
开发辅助
解决方案
实时合唱
常见问题
迁移指南
计费相关
功能相关
UserSig 相关
应对防火墙限制相关
缩减安装包体积相关
Andriod 与 iOS 相关
Web 端相关
Flutter 相关
Electron 相关
TRTCCalling Web 相关
音视频质量相关
其他问题
旧版文档
RTC RoomEngine SDK(旧)
集成 TUIRoom (Web)
集成 TUIRoom (Android)
集成 TUIRoom (iOS)
集成 TUIRoom (Flutter)
集成 TUIRoom (Electron)
TUIRoom API 查询
实现云端录制与回放(旧)
监控仪表盘计费(旧)
协议与策略
安全合规认证
安全白皮书
信息安全说明
服务等级协议
苹果隐私策略:PrivacyInfo.xcprivacy
TRTC 政策
隐私协议
数据处理和安全协议
词汇表

会前提醒(Android&iOS)

PDF
聚焦模式
字号
最后更新时间: 2025-04-01 18:07:14
当您成功预定会议后,TUIRoomKit 组件将在会议开始前10分钟向参会成员推送会前提醒消息。本文档将指引您接入 TIMPush 推送插件,以开启会前提醒功能。

功能介绍

在进行离线推送功能的集成前,请确保已按照官方文档完成 厂商配置,以确保 TUIRoomKit 的离线推送功能正常运行。
TUIRoomKit 接入 TIMPush 推送插件的效果如下(以小米手机 Redmi Note 8 Pro 的显示效果为例):
应用在后台时或离线时
锁屏时







功能接入

Android
iOS
1. 请参见推送插件 TIMPush 快速接入文档,完成除步骤6以外的所有步骤(TUIRoomKit 组件内部已经进行会前提醒的离线消息推送,所以步骤6不需要单独配置)。
2. (可选) 若您想实现点击通知立即进房,可参考以下代码,注册回调时机建议放在应用 Application 的 onCreate() 函数中:
TUICore.registerEvent(TUIConstants.TIMPush.EVENT_NOTIFY, TUIConstants.TIMPush.EVENT_NOTIFY_NOTIFICATION, new ITUINotification() {
@Override
public void onNotifyEvent(String key, String subKey, Map<String, Object> param) {
if (TUIConstants.TIMPush.EVENT_NOTIFY.equals(key) && TUIConstants.TIMPush.EVENT_NOTIFY_NOTIFICATION.equals(subKey)) {
if (param != null) {
String extString = (String) param.get(TUIConstants.TIMPush.NOTIFICATION_EXT_KEY);
try {
// 可根据您的业务,点击通知跳转到相应的界面,以下是跳转到房间的示例。
JSONObject roomObject = new JSONObject(extString);
String roomId = roomObject.getString("RoomId");
if (!TextUtils.isEmpty(roomId)) {
loginAndEnterRoom(roomId);
}
} catch (Exception e) {
}
}
}
}
});

private void loginAndEnterRoom(String roomId) {
int sdkAppId = "您的appId";
String userId = "您的UserId"
String userSig = GenerateTestUserSig.genTestUserSig(userId);
// 登录
TUILogin.login(this.getApplicationContext(), sdkAppId, userId, userSig, new TUICallback() {
@Override
public void onSuccess() {
// 登录成功后进入房间
ConferenceDefine.JoinConferenceParams params = new ConferenceDefine.JoinConferenceParams(roomId);
Intent intent = new Intent(getApplicationContext(), ConferenceMainActivity.class);
intent.putExtra(KEY_JOIN_CONFERENCE_PARAMS, params);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
}
@Override
public void onError(int errorCode, String errorMessage) {
}
});
}
注意:
若您想实现点击推送进入房间,必须进房前完成登录
1. 集成 TIMPush 组件
pod 'TIMPush', '8.1.6108'
2. 配置推送参数
完成 厂商配置 后,可以在 即时通信 IM 控制台 得到证书 ID。您需要在 AppDelegate 中,实现 offlinePushCertificateID 协议方法并返回证书 ID 。
Swift
OC
import TIMPush

extension AppDelegate: TIMPushDelegate {
func offlinePushCertificateID() -> Int32 {
return kAPNSBusiId
}
}
#import "TIMPush/TIMPushManager.h"

@interface AppDelegate () <TIMPushDelegate>

- (int)offlinePushCertificateID {
return kAPNSBusiId;
}
3. 点击离线推送后自定义跳转(可选)
在默认情况下,点击通知会跳转到 app。您可以参考以下代码实现点击通知立即进入会议,也可以查看 github 中的 SceneDelegate 和 AppDelegate 文件。
如果是冷启动,需要在 SceneDelegate 中解析通知消息,得到要进入会议的 roomId。
Swift
OC
import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
let loginVC = TRTCLoginViewController() //您自己的登录页面
loginVC.roomId = processOfflinePush(connectionOptions: connectionOptions)
let nav = UINavigationController(rootViewController: loginVC)
window?.rootViewController = nav
window?.makeKeyAndVisible()
}

private func processOfflinePush(connectionOptions: UIScene.ConnectionOptions) -> String? {
guard let pushNotification = connectionOptions.notificationResponse?.notification.request.content.userInfo else { return nil }
guard let extString = pushNotification["ext"] as? String else { return nil }
guard let dict = extString.convertToDic() else { return nil }
return dict["RoomId"] as? String
}
#import "SceneDelegate.h"
#import <UserNotifications/UserNotifications.h>
#import "TUIRoomKit/TUIRoomKit-Swift.h"
#import "TIMDefine.h"

@interface SceneDelegate ()
@property (nonatomic, strong) NSString *roomId;
@end

@implementation SceneDelegate

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
[self processOfflinePush:connectionOptions];
}

- (void)processOfflinePush: (UISceneConnectionOptions *)connectionOptions {
NSDictionary *pushNotification = connectionOptions.notificationResponse.notification.request.content.userInfo;
NSString *notice = pushNotification[@"ext"];
NSDictionary *dic = [self dictionaryFromString:notice];
NSString *roomId = dic[@"RoomId"];
//将roomId传给您自己的登录页面YourLoginViewController
}

@end
在您的登录页面完成 TUICore 的登录,并且判断是否需要跳转到会议主界面。
Swift
OC
import TUICore
import TUIRoomKit

//YourLoginViewController 是您自己的登录页面
class YourLoginViewController: UIViewController {
var roomId: String?

override func viewDidLoad() {
super.viewDidLoad()
TUILogin.login(Int32(SDKAppID), userID: "yourUserName", userSig: "yourUserSig") { [weak self] in
guard let self = self else { return }
self.navigationController?.pushViewController(YourSelfViewController(), animated: false)
//YourSelfViewController是正常登录后应该显示的您自己的界面
guard let roomId = self.roomId else { return }
//通过roomId判断是否通过离线通知进入前台,由此判断是否再跳转到会议主界面
self.showConferenceMainViewController(roomId: roomId)
self.roomId = nil
} fail: { (code, errorDes) in
print("code:\\(code), errorDes:\\(String(describing: errorDes))")
}
}
func showConferenceMainViewController(roomId: String) {
let conferenceViewController = ConferenceMainViewController()
let params = JoinConferenceParams(roomId: roomId)
conferenceViewController.setJoinConferenceParams(params: params)
navigationController?.pushViewController(conferenceViewController, animated: true)
}
}

#import "YourLoginViewController.h"
#import "TUIRoomKit/TUIRoomKit-Swift.h"
#import "TUILogin.h"

@interface YourLoginViewController ()
@property (nonatomic, strong) NSString *roomId;
@end

@implementation YourLoginViewController

- (void)viewDidLoad {
[super viewDidLoad];
[TUILogin login:yourSDKAPPID userID:@"youruserID" userSig:@"yourUserSig" succ:^{
//先显示您自己的界面
//如果roomId有值,说明是从离线推送进来的,可以调用showConferenceMainViewController再跳转到会议主界面
} fail:^(int code, NSString * _Nullable msg) {
}];
// Do any additional setup after loading the view.
}

- (void)showConferenceMainViewController: (NSString *)roomId {
ConferenceMainViewController * vc = [[ConferenceMainViewController alloc]init];
JoinConferenceParams * params = [[JoinConferenceParams alloc]initWithRoomId:
roomId isOpenMicrophone:true isOpenCamera:false isOpenSpeaker:true];
[vc setJoinConferenceParamsWithParams:params];
[self.navigationController pushViewController:vc animated:true];
}
如果是从后台进入前台,需要在 AppDelegate文件中实现 onRemoteNotificationReceived 方法。
Swift
OC
import TUIRoomKit
import TIMPush

@main
class AppDelegate: UIResponder, UIApplicationDelegate, TIMPushDelegate {
var roomId: String?
func onRemoteNotificationReceived(_ notice: String?) -> Bool {
guard let notice = notice else { return false }
guard let dict = convertToDic(string: notice) else { return false }
guard let roomId = dict["RoomId"] as? String else { return false }
if V2TIMManager.sharedInstance().getLoginStatus() == .STATUS_LOGINED {
//如果从后台唤醒并且已经完成登录,可以直接进入会议。
showConferenceMainViewController(roomId: roomId)
}
return true
}
}
#import "AppDelegate.h"
#import "TIMPush/TIMPushManager.h"
#import "TUIRoomKit/TUIRoomKit-Swift.h"
#import "TIMDefine.h"

@interface AppDelegate ()<TIMPushDelegate>
@property (nonatomic, strong) NSString *roomId;
@end
@implementation AppDelegate

- (BOOL)onRemoteNotificationReceived:(NSString *)notice {
NSDictionary * dic = [self dictionaryFromString:notice];
NSString * roomId = dic[@"RoomId"];
if (!roomId) {
return false;
}
if ([V2TIMManager sharedInstance].getLoginStatus == V2TIM_STATUS_LOGINED ) {
//如果从后台唤醒并且已经完成登录,可以直接进入会议。
[self showConferenceMainViewController:roomId];
}
return true;
}

@end

常见问题

1. 若在集成过程中遇到问题,请务必先查阅 插件推送-常见问题 进行自助排查。
2. 条件说明:部分厂商要求必须上架应用市场才可以正常使用推送服务,详情参见下表:
厂商通道
是否需要上架
账号说明
小米
需要注册企业开发者账号
VIVO
需要注册企业开发者账号
OPPO
需要注册企业开发者账号
荣耀
需要注册企业开发者账号
华为
个人开发者账号即可
魅族
个人开发者账号即可

功能定制

如果您想自定义会前提醒时间,您可以通过修改源码来实现,不同平台请参考:
Android
iOS
您可通过修改Android/tuiroomkit/src/main/java/com/tencent/cloud/tuikit/roomkit/view/page/widget/ScheduleConference/view/ScheduleConferenceView.javaREMINDER_TIME 成员变量的值,设置会前提醒的时间(秒)。
您可通过修改 iOS/TUIRoomKit/Source/ScheduleConferenceViewController.swiftreminderSecondsBeforeStart 成员变量的值,设置会前提醒的时间(秒)。
注意:
若会前提醒的时间大于会议预定的时间,则不会推送会前提醒的通知。

关键代码

会前提醒时间的设置,不同平台可参考:
Android
iOS
public abstract void scheduleConference(ConferenceInfo conferenceInfo, TUIRoomDefine.ActionCallback callback);
您可以通过修改 conferenceInfo 的 reminderSecondsBeforeStart 字段设置会前提醒时间(秒),详情请参考 scheduleConference 。示例代码如下:
TUIConferenceListManager manager = (TUIConferenceListManager) TUIRoomEngine.sharedInstance().getExtension(CONFERENCE_LIST_MANAGER);
TUIConferenceListManager.ConferenceInfo conferenceInfo = new TUIConferenceListManager.ConferenceInfo();
conferenceInfo.basicRoomInfo.roomId = "您的roomId";
conferenceInfo.reminderSecondsBeforeStart = 600; // 请替换600为您的会前提醒时间
manager.scheduleConference(conferenceInfo, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 预定会议成功回调
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 预定会议失败回调
}
});
- (void)scheduleConference:(TUIConferenceInfo *)conferenceInfo onSuccess:(TUISuccessBlock)onSuccess onError:(TUIErrorBlock)onError NS_SWIFT_NAME(scheduleConference(_:onSuccess:onError:));
您可以通过修改 conferenceInfo 的 reminderSecondsBeforeStart 字段设置会前提醒时间(秒),详情请参考 scheduleConference 。示例代码如下:
Swift
OC
import RTCRoomEngine

func scheduleConference() {
let manager = TUIRoomEngine.sharedInstance().getExtension(extensionType: .conferenceListManager) as? TUIConferenceListManager
let conferenceInfo = TUIConferenceInfo()
conferenceInfo.basicRoomInfo.roomId = "111111" // 请替换 "111111" 为您自定义的房间号
conferenceInfo.reminderSecondsBeforeStart = 600 // 请替换 600 为您自定义的会前提醒时间
manager?.scheduleConference(conferenceInfo, onSuccess: {
print("ScheduleConference success")
}, onError: { code, message in
print("ScheduleConference error, code:\\(code), message:\\(message)")
})
}
#import "RTCRoomEngine/TUIRoomEngine.h"
#import "RTCRoomEngine/TUIConferenceListManager.h"

- (void)scheduleConference {
TUIConferenceListManager * manager = [[TUIRoomEngine sharedInstance] getExtension: TUIExtensionTypeConferenceListManager];
TUIConferenceInfo * conferenceInfo = [[TUIConferenceInfo alloc] init];
conferenceInfo.basicRoomInfo.roomId = @"111111"; // 请替换 @"111111" 为您自定义的房间号
conferenceInfo.reminderSecondsBeforeStart = 600; //请替换 600 为您自定义的会前提醒时间
[manager scheduleConference:conferenceInfo onSuccess:^{
NSLog(@"ScheduleConference success");
} onError:^(TUIError code, NSString * _Nonnull message) {
NSLog(@"ScheduleConference failed, code:%ld, message:%@", (long)code, message);
}];
}
说明:
如果您在接入和使用过程有任何需要或者反馈,您可以联系:info_rtc@tencent.com。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈