Guía de integración de canales de fabricantes
Guía de integración del SDK de canal de fabricantes
Este documento tiene como objetivo guiar a los clientes en la integración de los SDK de diversos canales de fabricantes mediante un método de integración automatizada, para lograr notificaciones push sin conexión.
Para descargar el SDK, consulte Descarga de recursos.
Para conocer el número de la versión más reciente del SDK, consulte el Registro de cambios.
Requisitos previos
- Ya se ha integrado el canal Engagelab.
- Antes de integrar el SDK del fabricante, se deben solicitar los parámetros correspondientes del canal del fabricante. Para más detalles, consulte la Guía de solicitud de parámetros del canal del fabricante.
Archivos de recursos
- Colocar el icono de notificación denominado
mtpush_notification_icon.pngenres/drawable/. Si no se configura, el SDK utilizará el icono de la aplicación y, en versiones superiores de Android, pueden producirse problemas de visualización.
Guía de integración del canal Xiaomi
Configurar compatibilidad con mavenCentral
Configurar la compatibilidad con mavenCentral en el archivo gradle principal del directorio raíz del proyecto. (Por lo general, los proyectos nuevos vienen configurados con esta compatibilidad de forma predeterminada).
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Configurar dependencias
En la sección dependencies del archivo gradle del módulo de la aplicación, añadir el siguiente código:
dependencies {
// La versión del fabricante debe coincidir con la versión del SDK de Engagelab
implementation 'com.engagelab.plugin:mi:5.x.x'
// Para el fabricante Xiaomi, a partir de la versión 5.4.0 del SDK, es necesario integrar "com.engagelab.plugin:mi_th_push"; no es necesario antes de la versión 5.4.0.
implementation 'com.engagelab.plugin:mi_th_push:5.x.x'
}
Configurar parámetros
En la sección defaultConfig del archivo gradle del módulo de la aplicación, añadir el siguiente código:
manifestPlaceholders = [
// Establecer variables en el archivo manifest.xml
XIAOMI_APPKEY : "MI-Your Xiaomi app's APPID", // appkey registrada en la plataforma Xiaomi
XIAOMI_APPID : "MI-Your Xiaomi app's APPKEY", // appid registrada en la plataforma Xiaomi
]
Configurar ofuscación de código
Si se utiliza proguard, añadir el siguiente contenido al archivo de configuración para evitar que informes de advertencias falsas impidan una compilación correcta:
-dontwarn com.xiaomi.push.**
-keep class com.xiaomi.push.** { *; }
Validación de integración correcta
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTMiBusiness] support xiaomi push
D [MTMiBusiness] onTokenSuccess:get token is Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=1,
token=Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj
region=NULL
isUserSettings=false
}
Método de prueba del canal Xiaomi
- Ir a [EngageLab Console] -> [AppPush] -> [Basic Settings] -> [Integration Settings], introducir los parámetros AppKey, AppID, AppSecret y hacer clic en "Save".
- Tras finalizar el proceso de la app, realizar un push. Si se recibe el push, la integración del canal del fabricante se ha realizado correctamente.
Guía de integración del canal Huawei
Configurar compatibilidad con mavenCentral
Configure mavenCentral y la dependencia de agconnect en el archivo Gradle principal de la raíz del proyecto.
Groovy (build.gradle):
buildscript {
repositories {
google()
mavenCentral()
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
classpath 'com.huawei.agconnect:agcp:1.9.1.301'
}
}
allprojects {
repositories {
google()
mavenCentral()
maven {url 'https://developer.huawei.com/repo/'}
}
}
Kotlin DSL (build.gradle.kts):
buildscript {
repositories {
google()
mavenCentral()
maven { url = uri("https://developer.huawei.com/repo/") }
}
dependencies {
classpath("com.huawei.agconnect:agcp:1.9.1.301")
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url = uri("https://developer.huawei.com/repo/") }
}
}
(Opcional) Si utiliza Gradle 8.0, añada la siguiente configuración al archivo gradle.properties del proyecto:
Nota: Este paso es necesario si utiliza una versión del complemento AGC anterior a 1.9.1.300 que no sea compatible con Gradle 8.0.
apmsInstrumentationEnabled=false
Añadir el complemento de Huawei
Añada la línea apply plugin al final del archivo build.gradle del módulo de la app para habilitar el complemento de Gradle:
Groovy (build.gradle):
apply plugin: 'com.huawei.agconnect'
Kotlin DSL (build.gradle.kts):
plugins {
id("com.huawei.agconnect")
}
Configurar dependencias
Añada el siguiente código al bloque dependencies del archivo Gradle del módulo de la app. Puede seleccionar una versión más reciente según las versiones publicadas por Huawei:
Groovy (build.gradle):
dependencies {
implementation 'com.huawei.hms:push:6.13.0.300'
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:huawei:5.x.x'
}
Kotlin DSL (build.gradle.kts):
dependencies {
implementation("com.huawei.hms:push:6.13.0.300")
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:huawei:5.x.x")
}
Configurar el archivo agconnect-services.json
Consulte Guía para solicitar parámetros de los canales de fabricantes para obtener el archivo agconnect-services.json y colocarlo en el directorio app.

Configurar el certificado de firma
Configure en build.gradle la firma correspondiente a la huella del certificado registrada en la consola de Huawei.
Los servicios HMS requieren que la app esté firmada para registrarla correctamente. Puede obtener la huella del certificado en el terminal con
keytool -list -v -keystore keystorefileName.
Groovy (build.gradle):
signingConfigs {
release {
storeFile file("release.keystore")//Ruta del archivo de firma
storePassword "123456"
keyAlias "android.keystore"
keyPassword "123456"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
minifyEnabled false
signingConfig signingConfigs.release
}
}
Kotlin DSL (build.gradle.kts):
signingConfigs {
create("release") {
storeFile = file("release.keystore") // Ruta del archivo de firma
storePassword = "123456"
keyAlias = "android.keystore"
keyPassword = "123456"
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
signingConfig = signingConfigs.getByName("release")
}
getByName("debug") {
isMinifyEnabled = false
signingConfig = signingConfigs.getByName("release")
}
}
Configurar la ofuscación de código
Si utiliza ProGuard, añada lo siguiente al archivo de configuración para evitar que advertencias incorrectas impidan compilar:
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
Si utiliza AndResGuard, añada su lista de permitidos al archivo de configuración de ofuscación.
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"
Comprobar el resultado de la integración
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTHuaweiBusiness] support huawei push
D [MTHuaweiBusiness] onTokenSuccess:get token is IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=2,
token=IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA
region=NULL
isUserSettings=false
}
Probar el canal Huawei
- Abra Consola de EngageLab > AppPush > Configuración básica > Configuración de integración. Introduzca AppID y AppSecret y haga clic en Guardar.
2. Finalice el proceso de la app y envíe una notificación push. Si la recibe, el canal del fabricante se ha integrado correctamente.
Guía de integración del canal Meizu
Configurar compatibilidad con mavenCentral
Configure mavenCentral en el archivo Gradle principal de la raíz del proyecto. Los proyectos nuevos ya lo admiten de forma predeterminada.
Groovy (build.gradle):
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Kotlin DSL (build.gradle.kts):
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Configurar dependencias
Añada el siguiente código al bloque dependencies del archivo Gradle del módulo de la app:
Groovy (build.gradle):
dependencies {
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:meizu:5.x.x'
// Desde el SDK 5.2.0, Meizu requiere "com.engagelab.plugin:meizu_th_push". No se necesita en versiones anteriores a 5.2.0
// La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:meizu_th_push:5.x.x' // Añada esta línea a partir de v5.2.0
}
Kotlin DSL (build.gradle.kts):
dependencies {
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:meizu:5.x.x")
// Desde el SDK 5.2.0, Meizu requiere "com.engagelab.plugin:meizu_th_push". No se necesita en versiones anteriores a 5.2.0
// La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:meizu_th_push:5.x.x") // Añada esta línea a partir de v5.2.0
}
Configurar parámetros
Añada el siguiente código al bloque defaultConfig del archivo Gradle del módulo de la app:
Los parámetros de Meizu deben llevar el prefijo "MZ-".
Groovy (build.gradle):
manifestPlaceholders = [
// Configurar las variables de manifest.xml
MEIZU_APPKEY : "MZ-SU_APPKEY_MEIZU", // appkey registrado en Meizu
MEIZU_APPID : "MZ-SU_APPID_MEIZU", // appid registrado en Meizu
]
Kotlin DSL (build.gradle.kts):
manifestPlaceholders.putAll(mapOf(
// Configurar las variables de manifest.xml
"MEIZU_APPKEY" to "MZ-SU_APPKEY_MEIZU", // appkey registrado en Meizu
"MEIZU_APPID" to "MZ-SU_APPID_MEIZU" // appid registrado en Meizu
))
Configurar la ofuscación de código
Si utiliza ProGuard, añada lo siguiente al archivo de configuración para evitar que advertencias incorrectas impidan compilar:
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }
Comprobar el resultado de la integración
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTMeizuBusiness] support meizu push
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=3,
token=DDI5c060475064d447b40670206756d73605705037205
region=NULL
isUserSettings=false
}
Si el canal Meizu no obtiene el token, pruebe a deshabilitar R8 añadiendo android.enableR8 = false a gradle.properties.
Probar el canal Meizu
Abra Consola de EngageLab > AppPush > Configuración básica > Configuración de integración. Introduzca AppKey, AppID y AppSecret y haga clic en Guardar.

Finalice el proceso de la app y envíe una notificación push. Si la recibe, el canal del fabricante se ha integrado correctamente.
Guía de integración del canal vivo
Configurar compatibilidad con mavenCentral
Configure mavenCentral en el archivo Gradle principal de la raíz del proyecto. Los proyectos nuevos ya lo admiten de forma predeterminada.
Groovy (build.gradle):
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Kotlin DSL (build.gradle.kts):
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Configurar dependencias
Añada el siguiente código al bloque dependencies del archivo Gradle del módulo de la app:
Groovy (build.gradle):
dependencies{
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:vivo:5.x.x'
}
Kotlin DSL (build.gradle.kts):
dependencies {
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:vivo:5.x.x")
}
Configurar parámetros
Añada el siguiente código al bloque defaultConfig del archivo Gradle del módulo de la app:
Groovy (build.gradle):
manifestPlaceholders=[
VIVO_APPKEY : "SU_APPKEY_VIVO", // appkey registrado en vivo
VIVO_APPID : "SU_APPID_VIVO", // appid registrado en vivo
]
Kotlin DSL (build.gradle.kts):
manifestPlaceholders.putAll(mapOf(
"VIVO_APPKEY" to "SU_APPKEY_VIVO", // appkey registrado en vivo
"VIVO_APPID" to "SU_APPID_VIVO" // appid registrado en vivo
))
Comprobar el resultado de la integración
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTVivoBusiness] support vivo push
D [MTVivoBusiness] getRegId onTokenSuccess:get token is v2-CRrhwCeK9eY77H6m_EeUqz3zGqmbh0LJPnhvsF0V-ia9OmMHQP9FGCjZ
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=5,
token=v2-CRrhwCeK9eY77H6m_EeUqz3zGqmbh0LJPnhvsF0V-ia9OmMHQP9FGCjZ
region=NULL
isUserSettings=false
}
Configurar la ofuscación de código
Si utiliza ProGuard, añada lo siguiente al archivo de configuración para evitar que advertencias incorrectas impidan compilar:
-dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*; }
-keep class com.vivo.vms.**{*; }
Probar el canal vivo
- Abra Consola de EngageLab > AppPush > Configuración básica > Configuración de integración. Introduzca AppKey, AppID y AppSecret y haga clic en Guardar.
2. Finalice el proceso de la app y envíe una notificación push. Si la recibe, el canal del fabricante se ha integrado correctamente.
Si la app aún no está publicada en vivo, añada dispositivos de prueba en su plataforma de push. Las pruebas solo pueden enviarse mediante la API, especificando el parámetro push_mode.
Insignias de vivo
Antes de utilizar insignias en el canal vivo, solicite a vivo el permiso correspondiente para la app. Si no está habilitado, enviar add_badge puede devolver el código de error 10089.
{
"options": {
"third_party_channel": {
"vivo": {
"add_badge": true
}
}
}
}
Las notificaciones locales de EngageLab y MTPushPrivatesApi.setNotificationBadge/resetNotificationBadge también admiten las insignias del sistema vivo. El SDK declara los permisos necesarios para Funtouch OS y OriginOS; el resultado depende de la versión del sistema, la configuración de insignias del escritorio y los permisos de vivo.
"options": {
"classification": 1,
"third_party_channel": {
"vivo": {
"pushMode": 1, //Opcional, añadido el 2020/09/21. Corresponde a pushMode de vivo: entero 0 para producción, 1 para pruebas; el valor predeterminado es 0
"distribution_new": "pns_mtpush"
}
}
}
Guía de integración del canal OPPO
Configurar compatibilidad con mavenCentral
Configure mavenCentral en el archivo Gradle principal de la raíz del proyecto. Los proyectos nuevos ya lo admiten de forma predeterminada.
Groovy (build.gradle):
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Kotlin DSL (build.gradle.kts):
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
Configurar dependencias
Añada el siguiente código al bloque dependencies del archivo Gradle del módulo de la app:
Groovy (build.gradle):
dependencies{
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:oppo:5.x.x'
implementation 'com.engagelab.plugin:oppo_th_push:5.x.x'
//OPPO requiere todas las dependencias siguientes
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'commons-codec:commons-codec:1.6'
implementation 'androidx.annotation:annotation:1.1.0'
}
Kotlin DSL (build.gradle.kts):
dependencies {
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:oppo:5.x.x")
implementation("com.engagelab.plugin:oppo_th_push:5.x.x")
//OPPO requiere todas las dependencias siguientes
implementation("com.google.code.gson:gson:2.10.1")
implementation("commons-codec:commons-codec:1.6")
implementation("androidx.annotation:annotation:1.1.0")
}
Configurar parámetros
Añada el siguiente código al bloque defaultConfig del archivo Gradle del módulo de la app:
Los parámetros de OPPO deben llevar el prefijo "OP-".
Groovy (build.gradle):
manifestPlaceholders=[
OPPO_APPKEY : "OP-SU_APPKEY_OPPO", // appkey registrado en OPPO
OPPO_APPID : "OP-SU_APPID_OPPO", // appid registrado en OPPO
OPPO_APPSECRET: "OP-SU_APPSECRET_OPPO"//appsecret registrado en OPPO
]
Kotlin DSL (build.gradle.kts):
manifestPlaceholders.putAll(mapOf(
"OPPO_APPKEY" to "OP-SU_APPKEY_OPPO", // appkey registrado en OPPO
"OPPO_APPID" to "OP-SU_APPID_OPPO", // appid registrado en OPPO
"OPPO_APPSECRET" to "OP-SU_APPSECRET_OPPO" // appsecret registrado en OPPO
))
Configurar la ofuscación de código
Si utiliza ProGuard, añada lo siguiente al archivo de configuración para evitar que advertencias incorrectas impidan compilar:
-dontwarn com.coloros.mcsdk.**
-keep class com.coloros.mcsdk.** { *; }
-dontwarn com.heytap.**
-keep class com.heytap.** { *; }
-dontwarn com.mcs.**
-keep class com.mcs.** { *; }
Comprobar el resultado de la integración
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTOppoBusiness] support oppo push
D [MTOppoBusiness] onTokenSuccess:get token is OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=4,
token=OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6
region=NULL
isUserSettings=false
}
Probar el canal OPPO
- Abra Consola de EngageLab > AppPush > Configuración básica > Configuración de integración. Introduzca AppKey, AppID, AppSecret y MasterSecret y haga clic en Guardar.
2. Finalice el proceso de la app y envíe una notificación push. Si la recibe, el canal del fabricante se ha integrado correctamente.
Si la app no está publicada, solicite permisos de prueba de push en la plataforma abierta de OPPO. Cada app puede enviar 1000 mensajes del canal público al día.
Insignias de OPPO
Antes de utilizar insignias en el canal OPPO, solicite a OPPO el permiso de insignias numéricas del escritorio. Sin este permiso, la solicitud al fabricante puede completarse, pero la insignia no tendrá efecto.
{
"options": {
"third_party_channel": {
"oppo": {
"badge_operation_type": 1
}
}
}
}
badge_operation_type=1: incrementa la insignia en 1; puede omitirbadge_message_count.badge_operation_type=0: reemplaza la insignia porbadge_message_count; el valor0la borra.- Las insignias de OPPO se procesan en los servidores del fabricante. La app no necesita integrar código adicional de insignias en el cliente.
Guía de integración del canal FCM
Configurar compatibilidad con mavenCentral
Configure mavenCentral y la dependencia de google-services en el archivo Gradle principal de la raíz del proyecto.
Groovy (build.gradle):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
}
allprojects {
repositories {
mavenCentral()
maven { url "https://maven.google.com" }
}
}
Kotlin DSL (build.gradle.kts):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("com.google.gms:google-services:4.3.15")
}
}
allprojects {
repositories {
mavenCentral()
maven { url = uri("https://maven.google.com") }
}
}
Añadir el complemento de FCM
Añada la línea apply plugin al final del archivo build.gradle del módulo de la app para habilitar el complemento de Gradle:
Groovy (build.gradle):
apply plugin: 'com.google.gms.google-services'
Kotlin DSL (build.gradle.kts):
plugins {
id("com.google.gms.google-services")
}
Configurar dependencias
Añada el siguiente código al bloque dependencies del archivo Gradle del módulo de la app:
Groovy (build.gradle):
dependencies {
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:google:5.x.x'
implementation 'com.google.firebase:firebase-messaging:25.0.1'
}
Kotlin DSL (build.gradle.kts):
dependencies {
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:google:5.x.x")
implementation("com.google.firebase:firebase-messaging:25.0.1")
}
Añada el siguiente código al bloque android del archivo Gradle del módulo de la app:
Groovy (build.gradle):
android {
// google push need java 1.8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Kotlin DSL (build.gradle.kts):
android {
// google push need java 1.8
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
Configurar el archivo google-services.json
Consulte Guía para solicitar parámetros de los canales de fabricantes para obtener el archivo google-services.json y colocarlo en el directorio app.

Configurar el icono de las notificaciones FCM
Añada la siguiente configuración a AndroidManifest.xml para establecer el icono de las notificaciones FCM.
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/su_icono_de_notificacion" />
Comprobar el resultado de la integración
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTGoogleBusiness] support google push
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=8,
token=dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h
region=NULL
isUserSettings=false
}
Probar el canal FCM
- Requisitos previos para las pruebas
- El teléfono debe contar con Google Play Services 17.3.4 o posterior.
- Para las pruebas, utilice una VPN con un nodo fuera de China y asegúrese de que el teléfono pueda acceder a Google.
- En teléfonos destinados al mercado chino, mantenga la app en segundo plano durante la prueba sin cerrarla. Las modificaciones del sistema de estos fabricantes pueden finalizar el proceso al cerrar la app en segundo plano.
Abra Consola de EngageLab > AppPush > Configuración básica > Configuración de integración. Introduzca App Secret y haga clic en Guardar.

Si realiza las pruebas en China, configure el código de país después de la inicialización.
Java:
public class ExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MTCorePrivatesApi.configDebugMode(this, true);
// Configurar el código de país; no configurarlo en producción
MTGlobal.setCountryCode("US");
// Inicializar
MTPushPrivatesApi.init(this);
}
}
Kotlin:
class ExampleApplication : Application() {
override fun onCreate() {
super.onCreate()
MTCorePrivatesApi.configDebugMode(this, true)
// Configurar el código de país; no configurarlo en producción
MTGlobal.setCountryCode("US")
// Inicializar
MTPushPrivatesApi.init(this)
}
}
- Consulte el registro de push en la consola de AppPush para comprobar si se utilizó el canal FCM o EngageLab.

Guía de integración del canal Honor
Configurar compatibilidad con mavenCentral
Configure mavenCentral en el archivo Gradle principal de la raíz del proyecto. Los proyectos nuevos ya lo admiten de forma predeterminada.
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojets {
repositories {
...
mavenCentral()
...
}
}
Configurar parámetros y dependencias
Añada el siguiente código a build.gradle del módulo del proyecto:
Groovy (build.gradle):
defaultConfig {
...
manifestPlaceholders = [
...
HONOR_APPID : "SU_APP_ID_HONOR", // APP ID registrado en Honor
...
]
...
}
dependencies {
...
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation 'com.engagelab.plugin:honor:5.x.x'
implementation 'com.engagelab.plugin:honor_th_push:5.x.x'
...
}
Kotlin DSL (build.gradle.kts):
defaultConfig {
// ...
manifestPlaceholders.putAll(mapOf(
// ...
"HONOR_APPID" to "SU_APP_ID_HONOR", // APP ID registrado en Honor
// ...
))
// ...
}
dependencies {
// ...
//La versión del canal del fabricante debe coincidir con la del SDK AppPush
implementation("com.engagelab.plugin:honor:5.x.x")
implementation("com.engagelab.plugin:honor_th_push:5.x.x")
// ...
}
Configurar el certificado de firma
Configure en build.gradle la firma correspondiente a la huella del certificado registrada en la consola de Honor.
- Los servicios de Honor requieren que la app esté firmada para registrarla correctamente.
- Puede obtener la huella del certificado en el terminal con
keytool -list -v -keystore <ruta_absoluta_del_archivo_de_firma>.- Si no dispone del archivo de firma o de la contraseña, puede obtener la huella con
keytool -list -printcert -jarfile <ruta_absoluta_del_archivo_apk>.
Comprobar el resultado de la integración
Si la integración es correcta, el registro mostrará lo siguiente:
D [MTHonorBusiness] support honor push
D [MTHonorBusiness] onTokenSuccess:get token is s18069ps301291893q1ssro2o40s1630-n262n542r9669q62o83s390306179rro-775875632-654-6105326555582-PA-0052993947080949113-5
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=7,
token=s18069ps301291893q1ssro2o40s1630-n262n542r9669q62o83s390306179rro-775875632-654-6105326555582-PA-0052993947080949113-5
region=NULL
isUserSettings=false
}
Configurar la ofuscación de código
Si utiliza ProGuard, añada lo siguiente al archivo de configuración para evitar que advertencias incorrectas impidan compilar:
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hihonor.push.**{*;}
Probar el canal Honor
- Abra Consola de EngageLab > AppPush > Configuración básica > Configuración de integración. Introduzca App ID, Client ID, Client Secret y App Secret y haga clic en Guardar.

- Finalice el proceso de la app y envíe una notificación push. Si la recibe, el canal del fabricante se ha integrado correctamente.
Enviar mensajes por canales de fabricantes con EngageLab sin integrar sus SDK
/**
* Informar de la llegada de una notificación del canal del fabricante
*
* Enviar mediante HTTP/HTTPS
*
* @param context No puede ser nulo
* @param messageId ID de mensaje de EngageLab; no puede ser nulo
* @param platform Fabricante; valores permitidos(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId ID del mensaje del fabricante; puede ser nulo
*/
public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
/**
* Informar de un clic en una notificación del canal del fabricante
*
* Enviar mediante HTTP/HTTPS
*
* @param context No puede ser nulo
* @param messageId ID de mensaje de EngageLab; no puede ser nulo
* @param platform Fabricante; valores permitidos(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param platformMessageId ID del mensaje del fabricante; puede ser nulo
*/
public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)
/**
* Informar de la eliminación de una notificación del canal del fabricante
*
* Enviar mediante HTTP/HTTPS
*
* @param context No puede ser nulo
* @param messageId ID de mensaje de EngageLab; no puede ser nulo
* @param platform Fabricante; valores permitidos(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param platformMessageId ID del mensaje del fabricante; puede ser nulo
*/
public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)
/**
* Informar de la apertura de una notificación del canal del fabricante
*
* Enviar mediante HTTP/HTTPS
*
* @param context No puede ser nulo
* @param messageId ID de mensaje de EngageLab; no puede ser nulo
* @param platform Fabricante; valores permitidos(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param platformMessageId ID del mensaje del fabricante; puede ser nulo
*/
public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)
/**
* Enviar el token del fabricante
*
* Llame después de establecer la conexión persistente de EngageLab; de lo contrario no tendrá efecto. La conexión está establecida cuando MTCommonReceiver.onConnectStatus devuelve true.
*
* Enviar mediante TCP
*
* @param context No puede ser nulo
* @param platform Fabricante; valores permitidos(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param token Token devuelto por el fabricante; no puede ser nulo
*/
public static void uploadPlatformToken(Context context, byte platform, String token, String region)
region: Marcador de región asociado al token del fabricante; pase null si no se distinguen regiones.
Plantillas de Xiaomi e insignias de OPPO/vivo
El canal Xiaomi admite template_id y template_param. template_param puede estar vacío; en caso contrario, cada valor debe ser una cadena no vacía de 1 a 128 caracteres, sin emoji, Unicode Other Symbol ni Unicode sin asignar. En OPPO, badge_operation_type=1 incrementa uno; el tipo 0 sustituye el valor por badge_message_count no negativo y 0 lo borra. Se requiere permiso de insignia numérica de escritorio de OPPO. El canal vivo usa add_badge=true; las notificaciones locales y setNotificationBadge/resetNotificationBadge también admiten vivo, según el sistema, el lanzador y los permisos del fabricante.










