本文将介绍如何在 Android 工程中集成 TIMPush。
前提条件
方式1:AI 集成
通过 npx 安装 @tencent-rtc/trtc-push-skill 到本地 AI IDE 中,辅助完成 TIMPush 离线推送集成。安装后,您可以直接向 AI 输入“集成 Android 离线推送”等需求,AI 将根据项目类型引导您完成环境检测、厂商通道配置、凭据填写、代码接入和验证等步骤。详情可参考 AI Coding。
方式2:手动集成
步骤1:下载并添加 timpush-configs 配置文件
按需完成厂商后台、腾讯云控制台配置后,在腾讯云控制台下载
timpush-configs.json,并将其放置在应用的 assets 目录下。下载路径为:控制台 > 推送服务 Push > 推送设置 > 厂商配置 > 下载证书:
步骤2:集成 TIMPush SDK
在应用模块的
build.gradle 的 dependencies 中添加 TIMPush SDK。dependencies {implementation 'com.tencent.timpush:timpush:latest'}
步骤3:集成厂商通道 SDK
在应用模块
build.gradle 的 dependencies 中追加小米通道包:implementation 'com.tencent.timpush:xiaomi:latest'
1. 添加厂商配置文件
在华为 AppGallery Connect 下载
agconnect-services.json,添加到应用模块根目录:app/agconnect-services.json。2. 配置 Gradle 插件
追加厂商 Maven 仓库
在
settings.gradle 的 pluginManagement > repositories 和 dependencyResolutionManagement > repositories 中追加:maven { url "https://developer.huawei.com/repo/" }
在项目级
build.gradle 的 buildscript > repositories,以及 settings.gradle 的 dependencyResolutionManagement > repositories(Gradle 7.0)或 allprojects > repositories(Gradle 7.0 以下)中追加:maven { url "https://developer.huawei.com/repo/" }
配置项目级插件依赖
在项目级
build.gradle 的 buildscript > repositories 中包含 google() 和华为仓库。buildscript {repositories {google()mavenCentral()gradlePluginPortal()maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }maven { url "https://developer.huawei.com/repo/" }}dependencies {// 请与项目当前 Android Gradle Plugin 版本保持一致。classpath 'com.android.tools.build:gradle:<AGP_VERSION>'// 如果项目使用 Kotlin Android 插件,请与项目当前 Kotlin Gradle Plugin 版本保持一致。classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:<KOTLIN_VERSION>'// 华为 AGConnect。Gradle 8 / AGP 8 项目不要继续使用 1.6.0.300。classpath 'com.huawei.agconnect:agcp:1.9.1.301'}}
1. 请将
<AGP_VERSION>替换为项目当前使用的 Android Gradle Plugin 版本,例如 8.9.1。2. 请将
<KOTLIN_VERSION> 替换为项目当前使用的 Kotlin Gradle Plugin 版本;如果项目未使用 Kotlin Android 插件,可删除该行。警告:
对于 Gradle 8 / AGP 8 项目,请不要继续使用
com.huawei.agconnect:agcp:1.6.0.300。AGP 8.0 已移除 Transform API,旧版 AGC 插件存在兼容风险,建议使用 com.huawei.agconnect:agcp:1.9.1.301 或更高已验证版本。在项目级
build.gradle 的 buildscript > dependencies 中追加:classpath 'com.huawei.agconnect:agcp:1.6.0.300'
如果旧工程已升级到 Gradle 8 / AGP 8,请不要继续使用
1.6.0.300,建议改为 com.huawei.agconnect:agcp:1.9.1.301 或更高已验证版本。在应用模块启用插件
在应用模块的
build.gradle 中启用华为插件。plugins {// 华为 AGConnect。id 'com.huawei.agconnect'}// 或:apply plugin: 'com.huawei.agconnect'
3. 集成 TIMPush 厂商依赖
在应用模块
build.gradle 的 dependencies 中追加华为通道包:implementation 'com.tencent.timpush:huawei:latest'
在应用模块
build.gradle 的 dependencies 中追加 OPPO 通道包:implementation 'com.tencent.timpush:oppo:latest'
1. 集成 TIMPush 厂商依赖
在应用模块
build.gradle 的 dependencies 中追加 vivo 通道包:implementation 'com.tencent.timpush:vivo:latest'
2. 配置 manifestPlaceholders 和 AndroidManifest.xml
在
manifestPlaceholders 或直接在 AndroidManifest.xml 中配置 meta-data。在
manifestPlaceholders 里添加条目:android {defaultConfig {manifestPlaceholders = ["VIVO_APPKEY": "您应用分配的证书 APPKEY","VIVO_APPID" : "您应用分配的证书 APPID"]}}
在
AndroidManifest.xml 中配置 meta-data:<application><!-- vivo begin --><meta-datatools:replace="android:value"android:name="com.vivo.push.api_key"android:value="您应用分配的证书 APPKEY" /><meta-datatools:replace="android:value"android:name="com.vivo.push.app_id"android:value="您应用分配的证书 APPID" /><!-- vivo end --></application>
如果使用
tools:replace,请确认 manifest 根节点包含 tools 命名空间:<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"></manifest>
1. 添加厂商配置文件
在荣耀开发者服务平台下载
mcs-services.json,添加到应用模块根目录:app/mcs-services.json。2. 配置 Gradle 插件
追加厂商 Maven 仓库
在
settings.gradle 的 pluginManagement > repositories 和 dependencyResolutionManagement > repositories 中追加:maven { url "https://developer.hihonor.com/repo" }
在项目级
build.gradle 的 buildscript > repositories,以及allprojects > repositories中追加:maven { url "https://developer.hihonor.com/repo" }
配置项目级插件依赖
请在项目级 Gradle 文件中额外补充
buildscript 配置,并在 dependencies 中声明 com.android.tools.build:gradle。buildscript {repositories {google()mavenCentral()gradlePluginPortal()maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }maven { url "https://developer.hihonor.com/repo" }}dependencies {// 请与项目当前 Android Gradle Plugin 版本保持一致。classpath 'com.android.tools.build:gradle:<AGP_VERSION>'// 如果项目使用 Kotlin Android 插件,请与项目当前 Kotlin Gradle Plugin 版本保持一致。classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:<KOTLIN_VERSION>'// 荣耀 Push。classpath 'com.hihonor.mcs:asplugin:2.0.1.300'}}
1. 请将
<AGP_VERSION>替换为项目当前使用的 Android Gradle Plugin 版本。2. 请将
<KOTLIN_VERSION> 替换为项目当前使用的 Kotlin Gradle Plugin 版本;如果项目未使用 Kotlin Android 插件,可删除该行。在项目级
build.gradle 的 buildscript > dependencies 中追加:classpath 'com.hihonor.mcs:asplugin:2.0.1.300'
在应用模块启用插件
完成项目级插件依赖配置后,还需要在应用模块的
build.gradle 中启用荣耀插件。plugins {// 荣耀 Push。id 'com.hihonor.mcs.asplugin'}// 或:apply plugin: 'com.hihonor.mcs.asplugin'
3. 集成 TIMPush 厂商依赖
在应用模块
build.gradle 的 dependencies 中追加荣耀通道包:implementation 'com.tencent.timpush:honor:latest'
4. 配置 manifestPlaceholders 和 AndroidManifest.xml
在
manifestPlaceholders 或 AndroidManifest.xml 中配置 meta-data。android {defaultConfig {manifestPlaceholders = ["HONOR_APPID": "您应用分配的证书 APPID"]}}
<application><!-- honor begin --><meta-datatools:replace="android:value"android:name="com.hihonor.push.app_id"android:value="您应用分配的证书 APPID" /><!-- honor end --></application>
如果使用
tools:replace,请确认 manifest 根节点包含 tools 命名空间:<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"></manifest>已添加的公共仓库基础上
在应用模块
build.gradle 的 dependencies 中追加魅族通道包:implementation 'com.tencent.timpush:meizu:latest'
1. 添加厂商配置文件
在 Firebase 控制台下载
google-services.json,添加到应用模块根目录:app/google-services.json。2. 配置 Gradle 插件
配置项目级插件依赖
在项目级
build.gradle 的 buildscript > repositories 中包含 google() 等仓库:buildscript {repositories {google()mavenCentral()gradlePluginPortal()maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }}dependencies {// 请与项目当前 Android Gradle Plugin 版本保持一致。classpath 'com.android.tools.build:gradle:<AGP_VERSION>'// 如果项目使用 Kotlin Android 插件,请与项目当前 Kotlin Gradle Plugin 版本保持一致。classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:<KOTLIN_VERSION>'// Google FCM。4.4.2 要求 AGP 7.3.0 及以上,更低的 AGP 请改用 4.3.15。classpath 'com.google.gms:google-services:4.4.2'}}
1. 请将
<AGP_VERSION>替换为项目当前使用的 Android Gradle Plugin 版本。2. 请将
<KOTLIN_VERSION> 替换为项目当前使用的 Kotlin Gradle Plugin 版本;如果项目未使用 Kotlin Android 插件,可删除该行。说明:
com.google.gms:google-services:4.4.2 要求 AGP 7.3.0 及以上;如果项目的 AGP 低于 7.3.0,请改用与当前 AGP 兼容的 Google Services Gradle Plugin 版本,例如 4.3.15。在项目级
build.gradle 的 buildscript > dependencies 中追加:classpath 'com.google.gms:google-services:4.3.15'
在应用模块启用插件
在应用模块的
build.gradle 中启用 Google Services 插件。plugins {// Google FCM。id 'com.google.gms.google-services'}// 或:apply plugin: 'com.google.gms.google-services'
3. 集成 TIMPush 厂商依赖
在应用模块
build.gradle 的 dependencies 中追加 FCM 通道包:implementation 'com.tencent.timpush:fcm:latest'
步骤4:注册推送服务
调用 registerPush
import android.util.Log;import com.tencent.timpush.TIMPushCallback;import com.tencent.timpush.TIMPushManager;// 在用户同意隐私政策后调用private void registerTIMPush() {int sdkAppId = 0; // TODO: Replace with your SDKAppID.String appKey = "您的客户端密钥"; // TODO: Replace with your Push Key.TIMPushManager.getInstance().registerPush(this, sdkAppId, appKey, new TIMPushCallback<Object>() {@Overridepublic void onSuccess(Object data) {Log.d("TIMPush", ">>>>> registerPush success, data = " + data);// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息TIMPushManager.getInstance().getRegistrationID(new TIMPushCallback<Object>() {@Overridepublic void onSuccess(Object data) {String registrationID = (String) data;Log.d("TIMPush", ">>>>> getRegistrationID success, registrationID = " + registrationID);}@Overridepublic void onError(int errCode, String errMsg, Object data) {Log.e("TIMPush", ">>>>> getRegistrationID failed, errCode = " + errCode+ ", errMsg = " + errMsg);}});}@Overridepublic void onError(int errCode, String errMsg, Object data) {Log.e("TIMPush", ">>>>> registerPush failed, errCode = " + errCode+ ", errMsg = " + errMsg);}});}
import android.util.Logimport com.tencent.timpush.TIMPushCallbackimport com.tencent.timpush.TIMPushManager// 在用户同意隐私政策后调用private fun registerTIMPush() {val sdkAppId = 0 // TODO: Replace with your SDKAppID.val appKey = "您的客户端密钥" // TODO: Replace with your Push Key.TIMPushManager.getInstance().registerPush(this, sdkAppId, appKey, object : TIMPushCallback<Any?>() {override fun onSuccess(data: Any?) {Log.d("TIMPush", ">>>>> registerPush success, data = $data")// 获取并打印出 registrationID,方便后续根据 registrationID 发送离线推送消息TIMPushManager.getInstance().getRegistrationID(object : TIMPushCallback<Any?>() {override fun onSuccess(data: Any?) {Log.d("TIMPush", ">>>>> getRegistrationID success, registrationID = $data")}override fun onError(errCode: Int, errMsg: String?, data: Any?) {Log.e("TIMPush", ">>>>> getRegistrationID failed, errCode = $errCode, errMsg = $errMsg")}})}override fun onError(errCode: Int, errMsg: String?, data: Any?) {Log.e("TIMPush", ">>>>> registerPush failed, errCode = $errCode, errMsg = $errMsg")}})}
步骤5:测试推送链路
完成上述集成步骤后,需要通过发送测试消息验证链路是否打通,请确认:
1. Android 13 及以上已允许通知权限;
2. Android 8.0 及以上目标通知渠道已开启(包括横幅、锁屏、声音开关);
3. App 已置于后台或杀进程。
发送测试消息可以采用下面几种方法:
仅集成 TIMPush 的用户,建议优先使用腾讯云控制台接入测试能力验证离线推送。
操作路径:腾讯云控制台 > 推送服务 Push > 接入测试。在接入测试页面,可以指定
registrationID 发送离线推送测试。V2TIMOfflinePushInfo pushInfo = new V2TIMOfflinePushInfo();pushInfo.setTitle("推送标题");pushInfo.setDesc("推送内容");pushInfo.setExt("业务自定义 ext".getBytes());V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, userID, null, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, pushInfo,new V2TIMSendCallback<V2TIMMessage>() {@Overridepublic void onProgress(int progress) {}@Overridepublic void onError(int code, String desc) {Log.e("TIMPush", ">>>>> sendMessage failed, code = " + code + ", desc = " + desc);}@Overridepublic void onSuccess(V2TIMMessage message) {Log.d("TIMPush", ">>>>> sendMessage success, msgID = " + message.getMsgID());}});
sendMessage 属于 IMSDK 消息发送能力。仅集成 TIMPush 的用户不需要为了验证离线推送而额外接入完整 Chat 初始化、登录和消息发送流程。