tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

Unreal Engine

PDF
聚焦模式
字号
最后更新时间: 2025-10-20 14:48:45

操作步骤

步骤1: 集成 TIMPush

下载 TIMPush 并拷贝到项目的 Plugins 目录下,在项目主模块的 Build.cs 文件中,引入 TIMPush。
拷贝目录
引入插件



步骤2: 推送参数配置

iOS
Android
请将您在厂商配置步骤中,获取到的 iOS APNs 推送证书, 上传至 Chat 控制台。
Chat 控制台会为您分配一个证书 ID,见下图:

设置 businessID:
请在 UE4 Editor 中打开“项目设置”,搜索查找 Additional Plist Data 并将下面文本修改后复制进入文本框中,其中 YourBusinessID 是必填项,而 YourGroupID 是当您需要统计推送的抵达和点击数据时需要修改的值
<key>businessID</key><string>YourBusinessID</string><key>TIMPushAppGroupID</key><string>YourGroupID</string>

开启远程推送能力:
完成证书 ID 配置之后,您需要开启应用的 Push Notifications 能力:
如果您的 UE 引擎是从源代码自行编译构建的,您可以通过 “项目设置 > iOS 中勾选 Enable Remote Notifications Support” 来开启对应能力;
如果您的 UE 引擎是从 Epic Game 下载的,您可以通过打开 “<proj_dir>/Config/DefaultEngine.ini” ,在脚本的 IOSRuntimeSettings 中添加:
// Some code
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableRemoteNotificationsSupport=True
或者,您也可以选择在项目根目录中使用 Xcode 打开 UE 生成的 YourProject.xcworkspace,在 Project > Target 中,点击 Signing & Capabilities 选项,点击左上角 Capability,搜索添加 Push Notifications 能力到您的项目中


完成控制台厂商推送信息填写后,下载并添加配置文件到工程。将下载的 timpush-configs.json 文件添加到 TIMPush 的 Source/ThirdParty/TIMPushLibrary/Android/TIMPush/Assets 目录下。
下载配置文件
拷贝路径






步骤3: 客户端厂商配置

iOS
Android
iOS 端无需进行此步骤。
APL 相关配置 TIMPush 已配置好,只需要替换成应用自己的配置信息即可。TIMPush_APL.xml 路径在: /Plugins/TIMPush/Source/TIMPush/


1. 推送包集成配置

<buildGradleAdditions>
<insert>
dependencies {
// 版本号 “VERSION” 请前往 更新日志 中获取配置。
// 推送主包必须要集成
implementation 'com.tencent.timpush:tpush:VERSION'
// 按照需要集成对应厂商
implementation 'com.tencent.timpush:huawei:VERSION'
implementation 'com.tencent.timpush:xiaomi:VERSION'
implementation 'com.tencent.timpush:oppo:VERSION'
implementation 'com.tencent.timpush:vivo:VERSION'
implementation 'com.tencent.timpush:honor:VERSION'
implementation 'com.tencent.timpush:meizu:VERSION'
implementation 'com.tencent.timpush:fcm:VERSION'
}
</insert>
</buildGradleAdditions>

2. vivo 和荣耀适配 (不接入该厂商不需要关注)

根据 vivo 和荣耀厂商接入指引,需要将 APPID 和 APPKEY 添加到配置文件中,否则会出现编译问题。
<buildGradleAdditions>
<insert>
android {
defaultConfig {
manifestPlaceholders = [
"VIVO_APPKEY" : "xxxxxx", // VIVO AppKey
"VIVO_APPID" : "xxxxxx", // VIVO AppId
"HONOR_APPID" : "xxxxxx" // Honor AppId
]
}
}
</insert>
</buildGradleAdditions>

3. 华为、荣耀和 Google FCM 适配

按照厂商方法,集成对应的 plugin 和 json 配置文件。
注意:
以下荣耀的适配仅 7.7.5283 及以上版本需要配置。
3.1 下载 json 配置文件,添加到插件 TIMPush 目录 Source/ThirdParty/TIMPushLibrary/Android/TIMPush/ 目录下。
华为
荣耀
Google FCM
目标路径













3.2 plugin 相关配置已配置好,可根据需求增减和适配版本。
<baseBuildGradleAdditions>
<insert>
allprojects {
repositories {
mavenCentral()
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
maven { url "https://mirrors.tencent.com/repository/maven/liteavsdk/" }
maven { url 'https://developer.huawei.com/repo/' }
maven { url 'https://mirrors.tencent.com/repository/maven/SensitiveScan' }
maven { url 'https://developer.hihonor.com/repo' }
}
}
</insert>
</baseBuildGradleAdditions>

<buildscriptGradleAdditions>
<insert>
repositories {
mavenCentral()
maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }
maven { url "https://mirrors.tencent.com/repository/maven/liteavsdk/" }
maven { url 'https://developer.huawei.com/repo/' }
maven { url 'https://mirrors.tencent.com/repository/maven/SensitiveScan' }
maven { url 'https://developer.hihonor.com/repo' }
}
dependencies {
classpath 'com.google.gms:google-services:4.4.3' // FCM Plugin
classpath 'com.huawei.agconnect:agcp:1.9.1.300' // Huawei Plugin
classpath 'com.hihonor.mcs:asplugin:2.0.1.300' // Honor Plugin
}
</insert>
</buildscriptGradleAdditions>

<buildGradleAdditions>
<insert>
apply plugin: 'com.google.gms.google-services' // FCM Plugin
apply plugin: 'com.huawei.agconnect' // Huawei Plugin
apply plugin: 'com.hihonor.mcs.asplugin' // Honor Plugin
</insert>
</buildGradleAdditions>

步骤4:处理消息点击回调,并解析参数

如果您需要自定义解析收到的远程推送,您可按照如下方法实现:
注意:
1. 注册回调时机建议放在程序入口函数中。
2. 控制台配置点击后续动作按如下配置,选择:打开应用内指定界面,请勿修改使用默认值。

class DemoPushListener: public PushListener {
public:
using OnRecvPushMessageCallback = std::function<void(const PushMessage &)>;
using OnRevokePushMessageCallback = std::function<void(const FString &)>;
using OnNotificationClickedCallback = std::function<void(const FString &)>;
void SetCallback(OnRecvPushMessageCallback recv_cb, OnRevokePushMessageCallback revoke_cb, OnNotificationClickedCallback clicked_cb) {
on_recv_message_callback_ = std::move(recv_cb);
on_revoke_message_callback_ = std::move(revoke_cb);
on_notification_clicked_callback_ = std::move(clicked_cb);
}
void OnRecvPushMessage(const PushMessage& message) override {
if (on_recv_message_callback_) {
on_recv_message_callback_(message);
}
}
void OnRevokePushMessage(const FString& messageID) override {
if (on_revoke_message_callback_) {
on_revoke_message_callback_(messageID);
}
}
void OnNotificationClicked(const FString& ext) override {
if (on_notification_clicked_callback_) {
on_notification_clicked_callback_(ext);
}
}
private:
OnRecvPushMessageCallback on_recv_message_callback_;
OnRevokePushMessageCallback on_revoke_message_callback_;
OnNotificationClickedCallback on_notification_clicked_callback_;
};

auto listener = new DemoPushListener();
listener.SetCallback(
[](const PushMessage& message) {
UE_LOG(LogTemp, Warning, TEXT("Push Called in OnRecvPushMessage. Message title: %s, desc: %s, ext: %s, id: %s"), *message.GetTitle(), *message.GetDesc(), *message.GetExt(), *message.GetMessageID());
},
[](const FString& messageID) {
UE_LOG(LogTemp, Warning, TEXT("Push Called in OnRevokePushMessage. Message id: %s"), *messageID);
},
[](const FString& ext) {
UE_LOG(LogTemp, Warning, TEXT("Push Called in OnNotificationClicked. Message ext: %s"), *ext);
}
);
PushManager::GetInstance()->AddPushListener(&DEMO_PUSH_LISTENER);

步骤5:注册推送插件

调用接口推送注册成功后,就可以收到离线推送通知了。
template <class T>
class DemoPushValueCallback : public PushValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T &)>;
using ErrorCallback = std::function<void(int, const FString &)>;
DemoPushValueCallback<T>() = default;
~DemoPushValueCallback() override = default;
void SetCallback(SuccessCallback success_cb, ErrorCallback error_cb) {
success_callback_ = std::move(success_cb);
error_callback_ = std::move(error_cb);
}
void OnSuccess(const T &value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const FString &error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}
private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

auto callback = new DemoPushValueCallback<FString>();
callback->SetCallback(
[=](const FString &value) {
UE_LOG(LogTemp, Warning, TEXT("Push succeed, device token is %s"), *value);
delete callback;
},
[=](int error_code, const FString &error_message) {
UE_LOG(LogTemp, Warning, TEXT("Push failed erro code: %d, desc: %s"), error_code, *error_message);
delete callback;
}
);
PushManager::GetInstance()->RegisterPush(您的 sdkAppId, "您的 appKey", callback);

步骤6:消息推送触达统计

如果您需要统计触达数据,请按照如下完成配置:
华为
荣耀
vivo
魅族
iOS

回执地址:
Singapore : https://apisgp.im.qcloud.com/v3/offline_push_report/huawei
Korea: https://apikr.im.qcloud.com/v3/offline_push_report/huawei
USA: https://apiusa.im.qcloud.com/v3/offline_push_report/huawei
Germany: https://apiger.im.qcloud.com/v3/offline_push_report/huawei
Indonesia: https://apiidn.im.qcloud.com/v3/offline_push_report/huawei
China: https://api.im.qcloud.com/v3/offline_push_report/huawei
注意:
华为推送证书 ID <= 11344 ,使用华为推送 v2 版本接口,不支持触达和点击回执,请重新生成更新证书 ID。

回执地址:
Singapore : https://apisgp.im.qcloud.com/v3/offline_push_report/honor
Korea: https://apikr.im.qcloud.com/v3/offline_push_report/honor
USA: https://apiusa.im.qcloud.com/v3/offline_push_report/honor
Germany: https://apiger.im.qcloud.com/v3/offline_push_report/honor
Indonesia: https://apiidn.im.qcloud.com/v3/offline_push_report/honor
China: https://api.im.qcloud.com/v3/offline_push_report/honor
回调地址配置
回执 ID 配置 IM 控制台



回执地址:https://api.im.qcloud.com/v3/offline_push_report/vivo

回执地址:
Singapore :https://apisgp.im.qcloud.com/v3/offline_push_report/vivo
Korea:
https://apikr.im.qcloud.com/v3/offline_push_report/vivo
USA: https://apiusa.im.qcloud.com/v3/offline_push_report/vivo
Germany: https://apiger.im.qcloud.com/v3/offline_push_report/vivo
Indonesia: https://apiidn.im.qcloud.com/v3/offline_push_report/vivo
China:
https://api.im.qcloud.com/v3/offline_push_report/vivo
打开回执开关
配置回执地址






回执地址:
Singapore : https://apisgp.im.qcloud.com/v3/offline_push_report/meizu
Korea: https://apikr.im.qcloud.com/v3/offline_push_report/meizu
USA: https://apiusa.im.qcloud.com/v3/offline_push_report/meizu
Germany: https://apiger.im.qcloud.com/v3/offline_push_report/meizu
Indonesia: https://apiidn.im.qcloud.com/v3/offline_push_report/meizu
China: https://api.im.qcloud.com/v3/offline_push_report/meizu
注意:
打开回执开关后,请务必确保回执地址正确配置。不配置或者配置地址错误,都会影响推送功能。

1. 如果您需要统计推送的抵达和点击数据,您需要在上文的 “项目设置” 中将“YourGroupID”修改为您自己的 App Group ID (生成方式可参见 厂商配置-生成 App GroupID)。
2. 在完成 App Group ID 的配置后,您需要使用 Xcode 打开 UE 在项目目录生成的 xcworkspace 文件,并参考 厂商配置-生成 App GroupID-步骤四 中的方法配置您的 App Group ID。之后,请在 Xcode 项目中的 Editor - Add Target 中开启 Notification Service Extension Target。
3. 您还需要将项目根目录的 Plugins-TIMPush-Source-ThirdParty-TIMPushLibrary-iOS 路径中的两个 framework 压缩包解压缩,并在Xcode项目中将内部的 .framework 文件夹添加到您的 pushservice target 之中。
4. 您现在可以在 Notification Service Extension-didReceiveNotificationRequest:withContentHandler: 方法中调用推送抵达率统计函数:
@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
//appGroup 标识当前主 APP 和 Extension 之间共享的 APP Group,需要在主 APP 的 Capability 中配置 App Groups 能力。
//格式为group + [主bundleID]+ key
//如group.com.tencent.im.pushkey
NSString * appGroupID = kTIMPushAppGroupKey;
__weak typeof(self) weakSelf = self;
[TIMPushManager handleNotificationServiceRequest:request appGroupID:appGroupID callback:^(UNNotificationContent *content) {
weakSelf.bestAttemptContent = [content mutableCopy];
// Modify the notification content here...
// self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
weakSelf.contentHandler(weakSelf.bestAttemptContent);
}];
}

@end
注意:
1. 上报推送触达数据,需要开启 mutable-content 开关来支持 iOS 10 的 Extension 功能。

2. 数据详情可在推送数据页面查看,推送数据页面仅限 购买推送插件 后使用。
其余支持厂商不需要配置,FCM 暂不支持推送统计功能。
恭喜您已经完成了推送插件的接入,需要提醒您:推送插件试用或购买到期后,将自动停止提供推送服务(包括普通消息离线推送、全员/标签推送等服务)。为避免影响您业务正常使用,请提前 购买/续费
说明:
1. 厂商离线通道都有 消息分类机制,不同类型也会有不同的推送策略。
如果推送需求属于 IM 类型推送,想要推送及时触达,需要按照厂商规则设置自己应用为对应的推送类型,会归类为高优先级的系统消息类型或者重要消息类型。
反之,离线推送会有数量和频次的限制,可能不会及时推送到设备。
2. 接入完成收不到推送,请先自助使用 排查工具 查看下具体原因。推送指标数据查看,请使用 数据统计 查询。
3. 全员/标签推送功能请参见:REST API 接口 - 发起全员/标签推送


帮助和支持

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

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

文档反馈