API de push

Envío de notificaciones o mensajes a un dispositivo único o a una lista de dispositivos. El contenido enviado solo puede ser un objeto de solicitud en formato JSON.

Esta es la versión más reciente de la API de push. Las mejoras de la versión v4 son:

  • Uso de autenticación básica HTTP (HTTP Basic Authentication) para la autorización de acceso. De este modo, toda la solicitud de la API se puede completar utilizando herramientas HTTP comunes, como curl, extensiones del navegador, etc.
  • El contenido del push está completamente en JSON.

Límites de frecuencia de las solicitudes

Nuestra API impone límites a la frecuencia de llamadas para garantizar la estabilidad y la equidad del servicio. Los límites de QPS (consultas por segundo) para cada AppKey son los siguientes:

  • Límite estándar: máximo de 500 solicitudes por segundo.
  • Límite avanzado: si está suscrito a nuestro plan de pago y su AppKey de pago requiere un límite de QPS más alto, se recomienda ponerse en contacto con nuestro equipo comercial: sales@engagelab.com.

Método de solicitud

POST

Dirección de llamada

La dirección del servicio de la interfaz corresponde uno a uno con el punto de acceso del centro de datos seleccionado. Se debe seleccionar la dirección de llamada correspondiente al punto de acceso del servicio de la aplicación.

En la actualidad, EngageLab ha desplegado y admite dos puntos de acceso de centros de datos, y los datos entre diferentes puntos de acceso de servicio están completamente aislados. Se puede seleccionar la dirección de invocación según el punto de acceso del centro de datos elegido al crear el producto.

POST /v4/push
              
              POST /v4/push

            
Este bloque de código se muestra en una ventana flotante

Validación de la llamada

Para obtener más información, se recomienda consultar la descripción de la visión general de la API REST de Método de autenticación (Authentication Method)

Ejemplo de solicitud

Encabezado de la solicitud

> POST /v4/push HTTP/1.1 > Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
              
              > POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==

            
Este bloque de código se muestra en una ventana flotante

Cuerpo de la solicitud

{ "from": "push", "to": "all", "body": { "platform": "all", "notification": { "alert": "Hello, Push!", "android": { "alert": "Hi, Push!", "title": "Send to Android", "builder_id": 1, "extras": { "newsid": 321 } }, "ios": { "alert": "Hi, MTPush!", "sound": "default", "badge": "+1", "extras": { "newsid": 321 } } }, "options": { "time_to_live": 60, "apns_production": false } }, "request_id": "12345678", "custom_args": { "EngageLab": "push to you" } }
              
              {
    "from": "push",
    "to": "all",
    "body": {
        "platform": "all",
        "notification": {
            "alert": "Hello, Push!",
            "android": {
                "alert": "Hi, Push!",
                "title": "Send to Android",
                "builder_id": 1,
                "extras": {
                    "newsid": 321
                }
            },
            "ios": {
                "alert": "Hi, MTPush!",
                "sound": "default",
                "badge": "+1",
                "extras": {
                    "newsid": 321
                }
            }
        },
        "options": {
            "time_to_live": 60,
            "apns_production": false
        }
    },
    "request_id": "12345678",
    "custom_args": {
        "EngageLab": "push to you"
    }
}

            
Este bloque de código se muestra en una ventana flotante

Parámetros de solicitud

La estructura de parámetros del push se detalla en la siguiente tabla:

Campo Tipo Obligatorio Descripción
from String Opcional Remitente del servicio actual
to String u objeto JSON Obligatorio Destino de envío
body Objeto JSON Obligatorio Cuerpo de la solicitud de envío
platform String u arreglo JSON Obligatorio Plataforma de push
notification Objeto JSON Opcional
  • Cuerpo de contenido de la notificación; es el contenido que se envía al cliente.
  • Debe existir una de estas dos opciones (notification o message); no pueden coexistir.
message Objeto JSON Opcional
  • Cuerpo de contenido del mensaje; es el contenido que se envía al cliente.
  • Debe existir una de estas dos opciones (message o notification); no pueden coexistir.
options Objeto JSON Opcional Parámetros de push
request_id String Opcional Campo opcional definido por el cliente, que se utiliza para identificar qué solicitud se devuelve en la respuesta.
custom_args Objeto JSON Opcional Campos opcionales definidos por el cliente que se devuelven al cliente en el callback. El valor admite un máximo de 128 caracteres.

from

Remitente del servicio actual, tipo String, campo opcional.

Ejemplo de solicitud

{ "from": "push" }
              
              {
    "from": "push"
}

            
Este bloque de código se muestra en una ventana flotante

to

Objeto de dispositivo push (Push Device Object), que indica la lista de dispositivos a los que se puede realizar un push. Para confirmar el objeto de dispositivo push, AppPush proporciona diversos métodos, como: alias, tag, registration_id, subgrupo, difusión (broadcast), etc.

Destino de push

Existen varias formas de seleccionar dispositivos además de la difusión, como se indica a continuación:

Campo Tipo Significado Descripción Nota
all String Difusión (broadcast) Push a todos los dispositivos El push se dirige a dispositivos que han estado activos en los últimos 365 días.
tag Arreglo JSON Etiqueta (tag) Lista. La relación entre múltiples etiquetas es OR (o); es decir, se toma la unión.
  • Se pueden usar etiquetas para realizar subgrupos a gran escala por atributos del dispositivo y del usuario.
  • Hasta 20 por envío.
  • Composición válida de la etiqueta: letras (distingue mayúsculas/minúsculas), números, guiones bajos, caracteres chinos.
  • Límite: la longitud de cada etiqueta se limita a 40 bytes. (Se requiere codificación UTF-8 para determinar la longitud)
tag_and Arreglo JSON Etiqueta AND Lista. Múltiples etiquetas están en relación AND (y); es decir, se toma la intersección. Tener en cuenta la distinción con tag, hasta 20 por envío.
tag_not Arreglo JSON Etiqueta NOT Lista. Entre múltiples etiquetas, primero se toma la unión y luego se toma el complemento del resultado. Hasta 20 por envío.
alias Arreglo JSON Alias Lista. Múltiples alias tienen relación OR (o); es decir, se toma la unión.
  • Identificar a un usuario mediante un alias.
  • Un dispositivo solo puede vincularse a un alias, y viceversa.
  • Hasta 1000 por envío.
  • Composición válida del alias: letras (distingue mayúsculas/minúsculas), números, guiones bajos, caracteres chinos.
  • Límite: la longitud de cada alias se limita a 40 bytes. (Se requiere codificación UTF-8 para determinar la longitud)
registration_id Arreglo JSON ID de registro Lista. Varios registration_id están en relación OR (o); es decir, se toma la unión. Identificación del dispositivo. Hasta 1000 por envío.
live_activity_id String Identificador de actividad en tiempo real Corresponde al valor de liveActivityId en el SDK de iOS. Se debe proporcionar al actualizar la actividad en tiempo real.
seg JSON ID de grupo de usuarios El ID del grupo de usuarios creado en la página. Se define como un arreglo, pero actualmente solo se admite enviar uno por vez. Actualmente, la limitación es que solo se puede enviar uno por vez.

La relación implícita entre múltiples valores en un arreglo es OR (o); es decir, se toma la unión. Sin embargo, tag_and es diferente: la relación implícita entre múltiples valores en un arreglo es AND (y); es decir, se toma la intersección.

Si se usa tag_not por sí solo, se realizará el procesamiento tag_not entre los usuarios de difusión.

Estos tipos pueden coexistir. La relación implícita entre múltiples elementos cuando coexisten es AND (y); es decir, se toma la intersección. Por ejemplo:

"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }

Calcular primero el resultado del campo "tag" tag1 or tag2 = A;

Luego calcular el resultado del campo "tag_and" tag3 and tag4 = B;

Luego calcular el resultado del campo "tag_not" not (tag5 or tag6) = C;

El resultado final de "to" es A and B and C.


Ejemplo

  • Push a todos (difusión):
{ "to": "all" }
              
              {
  "to": "all"
}

            
Este bloque de código se muestra en una ventana flotante
  • Push a múltiples etiquetas (siempre que se cumpla cualquiera de las etiquetas): en Shenzhen, Guangzhou o Beijing
{ "to": { "tag": [ "Shenzhen", "Guangzhou", "Beijing" ] } }
              
              {
  "to": {
    "tag": [
      "Shenzhen",
      "Guangzhou",
      "Beijing"
    ]
  }
}

            
Este bloque de código se muestra en una ventana flotante
  • Push a múltiples etiquetas (debe estar dentro del alcance de varias etiquetas al mismo tiempo): en Shenzhen y "female"
{ "to": { "tag_and": [ "Shenzhen", "female" ] } }
              
              {
  "to": {
    "tag_and": [
      "Shenzhen",
      "female"
    ]
  }
}

            
Este bloque de código se muestra en una ventana flotante
  • Push a múltiples alias:
{ "to": { "alias": [ "4314", "892", "4531" ] } }
              
              {
  "to": {
    "alias": [
      "4314",
      "892",
      "4531"
    ]
  }
}

            
Este bloque de código se muestra en una ventana flotante
  • Push a múltiples registration_id:
{ "to": { "registration_id": [ "4312kjklfds2", "8914afd2", "45fdsa31" ] } }
              
              {
  "to": {
    "registration_id": [
      "4312kjklfds2",
      "8914afd2",
      "45fdsa31"
    ]
  }
}

            
Este bloque de código se muestra en una ventana flotante
  • Se puede enviar simultáneamente a varios tipos de destinos de push específicos: en Shenzhen o Guangzhou y son "female" "members"
{ "to": { "tag": [ "Shenzhen", "Guangzhou" ], "tag_and": [ "female", "members" ] } }
              
              {
  "to": {
    "tag": [
      "Shenzhen",
      "Guangzhou"
    ],
    "tag_and": [
      "female",
      "members"
    ]
  }
}

            
Este bloque de código se muestra en una ventana flotante
  • Enviar un mensaje de actividad en tiempo real
{ "to": { "live_activity_id": "LiveActivity-1" } }
              
              {
  "to": {
    "live_activity_id": "LiveActivity-1"
  }
}

            
Este bloque de código se muestra en una ventana flotante

Enviar al ID de segmentación de usuario:

{ "to": { "seg": { "id": "segid" } } }
              
              {
  "to": {
    "seg": {
      "id": "segid"
    }
  }
}

            
Este bloque de código se muestra en una ventana flotante

Body

Cuerpo de la solicitud de envío. Los campos admitidos son los siguientes:

Palabra clave Tipo Opciones Significado
platform String o arreglo JSON Obligatorio Plataforma de push
notification Objeto JSON Opcional
  • Contenido de la notificación; es el contenido enviado al cliente.
  • Debe existir una de estas dos opciones (notification o message); no pueden coexistir.
message Objeto JSON Opcional
  • Contenido del mensaje; es el contenido enviado al cliente.
  • Debe existir una de estas dos opciones (message o notification); no pueden coexistir.
live_activity Objeto JSON Opcional
  • Contenido del mensaje de actividad en tiempo real; es el contenido enviado al cliente.
  • Debe existir una de estas dos opciones (notification o message); no pueden coexistir.
options Objeto JSON Opcional Parámetros de push

Platform

AppPush actualmente admite push para las plataformas Android, iOS y HarmonyOS. Las palabras clave son: "android", "ios", "hmos".

Si la plataforma de destino es iOS, se debe configurar el entorno de push mediante el campo apns_production en options. true: entorno de producción; false: entorno de desarrollo.

Push a todas las plataformas:

{ "platform" : "all" }
              
              { "platform" : "all" }

            
Este bloque de código se muestra en una ventana flotante

Designación de plataformas de push específicas:

{ "platform": [ "android", "ios", "hmos" ] }
              
              {
  "platform": [
    "android",
    "ios",
    "hmos"
  ]
}

            
Este bloque de código se muestra en una ventana flotante

Notification

El objeto "Notification" es uno de los objetos de contenido de entidad de un push (el otro es "Message") y se envía al cliente como "Notification".

Palabra clave Tipo Opción Significado Descripción
alert String u objeto JSON Obligatorio Contenido El contenido del propio mensaje. Si no se especifica alert en android o ios, se utilizará este valor.
android Objeto JSON Opcional Propiedades de la plataforma android Parámetros de push de la plataforma Android; consultar descripción de android
ios Objeto JSON Opcional Propiedades de la plataforma ios Parámetros de push de la plataforma iOS; consultar descripción de ios
hmos Objeto JSON Opcional Propiedades de la plataforma hmos Parámetros de push de la plataforma HarmonyOS; consultar descripción de hmos

Alert

La propiedad "alert" en esta ubicación (directamente bajo el objeto notification) es una definición abreviada; si el mensaje de alert es el mismo en todas las plataformas, puede no definirse bajo cada plataforma y prevalecerá este valor. Si existe una definición para cada plataforma, esta sobrescribirá la definición de aquí.

{ "notification" : { "alert" : "Hello, Push!" } }
              
              {
  "notification" : {
    "alert" : "Hello, Push!"
  }
}

            
Este bloque de código se muestra en una ventana flotante

El objeto notification definido anteriormente se enviará a varias plataformas especificadas por "platform" y todas tendrán el mismo mensaje de alert de notificación.

Android

Las notificaciones en la plataforma Android se muestran mediante el SDK de AppPush conforme a estilos específicos de la barra de notificaciones. Los campos admitidos son los siguientes:

Palabra clave Tipo de datos Opcional Significado Descripción
alert String u objeto JSON Obligatorio Contenido de la notificación
  • Si se especifica, sobrescribirá la información alert configurada en el nivel superior.
  • El contenido puede ser una cadena vacía para indicar que no se muestre en la barra de notificaciones.
  • Para las limitaciones impuestas por varios canales de push en este campo, consultar Limitaciones de push.
  • title String Opcional Título de la notificación
  • Si se especifica, reemplazará el nombre de la app en la visualización de la notificación.
  • Para las limitaciones impuestas por varios canales de push en este campo, consultar Limitaciones de push.
  • builder_id Int Opcional ID de estilo de la barra de notificaciones El SDK de Android puede configurar diseños de notificación personalizados, y este campo especifica qué estilo usar.
    channel_id String Opcional ID del canal de notificaciones de Android Hasta 1000 bytes. A partir de Android 8.0, se pueden configurar canales de notificación. Este campo especifica el efecto de visualización de la barra de notificaciones según el ID del canal.
    priority Int Opcional Prioridad de visualización de la barra de notificaciones El valor predeterminado es 0, con un rango de -2 a 2.
    category String Opcional Filtrado o clasificación de entradas de la barra de notificaciones Depende por completo de la estrategia de tratamiento del fabricante para la categoría.
    style Int Opcional Tipo de estilo de la barra de notificaciones Se utiliza para especificar el tipo de estilo de la barra de notificaciones; el valor predeterminado es 0. 1=bigText,2=Inbox,3=bigPicture
    big_text String Opcional Estilo de barra de notificaciones de texto grande
  • Disponible cuando style = 1; el contenido se mostrará en la barra de notificaciones como texto grande.
  • Compatible con ROM con API 16 o superior.
  • inbox JSONObject Opcional Estilo de barra de notificaciones de elementos de texto
  • Disponible cuando style = 2; admite hasta 5 elementos, cada uno con una longitud máxima de 1024. Ejemplo: {"box0":"content1"}.
  • Compatible con ROM con API 16 o superior.
  • big_pic_path String Opcional Estilo de barra de notificaciones de imagen grande
  • Disponible cuando style = 3; actualmente admite imágenes en formato JPEG (solo canal FCM), .BMP (solo canal FCM), .jpg y .png.
  • Se admiten URL de imágenes de red y rutas de imágenes locales (especificar la ruta relativa en la tarjeta SD).
  • Compatible con ROM con API 16 o superior.
  • El tamaño máximo de las imágenes es 1 MB.
  • extras Objeto JSON Opcional Campos adicionales Definir información clave/valor personalizada en formato JSON para uso de negocio.
    intent Objeto JSON Opcional Especificar la página de destino para navegación (recomendado) Usar el campo intent para especificar la página de destino a la que se debe navegar cuando se hace clic en la barra de notificaciones. Se recomienda completar el campo intent; de lo contrario, al hacer clic en la notificación puede no haber ninguna acción de navegación. Este campo admite tres tipos:
  • Navegar a la página de destino: intent:#Intent;action=action path;component= package name /full activity name;end
  • Ir a la página de inicio de la app: intent:#Intent;action=android.intent.action.MAIN;end (dirección fija)
  • Navegar a una dirección deeplink: scheme://test?key1=val1&key2=val2
  • large_icon String Opcional Icono grande de notificación
  • El tamaño del icono no debe superar 300 KB.
  • Se admiten URL de imágenes de red y rutas de imágenes locales (especificar la ruta relativa en la tarjeta SD).
  • small_icon String Opcional Icono pequeño de notificación
  • Icono pequeño de la notificación; la ruta del icono puede ser una URL de imagen de red y no debe superar 300 KB de tamaño.
  • Si no se rellena small_icon_uri, se usará este campo small_icon de forma predeterminada.
  • sound String Opcional Sonido
  • Rellenar con el nombre del archivo de sonido en la ruta /res/raw/ del proyecto Android, sin la extensión del archivo.
  • Nota: para Android 8.0 y superior, este atributo no funciona cuando se pasa channel_id.
  • badge_add_num Int Opcional Establecer el valor incremental para el número de insignia (badge) que se sumará al número de insignia original
  • Actualmente, esta propiedad solo funciona para Huawei EMUI 8.0 y superior, Xiaomi MIUI 6 y superior, y dispositivos vivo al usar el canal del fabricante.
  • Si no se rellena este campo, significa que el número de insignia no cambiará (para dispositivos Xiaomi, tanto si el push pasa por el canal EngageLab como por el canal del fabricante, el valor predeterminado será +1).
  • Rango de valores: 1-99. Si se establece un valor dentro de este rango, los datos badge_add_num para la configuración del siguiente mensaje de barra de notificaciones se sumarán al número de insignia original. Se recomienda establecerlo en 1.
  • Ejemplo: si badge_add_num se establece en 1 y el número de insignia original es 2, tras enviar este mensaje de insignia, el número de insignia de la aplicación se mostrará como 3.
  • badge_set_num Int Opcional Establecer un valor fijo para el número de insignia
  • Si no se rellena este campo, significa que el número de insignia no se modificará.
  • El rango de valores es: 0-99. Si se establece un número dentro del rango, el número de insignia correspondiente a la configuración del siguiente mensaje de barra de notificaciones será el valor de insignia. Por ejemplo: si badge_set_num se establece en 1, independientemente del número de insignia previo de la aplicación, tras enviar este mensaje de insignia, el número de insignia de la aplicación siempre se mostrará como 1.
  • badge_class String Opcional Clase de Activity de entrada de la aplicación correspondiente al icono del escritorio, por ejemplo, "com.test.badge.MainActivity"
  • Solo tiene efecto para push del canal Huawei. Si este valor se rellena con una clase Activity que no es la principal, se aplicará la lógica de restricción del fabricante.
  • Si se necesita implementar la funcionalidad de incremento de insignias, se debe usar badge_add_num junto con este valor; ambos deben coexistir y no se permite que falte ninguno.
  • display_foreground String Opcional Si la app está en primer plano, si se deben mostrar notificaciones
  • Cuando el valor es "1", las notificaciones aparecerán en la barra de notificaciones cuando la app esté en primer plano.
  • Cuando el valor es "0", las notificaciones no aparecerán en la barra de notificaciones cuando la app esté en primer plano.
  • Nota: de forma predeterminada, las notificaciones aparecerán en la barra de notificaciones cuando la app esté en primer plano. Esto se admite desde AppPush Android SDK versión 4.3.1.
  • group_id String Opcional ID de grupo de mensajes Identificador único para la agrupación de mensajes, utilizado para controlar el efecto de colapso de mensajes. Esto se admite desde AppPush Android SDK versión 5.0.1.
    { "notification": { "android": { "alert": "hello, MTPush!", "title": "Push test", "builder_id": 3, "style": 1, "big_text": "big text content", "inbox":JSONObject, "big_pic_path": "picture url", "priority": 0, "category": "category str", "large_icon": "http://pushapi-sgp.engagelab.comlargeIcon.jpg", "small_icon": "http://www.small.com/small_icon.jpg", "intent": { "url": "intent:#Intent;component=push.pushapi-sgp.engagelab.com/com.example.mtpushdemo.SettingActivity;end" }, "extras": { "news_id": 134, "my_key": "a value" } } } }
                  
                  {
        "notification": {
            "android": {
                "alert": "hello, MTPush!",
                "title": "Push test",
                "builder_id": 3,
                "style": 1,
                "big_text": "big text content",
                "inbox":JSONObject,
                "big_pic_path": "picture url",
                "priority": 0,
                "category": "category str",
                "large_icon": "http://pushapi-sgp.engagelab.comlargeIcon.jpg",
                "small_icon": "http://www.small.com/small_icon.jpg",
                "intent": {
                    "url": "intent:#Intent;component=push.pushapi-sgp.engagelab.com/com.example.mtpushdemo.SettingActivity;end"
                },
                "extras": {
                    "news_id": 134,
                    "my_key": "a value"
                }
            }
        }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    iOS

    Notificaciones de APNs en la plataforma iOS.

    El contenido de la notificación se envía mediante el agente de AppPush al servidor APNs de Apple y se presenta en el dispositivo iOS como una notificación del sistema.

    El contenido de la notificación cumple con la especificación de APNs y admite los siguientes campos:

    Palabra clave Tipo Opción Significado Descripción
    alert String u objeto JSON Obligatorio Contenido de la alerta
    • El contenido especificado aquí sobrescribirá el mensaje alert especificado por el nivel superior.
    • Si el contenido está vacío, no se mostrará en la barra de notificaciones.
    • Se admite tanto la forma String como la estructura de alert payload definida oficialmente
    • que contiene claves admitidas oficialmente, como title y subtitle.
    sound String u objeto JSON Opcional Sonido de la notificación
    • Notificación general: tipo String.
    • Si este campo no está presente, este mensaje no tendrá alerta sonora.
    • Con este campo, se reproducirá el sonido especificado si se encuentra; de lo contrario, se reproducirá el sonido predeterminado.
    • Si este campo es una cadena vacía, iOS 7 usa el sonido predeterminado; iOS 8 y versiones posteriores no reproducen sonido.
    • Notificación de alerta: objeto JSON que admite una estructura de payload definida oficialmente con claves admitidas oficialmente, como critical, name y volume.
    badge Int o String Opcional Insignia de la aplicación
    • El valor N puede establecerse como N, +N o -N, y N está en el rango [0,99]. Si el valor de insignia cargado es 10, significa que la insignia se establecerá en N, 10+N o 10-N (la insignia se borra de forma predeterminada si el valor es menor que 0).
    • Si es 0 o una cadena vacía, significa borrar la insignia.
    • Si no se rellena, significa que el número de insignias no cambia.
    • La biblioteca oficial de API de AppPush (SDK) rellenará el valor badge como "+1" de forma predeterminada.
    content-available Boolean Opcional Push de activación Para más detalles, consultar: al enviar "content-available":true significa que es una Background Remote Notification; si no se incluye, es una Remote Notification normal: Background Remote Notification
    mutable-content Boolean Opcional Extensión de notificación Funcionalidad Notification Service Extension agregada en iOS 10 para informar el estado de entrega de cada mensaje de APNs. Para usarla, el cliente debe implementar la interfaz Service Extension y usar el campo mutable-content del lado del servidor para completar la configuración.
  • true: indica compatibilidad con la funcionalidad UNNotificationServiceExtension de iOS 10.
  • Si este campo no se incluye, es una Remote Notification normal y no se pueden contabilizar datos de llegada.
  • category String Opcional Solo compatible con iOS 8. Establecer el valor del campo "category" en el payload de APNs.
    extras Objeto JSON Opcional Campos ampliados Aquí se personaliza la información clave/valor para uso empresarial.
    thread-id String Opcional Grupo de notificaciones Las notificaciones remotas de iOS se agrupan por esta propiedad, de modo que las notificaciones con el mismo thread-id se agrupan juntas.
    interruption-level String Opcional Nivel de interrupción de la notificación para prioridad y tiempos de entrega Para iOS 15, el nivel de notificación solo puede ser uno de: active,critical,passive,timeSensitive. Consultar: UNNotificationInterruptionLevel

    Notificaciones iOS para que AppPush se reenvíe a los servidores de APNs. La longitud de las notificaciones en AppPush está limitada a 4000 bytes. AppPush utiliza codificación utf-8 al enviar; por lo tanto, un carácter chino ocupa 3 bytes.

    Ejemplo de envío del lado del servidor:

    { "notification": { "ios": { "alert": "hello, Push!", "sound": "sound.caf", "badge": 1, "extras": { "news_id": 134, "my_key": "a value" } } } }
                  
                  {
        "notification": {
            "ios": {
                "alert": "hello, Push!",
                "sound": "sound.caf",
                "badge": 1,
                "extras": {
                    "news_id": 134,
                    "my_key": "a value"
                }
            }
        }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Mensaje recibido por el cliente:

    { "_j_msgid" = 813843507; aps = { alert = "hello,Push!"; badge = 1; sound = "sound.caf"; }; "my_key" = "a value"; "news_id" = 134; }
                  
                  {
      "_j_msgid" = 813843507;
      aps =     {
      alert = "hello,Push!";
      badge = 1;
      sound = "sound.caf";
    };
    "my_key" = "a value";
    "news_id" = 134;
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    hmos

    Las notificaciones en la plataforma HarmonyOS se muestran mediante el SDK de AppPush conforme a estilos de la barra de notificaciones. Los campos admitidos son:

    Palabra clave Tipo Opción Significado Descripción
    alert String Obligatorio Contenido de la notificación Sobrescribe el alert del nivel superior si se establece. Una cadena vacía oculta la notificación en la barra. Consultar Limitaciones de push para conocer los límites.
    title String Opcional Título de la notificación Reemplaza el nombre de la app si se establece. Consultar Limitaciones de push.
    category String Obligatorio Categoría del mensaje Requerido por el proveedor. Seguir los estándares de categorías de mensajes de Harmony. Corresponde a notification.hmos.category.
    large_icon String Opcional Icono grande Solo URL HTTPS, p. ej., https://example.com/image.png. ≤30 KB, ancho*alto < 12800 píxeles.
    intent JSONObject Obligatorio Destino de navegación Se admiten tres tipos: 1) Inicio de la app: action.system.home 2) Deeplink: scheme://host?key=val 3) Acción: com.test.action. Ejemplo: {"url":"action.system.home"}.
    badge_add_num Int Opcional Incremento de insignia Si se omite, no cambia la insignia. Rango 1-99. Se suma a la insignia actual.
    badge_set_num Int Opcional Establecer valor de insignia Si se omite, no cambia la insignia. Rango 0-99. Establece la insignia a un valor fijo.
    test_message Boolean Opcional Indicador de mensaje de prueba false: normal (predeterminado); true: mensaje de prueba.
    receipt_id String Opcional ID de recibo de Huawei ID único para especificar la configuración de recibo de bajada de Harmony.
    extras JSON Opcional Campos adicionales K/V JSON personalizado para uso empresarial.
    style Int Opcional Estilo de notificación Predeterminado 0. 0: normal; 3: texto multilínea.
    inbox_content [String] Opcional Contenido de texto multilínea Obligatorio cuando style=3. Hasta 3 elementos. Cada uno ≤1024 caracteres; se truncará con “…”.
    push_type Int Opcional Tipo de push Predeterminado 0. Se admiten: 0-notificación, 2-notificación extendida, 10-llamada VoIP. Otros no son válidos.
    extra_data String Opcional Datos ampliados Se asigna a extraData de Huawei. Obligatorio cuando push_type=2 o 10; se ignora cuando push_type=0.
    display_foreground String Opcional Mostrar notificación cuando la app está en primer plano "1": mostrar; "0": no mostrar.

    Ejemplo:

    { "notification": { "hmos": { "alert": "Hi, MTPush!", "title": "", "category": "", "intent": {"url": ""}, "badge_add_num": 1, "test_message": true, "receipt_id": "", "extras": {}, "style": 0, "inbox_content": [], "push_type": 0, "extra_data": "", "display_foreground": "1" } } }
                  
                  {
      "notification": {
        "hmos": {
          "alert": "Hi, MTPush!",
          "title": "",
          "category": "",
          "intent": {"url": ""},
          "badge_add_num": 1,
          "test_message": true,
          "receipt_id": "",
          "extras": {},
          "style": 0,
          "inbox_content": [],
          "push_type": 0,
          "extra_data": "",
          "display_foreground": "1"
        }
      }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Message

    Mensajes dentro de la aplicación. También denominados: mensajes personalizados, mensajes de paso directo.

    • Esta parte no se muestra en la barra de notificaciones; el SDK de AppPush recibe el contenido del mensaje y lo transmite a la aplicación.
    • iOS obtiene esta parte en un canal de mensajes in-app de push (no APNs) con la aplicación en primer plano.

    Los campos admitidos son los siguientes:

    Palabra clave Tipo Opción Significado
    msg_content String u objeto JSON Obligatorio Contenido del mensaje
    title String Opcional Título del mensaje
    content_type String Opcional Tipo de contenido del mensaje
    extras Objeto JSON Opcional Parámetros opcionales en formato JSON
    test_message Boolean Opcional Indicador de mensaje de prueba, para uso de HarmonyOS
    receipt_id String Opcional ID de recibo de Huawei, para uso de HarmonyOS

    Ejemplo:

    { "message": { "msg_content": "Hi,Push", "content_type": "text", "title": "msg", "extras": { "key": "value" } } }
                  
                  {
      "message": {
        "msg_content": "Hi,Push",
        "content_type": "text",
        "title": "msg",
        "extras": {
          "key": "value"
        }
      }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Live_activity

    Nota: Los mensajes de actividad en tiempo real requieren el uso de un certificado iOS P8, que corresponde a seleccionar "Token Authentication Configuration" en la configuración del método de autenticación iOS de WebPortal.

    El cuerpo de contenido del mensaje de actividad en tiempo real incluye la siguiente información de campos:

    Palabra clave Tipo Opciones Descripción
    ios Objeto JSON Obligatorio Para los campos detallados, consultar la sección objeto JSON de iOS.

    Objeto JSON de iOS

    Palabra clave Tipo Opciones Descripción
    event string Obligatorio Creación: "start", Actualización: "update", Finalización: "end"; obligatorio cuando event=start
    attributes-type string Opcional Tipo de actividad en tiempo real; un valor definido por el desarrollador; obligatorio cuando event=start
    content-state Objeto JSON Obligatorio Contenido dinámico de la actividad en tiempo real; debe coincidir con el valor del SDK del cliente (corresponde al campo content-state de Apple).
    alert Objeto JSON Opcional Para más detalles, consultar objeto JSON alert de iOS.
    dismissal-date int Opcional Tiempo de visualización para el fin de la actividad en tiempo real.
    attributes Objeto JSON Opcional Contenido estático de la actividad en tiempo real; debe coincidir con el valor del SDK del cliente (corresponde al campo attributes de Apple).
    stale-date int Opcional Tiempo de caducidad para mostrar la actividad en tiempo real; si es menor que la hora actual, la actividad no se actualizará.
    relevance-score int Opcional Prioridad de visualización de la actividad en tiempo real en la Isla Dinámica; valores de 1 a 100, correlacionados positivamente con la importancia de la actividad; el valor predeterminado es el máximo si no se especifica.
    apns-priority int Opcional 5 o 10; el valor predeterminado es 10. Las notificaciones con apns-priority=5 no consumen el límite de velocidad de Apple; superar el límite restringirá las notificaciones.

    Objeto JSON alert de iOS

    Palabra clave Tipo Opciones Descripción
    title string Opcional Título mostrado en los mensajes de Apple Watch.
    body string Opcional Contenido mostrado en los mensajes de Apple Watch.
    sound string Opcional Sonido de la notificación.
    • Los mensajes de actividad en tiempo real de iOS para EngageLab Push se reenvían a los servidores de Apple. Apple exige que los datos de actualización dinámica de los mensajes de actividad en tiempo real (ActivityKit) no superen los 4096 bytes.
    • EngageLab Push, debido a los requisitos de reempaquetado y considerando la redundancia de seguridad, estipula que la longitud total dentro de los parámetros "live_activity" para "iOS": { } y el contenido dentro de las llaves no debe exceder 3584 bytes. JPush utiliza codificación UTF-8, lo que significa que un carácter chino ocupa 3 bytes.

    Ejemplo de push de actividad en tiempo real

    El attributes-type y el live_activity_id utilizados para las actividades en tiempo real se reportan desde el SDK del desarrollador. Antes de usar actividades en tiempo real, se deben reportar el token de inicio por push del dispositivo y el update-token. Para obtener procedimientos detallados, consultar las instrucciones de actividad en tiempo real del fabricante Apple.

    • Creación

      { "from": "push", "to": { "registration_id": [ "161a3797c816b134042" ] }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "start", "content-state": { "eventStr": "hello", "eventTime":1685952000 }, "attributes": { "name": "1", "number": 2, "tag": "mytag" }, "alert": { "title": "hello", "body": "welcome" }, "attributes-type": "my_la_type", "relevance-score": 100, "apns-priority": 10 } } }, "request_id": "12345678", "custom_args": "12345678" }
                    
                    {
          "from": "push",
         "to": {
              "registration_id": [
                  "161a3797c816b134042"
              ]
          },
          "body": {
              "platform": "ios",
              "live_activity": {
                  "ios": {
                      "event": "start",
                      "content-state": {
                          "eventStr": "hello",
                          "eventTime":1685952000
                      },
                      "attributes": {
                          "name": "1",
                          "number": 2,
                          "tag": "mytag"
                      },
                      "alert": {
                          "title": "hello",
                          "body": "welcome"
                      },
                      "attributes-type": "my_la_type",
                      "relevance-score": 100,
                      "apns-priority": 10
                  }
              }
          },
          "request_id": "12345678",
          "custom_args": "12345678"
      }
      
                  
      Este bloque de código se muestra en una ventana flotante
    • Actualización

      { "from": "push", "to": { "live_activity_id": "my_la_id" }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "update", "content-state": { "eventStr": "test_live", "eventTime": 198 }, "alert": { "title": "123411", "body": "123411" } } } }, "request_id": "12345678", "custom_args": "12345678" }
                    
                    {
         "from": "push",
         "to": {
               "live_activity_id": "my_la_id"
          },
          "body": {
              "platform": "ios",
              "live_activity": {
                  "ios": {
                      "event": "update",
                      "content-state": {
                          "eventStr": "test_live",
                          "eventTime": 198
                      },
      
                      "alert": {
                          "title": "123411",
                          "body": "123411"
                      }
                  }
              }
          },
          "request_id": "12345678",
          "custom_args": "12345678"
      }
      
                  
      Este bloque de código se muestra en una ventana flotante

    VoIP

    Funcionalidad VoIP de iOS. Este tipo no admite coexistencia con otros tipos de mensajes iOS. Se puede consultar la estructura de parámetros de la solicitud:

    { "from": "push", "to": { "registration_id": [ "1a0018970a91da03de5" ] }, "request_id": "12345", "custom_args": "12345", "body": { "platform": "ios", "voip": { "key": "value // Any custom key/value pair that will be passed to the APP" } } }
                  
                  { 
        "from": "push", 
        "to": { 
            "registration_id": [ "1a0018970a91da03de5" ] 
        }, 
        "request_id": "12345", 
        "custom_args": "12345", 
        "body": { 
            "platform": "ios", 
            "voip": { 
                "key": "value // Any custom key/value pair that will be passed to the APP" 
            } 
        } 
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Options

    Las opciones actuales de notificación push incluyen lo siguiente:

    Palabra clave Tipo Opción Significado Descripción
    time_to_live Int o String Opcional Tiempo de retención de mensajes sin conexión (segundos) Si el usuario está sin conexión en el momento del push, el mensaje puede conservarse durante una duración especificada para volver a enviarse cuando se conecte. El valor predeterminado es 86400 (1 día) y el máximo es 15 días. Si el máximo admitido por el operador es menor que el valor configurado, se utilizará el máximo del operador. Establecerlo en 0 significa que los mensajes sin conexión no se conservan; solo los usuarios que estén con conexión en el momento del push recibirán el mensaje.
    override_msg_id Long Opcional ID del mensaje que se va a sobrescribir Si el push actual pretende sobrescribir uno anterior, al introducir el msg_id del push anterior se obtendrá el efecto de sobrescritura. En este caso, el msg_id recibirá el contenido actualizado sin conexión, incluso si el usuario Android ya recibió el mensaje; si la notificación no se ha eliminado de la barra de notificaciones, el nuevo contenido sobrescribirá la notificación anterior. La función de sobrescritura es efectiva durante: 1 día. Si el msg_id no existe dentro del límite de tiempo especificado para sobrescritura, se devuelve un error 7006 indicando una operación de sobrescritura de mensaje no válida y el mensaje actual no se enviará. Este campo solo es efectivo para Android y solo admite el canal EngageLab, el canal Xiaomi, el canal Meizu, el canal OPPO, el canal FCM y el canal Huawei (dispositivos EMUI10 y superiores).
    apns_production Boolean Opcional Entorno de producción de APNs Este campo solo es válido para notificaciones iOS.
  • true: push al entorno de producción;
  • false: push al entorno de desarrollo.
  • Reglas de valor predeterminado: si está habilitado "Certificate for development" en la configuración, el campo toma false cuando no se establece explícitamente. De lo contrario, toma true cuando se omite. Se recomienda encarecidamente especificar explícitamente el valor de este campo en las solicitudes de push.
  • apns_collapse_id String Opcional Identificador para actualizar notificaciones iOS Si una nueva notificación APNs coincide con una notificación existente en el Centro de notificaciones con el mismo apns-collapse-id, el contenido de la nueva notificación la actualizará y la colocará en la parte superior del Centro de notificaciones. El collapse id no debe exceder 64 bytes de longitud.
    big_push_duration Int Opcional Duración del envío escalonado (minutos) También denominado envío lento; reduce la velocidad de envío rápido original, distribuyendo el push de forma uniforme entre los usuarios objetivo durante los n minutos especificados; el máximo es 1440.
    multi_language Objeto JSON Opcional Configuración de push multilingüe Configuración de adaptación para contenido de push multilingüe; consultar multi_language para más detalles.
    third_party_channel Objeto JSON Opcional Información de configuración del canal de proveedor Android Parámetros válidos solo para usuarios configurados con canales de proveedor; consultar third_party_channel para más detalles.
    classification Int Opcional Configuración de clasificación de mensajes push EngageLab no evalúa ni calibra el tipo de mensaje especificado. Si no se especifica, el valor predeterminado es 0. 0: representa mensajes operativos. 1: representa mensajes del sistema.
    voice_value String Opcional Valor del archivo de voz Varios parámetros se separan por comas; '#' indica que se requiere análisis; de lo contrario, coincide directamente con el archivo de idioma de forma predeterminada. Tenga en cuenta que, si el número tiene un punto decimal, el nombre del archivo cargado debe ser point.mp3. Los idiomas admitidos actualmente incluyen "en" (inglés), "zh-Hans" (chino simplificado) y "zh-Hant" (chino tradicional). Si el idioma especificado del contenido de push no coincide con las reglas de idioma correspondientes, el contenido del push no se convertirá en difusión por voz.
    enhanc_message Boolean Opcional Habilitar la visualización de mensajes in-app true: habilitar mejora; false: deshabilitar mejora. Si los permisos de notificación están deshabilitados, al habilitar esta función se mostrará el contenido del mensaje de la barra de notificaciones como un mensaje in-app cuando el usuario esté ejecutando la app en primer plano. El valor predeterminado de esta función es false y solo estará activa cuando se habilite explícitamente.
    plan_id String Opcional Identificador del plan de push Es necesario crear primero la identificación del plan. Se puede crear en la consola o a través de la API.
    cid String Opcional Identificador de solicitud de push, utilizado para evitar envíos duplicados Solo se permiten letras, números, guiones bajos y guiones, y la longitud no excede 64 caracteres. Téngase en cuenta que este campo debe ser único bajo el mismo AppKey. Cómo evitar push duplicados
    auto_truncation Boolean Opcional Si se deben truncar automáticamente los mensajes demasiado largos para el canal del proveedor El valor predeterminado es true. Si el cuerpo del mensaje enviado al canal del proveedor se considera demasiado largo, se truncará automáticamente. Si no se desea el truncamiento, se puede pasar false para deshabilitarlo.

    Multi_language

    Este campo corresponde a la función de push multilingüe del servicio EngageLab Push. Permite enviar contenido de notificación personalizado a usuarios en diferentes idiomas. Al especificar varios idiomas junto con su contenido de mensaje, títulos y subtítulos de iOS correspondientes en la solicitud de push, se pueden enviar notificaciones push adecuadas según la configuración de idioma del usuario.

    Parámetros de solicitud
    Palabra clave Tipo Opciones Significado Descripción
    en string Opcional Clave de idioma Corresponde al idioma del usuario; consultar el apéndice para los códigos de clave.
    content string Opcional Contenido del mensaje Sustituye los datos en notification.android.alert, notification.ios.alert, notification.web.alert y message.msg_content según el idioma del usuario.
    title string Opcional Título del mensaje Sustituye los datos en notification.android.title, notification.ios.alert, notification.web.title y message.title según el idioma del usuario.
    ios_subtitle string Opcional Subtítulo de iOS Sustituye los datos en notification.ios.alert según el idioma del usuario.
    • Nota sobre HarmonyOS: al usar HarmonyOS, utilizar third_party_channel.hmos.distribution_new. No se ve afectado por la configuración global.
    Ejemplo de solicitud
    HTTP Request Method: POST Request URL: /v4/grouppush or /v4/push Request Data Format: JSON Request Example: { "options": { "multi_language": { "en": { "content": "", "title": "", "ios_subtitle": "" } } } }
                  
                     HTTP Request Method: POST
       Request URL: /v4/grouppush or /v4/push
       Request Data Format: JSON
       Request Example:
       {
        "options": {
          "multi_language": {
            "en": {
              "content": "",
              "title": "",
              "ios_subtitle": ""
            }
          }
        }
       }
    
                
    Este bloque de código se muestra en una ventana flotante
    Ejemplo de solicitud
    Successful Response: { }
                  
                  Successful Response:
    {
       
    }
    
                
    Este bloque de código se muestra en una ventana flotante
    Failed Response: { "code": 400, "data": "", "message": "Error Message" }
                  
                  
    Failed Response:
    {   
        "code": 400,  
        "data": "",
      "message": "Error Message"
    }   
    
                
    Este bloque de código se muestra en una ventana flotante

    Third_party_channel

    Este campo se utiliza para rellenar la información personalizada del canal de proveedor Android. La clave admite los siguientes canales de proveedor: xiaomi, huawei, meizu, oppo, vivo, fcm, honor, hmos. Pueden existir uno o varios al mismo tiempo. La clave (KEY) de cada tipo de proveedor puede contener actualmente las siguientes opciones:

    Parámetros de solicitud
    Palabra clave Tipo Opción Significado Descripción
    distribution_new String Obligatorio _ Cuando EngageLab y los canales del proveedor coexisten, se establece la prioridad de distribución.
  • mtpush: indica que el push se fuerza a distribuirse por el canal de EngageLab.
  • pns_mtpush: indica que, para usuarios del tipo combinado fcm+fabricante nacional, el push se fuerza a ir primero por el canal Xiaomi / Huawei / Meizu / oppo / Vivo / Glory, y luego, si no es válido, ir por el canal de EngageLab.
  • mtpush_pns: indica que, para usuarios del tipo combinado fcm+proveedor nacional, la prioridad del push es ir por EngageLab; si EngageLab no está en línea, entonces ir por el canal del proveedor como secundario.
  • fcm_mtpush: indica que, para usuarios del tipo combinado fcm+proveedor nacional, el push se fuerza a usar primero el canal fcm y luego usar el canal de EngageLab si no es válido.
  • mtpush_fcm: indica que, para usuarios del tipo combinado fcm+proveedor nacional, la prioridad del push es ir por EngageLab; si EngageLab no está en línea, entonces ir por el canal fcm como secundario. ``_Nota: Para las cuatro estrategias pns_mtpush/fcm_mtpush/mtpush_pns/mtpush_fcm, si un dispositivo solo tiene un canal de push del sistema disponible (FCM o el canal del fabricante del teléfono), se ignorarán las estrategias de FCM y del fabricante especificadas, y se utilizará correctamente el canal del sistema integrado.
  • channel_id String Opcional Categorías de mensajes de la barra de notificaciones
  • Para adaptarse a la categorización de notificaciones de dispositivos Xiaomi, Huawei y OPPO, los desarrolladores deben solicitarlo a los fabricantes correspondientes. Para directrices específicas, consultar: Guía de categorización de notificaciones del fabricante.
  • Nota: Para Huawei, las aplicaciones con datos procesados en la región de China no admiten este campo. Para más detalles, consultar Huawei Custom Notification Channels.
  • El campo channel_id también está disponible en Android. Si se rellena este campo, tendrá prioridad; de lo contrario, se aplicará la definición de android.channel_id.
  • Importante: dado que OPPO implementará nuevas reglas de categorización de notificaciones a partir del 20 de noviembre de 2024, se recomienda rellenar este campo junto con los campos category y notify_level que se indican a continuación.
  • classification Int Opcional Categorías de mensajes de la barra de notificaciones Categoría de mensajes de la barra de notificaciones del fabricante vivo; si no se rellena, el valor predeterminado es 0.
  • 0: representa el mensaje operativo.
  • 1: representa mensajes del sistema. ``Actualmente, vivo es más estricto al clasificar los mensajes del sistema; consultar: plataforma de desarrolladores vivo para reglas específicas.
  • pushMode Int Opcional Modo de push de vivo El valor predeterminado es 0. Para más detalles, consultar pushMode de vivo. Para usar push de prueba, se debe configurar manualmente el ID del dispositivo de prueba en el backend de vivo.
  • 0: indica un push oficial.
  • 1: indica un push de prueba.
  • importance String Opcional Clasificación inteligente de mensajes de la barra de notificaciones de Huawei/Honor Para adaptarse a la clasificación inteligente de mensajes de la barra de notificaciones del fabricante Huawei, corresponde al campo importance de Huawei. Si no se rellena, el valor predeterminado es "NORMAL". Referencia: clasificación inteligente de mensajes de notificación de Huawei
  • LOW: mensaje general.
  • NORMAL: mensaje importante.
  • HIGH: mensaje muy importante (solo compatible con Huawei)
  • urgency String Opcional Prioridad del mensaje definida por el proveedor Huawei Para adaptar la prioridad de los mensajes personalizados del proveedor Huawei.
  • HIGH: mensajes muy importantes; los mensajes de nivel HIGH pueden forzar la activación del proceso de la aplicación cuando llegan al teléfono del usuario.
  • NORMAL: mensaje importante. ``Para configurar "HIGH", se debe solicitar un permiso especial a Huawei. Consultar: Cómo solicitar permiso especial
  • category String Opcional Identificador de escenario de mensaje personalizado del proveedor Huawei Para adaptarse a los requisitos de notificación de dispositivos Huawei, vivo y OPPO, este campo se utiliza para identificar el tipo de mensaje de "notificación en la nube", determinar los métodos de alerta de notificación y acelerar la entrega de tipos específicos de mensajes.
  • Consultar los valores y descripciones correspondientes: descripción de valores category de Huawei, estándares de categorización de vivo.
  • descripción de valores category de OPPO
  • Nota 1: Huawei requiere completar la solicitud de derechos de categorización personalizada.
  • Nota 2: a partir del 15 de septiembre de 2023, Huawei gestionará conjuntamente las notificaciones en la nube y las notificaciones locales bajo los Estándares de categorización de notificaciones de Huawei. Al iniciar notificaciones push mediante servicios de Jiguang, se debe garantizar que los valores de este campo cumplen los requisitos oficiales de valores de "category de notificación en la nube de Huawei".
  • Nota 3: para reglas específicas de vivo, consultar la documentación oficial de vivo.
  • Nota 4: OPPO implementará nuevas reglas de categorización de notificaciones a partir del 20 de noviembre de 2024. Para más detalles, consultar la documentación oficial de OPPO.
  • notify_level Int Opcional Niveles de alerta de mensajes de la barra de notificaciones de OPPO
  • Valores oficiales: 1 para barra de notificaciones, 2 para barra de notificaciones + pantalla de bloqueo, 16 para barra de notificaciones + pantalla de bloqueo + banner + vibración + tono.
  • El campo notify_level solo aplica a mensajes de "Servicio y comunicación".
  • Al usar el parámetro notify_level, se debe incluir el parámetro category.
  • small_icon_uri String Opcional Estilo de icono pequeño para mensajes del proveedor
  • Actualmente, admite los fabricantes Xiaomi / Huawei.
  • Campo preferente del proveedor; si no se rellena el campo del proveedor, se usa small_icon dentro de android
  • Xiaomi admite ID de icono grande del fabricante Xiaomi. EngageLab admite media_id y la ruta local del proveedor para Huawei. (Oficialmente, Xiaomi ya no admite iconos pequeños personalizados; se recomienda a los desarrolladores no seguir utilizando las funciones relacionadas con el small icon de Xiaomi).
  • small_icon_color String Opcional Color del estilo de icono pequeño del fabricante Xiaomi Para adaptarse al color del estilo de icono pequeño del mensaje del fabricante Xiaomi; si no se rellena, el valor predeterminado es gris (oficialmente, Xiaomi ya no admite iconos pequeños personalizados; se recomienda a los desarrolladores no seguir utilizando las funciones relacionadas con el small icon de Xiaomi).
    big_text String Opcional Estilo de texto grande para mensajes del proveedor
  • Para adaptarse al estilo de texto grande de mensajes del fabricante; actualmente, admite Huawei / Honor / Xiaomi / OPPO, donde Xiaomi y OPPO admiten hasta 128 caracteres.
  • Si no se rellena el campo del proveedor, el campo big_text se define en android.
  • Se utiliza cuando el campo style=1 dentro de android.
  • only_use_vendor_style Boolean Opcional Si se debe utilizar el estilo de configuración de su propio canal Si se debe usar únicamente el estilo configurado en su propio canal y no el estilo configurado en android; el valor predeterminado es false.
  • true: usar solo el estilo configurado por su propio canal.
  • false: se puede usar el estilo configurado en android.
  • big_picture_id String Opcional ID de imagen grande de OPPO
  • Obligatorio cuando style=3 (imagen grande). Se obtiene mediante la API de carga de imágenes y se usa aquí el ID devuelto.
  • small_picture_id String Opcional ID de icono pequeño de OPPO
  • Se obtiene mediante la API de carga de imágenes para icono pequeño y se usa aquí el ID devuelto.
  • Para unificar las estrategias de canales de múltiples proveedores y simplificar la lógica de configuración, el método de configuración del campo distribution_new se ajusta de la siguiente manera. Sus configuraciones heredadas a nivel de proveedor seguirán siendo válidas, pero se recomienda migrar gradualmente a configuraciones globales para evitar riesgos de compatibilidad en el futuro. (Las nuevas reglas entrarán en vigor a partir del 2025.04.03):

    • Prioridad de configuración (nuevas reglas)
      • Primera prioridad: configuración global third_party_channel.distribution_new (nuevo método recomendado)
        Ejemplo: "distribution_new": "pns_mtpush"
      • Segunda prioridad: configuración a nivel de proveedor third_party_channel.{vendor_key}.distribution_new (método heredado compatible)
        Solo tiene efecto cuando no se establece la configuración global
      • Sin configuración: estrategia predeterminada: pns_mtpush

    Notas de compatibilidad

    • Garantía de compatibilidad: las configuraciones heredadas a nivel de proveedor seguirán funcionando si no se establece el campo global, garantizando que no haya impacto en los servicios existentes.
    • Resolución de conflictos: si se configuran tanto el campo global como el campo a nivel de proveedor, solo se leerá el valor global y se ignorarán las configuraciones a nivel de proveedor.
    • Plan a largo plazo: distribution_new a nivel de proveedor puede quedar obsoleto en versiones futuras. Se recomienda adaptarse con antelación si es posible.
    Ejemplo de solicitud
    { "third_party_channel": { "distribution_new": "pns_mtpush", "xiaomi": { "channel_id": "*******", "small_icon_uri": "http://f6.market.xiaomi.com/download/MiPass/x/x.png", "small_icon_color": "#ABCDEF" }, "huawei": { "importance": "NORMAL", "small_icon_uri": "https://xx.com/xx.jpg", "only_use_vendor_style": true }, "oppo": { "channel_id": "*******", "big_picture_id": "", "small_picture_id": "" }, "vivo": { "pushMode": 0 }, "hmos": { "distribution_new": "pns_mtpush" } } }
                  
                  {
        "third_party_channel": {
            "distribution_new": "pns_mtpush",
            "xiaomi": {
                "channel_id": "*******",
                "small_icon_uri": "http://f6.market.xiaomi.com/download/MiPass/x/x.png",
                "small_icon_color": "#ABCDEF"
            },
            "huawei": {
                "importance": "NORMAL",
                "small_icon_uri": "https://xx.com/xx.jpg",
                "only_use_vendor_style": true
            },
            "oppo": {
                "channel_id": "*******",
                "big_picture_id": "",
                "small_picture_id": ""
            },
            "vivo": {
                "pushMode": 0
            },
            "hmos": {
                "distribution_new": "pns_mtpush"
            }
        }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    request_id

    ID de solicitud (request id), campo opcional definido por el cliente. Se utiliza para que el cliente identifique qué solicitud se está realizando y se devuelve en la respuesta.

    Ejemplo de solicitud

    { "request_id":"12345678" }
                  
                  {
          "request_id":"12345678"
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Ejemplo de retorno

    { "msg_id": "1225764", "request_id": "12345678" }
                  
                  {
        "msg_id": "1225764",
        "request_id": "12345678"
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Custom_args

    Campo opcional definido por el cliente, que no se devuelve en la respuesta y se devuelve en el callback.

    Ejemplo de solicitud

    { "custom_args":{ "args1": "args1" } }
                  
                  {
      "custom_args":{
        "args1": "args1"
      }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Parámetros de retorno

    Respuesta correcta

    Campo Tipo Opción Descripción
    request_id String Opcional El ID personalizado enviado en la solicitud se devuelve tal cual en la respuesta.
    message_id String Obligatorio ID de mensaje, que identifica de forma única un mensaje.
    < HTTP/1.1 200 OK < Content-Type: application/json {"request_id":"18","msg_id":"1828256757"}
                  
                  < HTTP/1.1 200 OK
    < Content-Type: application/json
    {"request_id":"18","msg_id":"1828256757"}
    
                
    Este bloque de código se muestra en una ventana flotante

    Respuesta fallida

    El código de estado HTTP es 4xx o 5xx y el cuerpo de la respuesta contiene los siguientes campos:

    Campo Tipo Opción Descripción
    code int Obligatorio Código de error; consultar la descripción de Códigos de error
    message String Obligatorio Detalles del error
    { "error":{ "code": 3002, "message": "Push.template field must be set correctly when type is template" } }
                  
                  {
        "error":{
        "code": 3002,
        "message": "Push.template field must be set correctly when type is template"
        }
    }
    
                
    Este bloque de código se muestra en una ventana flotante

    Respuestas de la llamada

    Código de estado HTTP

    Documento de referencia: HTTP-Status-Code

    Código de error

    Código Descripción Explicación detallada Código de estado HTTP
    20101 Parámetros de push no válidos El registration_id no es válido o no pertenece al appkey actual 400
    21001 Solo se admite el método HTTP Post No se admite el método Get 405
    21002 Falta un parámetro obligatorio Se debe corregir 400
    21003 Valor de parámetro no válido Se debe corregir 400
    21004 Error de verificación Se debe corregir; consultar: llamada para verificación 401
    21005 Cuerpo del mensaje demasiado grande Se debe corregir; el límite de longitud de Notification/Message es 4000 bytes 400
    21008 Parámetro app_key no válido Se debe corregir; comparar cuidadosamente el appkey transmitido con la información de la aplicación y comprobar si hay espacios adicionales 400
    21009 Error interno del sistema Póngase en contacto con el equipo de soporte 400
    21011 No se encontró un destino de push adecuado Comprobar el campo 'to' 400
    21015 Error de validación de parámetros de solicitud Existen parámetros inesperados 400
    21016 Error de validación de parámetros de solicitud Error de tipo de parámetro o la longitud del parámetro excede el límite 400
    21030 Tiempo de espera interno del servicio Reintentar más tarde 503
    21050 Parámetro event de live_activity incorrecto El parámetro event debe ser "start", "update" o "end" 400
    21051 Parámetro de audiencia de live_activity incorrecto Durante la creación de live activity, el destino de push solo puede ser difusión o basado en registro 400
    21052 Parámetro attributes-type de live_activity incorrecto Cuando event=start, attributes-type no puede estar vacío 400
    21053 Parámetro content-state de live_activity incorrecto content-state no puede estar vacío 400
    21054 Error de parámetro live_activity: no se permiten notificación y mensaje personalizado simultáneamente voip, message, notification, live_activity no pueden coexistir 400
    21055 live_activity iOS sin certificado p8 Live activity solo admite certificado p8 400
    21056 live_activity solo admite la plataforma iOS el parámetro platform debe ser ios 400
    21057 No se permite que el mensaje voip coexista con otros tipos de mensajes voip, message, notification, live_activity no pueden coexistir 400
    21058 voip solo admite la plataforma iOS el parámetro platform debe ser ios 400
    23006 Error de parámetro El big_push_duration del push a tasa fija excede el valor máximo de 1440 400
    23008 Interfaz con limitación de tasa La QPS de la interfaz de push de una sola aplicación alcanza el límite (500 qps) 400
    23009 Error de permisos de push La dirección IP actual de push no está en la lista blanca de IP de la aplicación 400
    27000 Error interno de memoria Reintentar 500
    27001 Error de parámetro La información de verificación está vacía 401
    27008 Error de parámetro Distribution dentro de third_party_channel no está vacío, pero el contenido alert de notification está vacío 401
    27009 Error de parámetro Formato no válido o vacío para distribution en third_party_channel 401
    21038 Error de permisos de push VIP caducado o no activado 401
    21306 Error de parámetro Los mensajes de notificación y los mensajes personalizados no pueden enviarse simultáneamente 401
    21059 Error de parámetro Este tipo de mensaje no admite big_push_duration 401

    Limitaciones de push

    Canal del proveedor Longitud del título Longitud del contenido Palabras sensibles Otras notas
    Canal EngageLab Sin límite, pero el tamaño total del mensaje está limitado Sin límite, pero el tamaño total del mensaje está limitado Palabras configuradas según la función de palabras sensibles La longitud de Notification/Message en AppPush está limitada a 4000 bytes.
    Canal Huawei Sin límite, pero tamaño total del mensaje < 4096 bytes; se recomienda título ≤ 40 caracteres Sin límite, pero tamaño total del mensaje < 4096 bytes; se recomienda contenido ≤ 1024 caracteres Está prohibido incluir contenido relacionado con el gobierno, nombres de líderes, independencia de Taiwán, etc. El permiso predeterminado para [Marketing Notification] es una notificación silenciosa, sin alertas de sonido ni vibración.
    Canal Honor Sin límite, pero tamaño total del mensaje < 4096 bytes Sin límite, pero tamaño total del mensaje < 4096 bytes Está prohibido incluir contenido relacionado con el gobierno, nombres de líderes, independencia de Taiwán, etc. -
    Canal Meizu ≤ 32 caracteres ≤ 100 caracteres Se prohíben caracteres especiales como #
  • Los caracteres chinos e ingleses se contabilizan como 1 carácter.
  • Algunos mensajes pueden almacenarse en la [Meizu Message Box] en la esquina superior derecha de los teléfonos Meizu.
  • Canal Xiaomi ≤ 50 caracteres ≤ 128 caracteres Se prohíben caracteres especiales como #, >>
  • Los caracteres chinos e ingleses se contabilizan como 1 carácter. Los emojis se contabilizan como dos caracteres.
  • Algunos mensajes pueden aparecer en las notificaciones no importantes de la barra de notificaciones.
  • Canal OPPO ≤ 50 caracteres La longitud del contenido está limitada por el estilo de notificación: 1) Estilo estándar (style=1): longitud de cadena de contenido ≤ 50; 2) Estilo de texto largo (style=2): longitud de cadena de contenido ≤ 128; 3) Estilo de imagen grande (style=3): longitud de cadena de contenido ≤ 50. Palabras configuradas según la función de palabras sensibles Cálculo de longitud de cadena: caracteres chinos, ingleses y símbolos especiales (p. ej., emojis) se contabilizan como 1 carácter.
    Canal de vivo ≤ 40 caracteres ≤ 100 caracteres
  • Se prohíben caracteres especiales como #, >>.
  • Se prohíbe que los mensajes formales contengan: números puros, inglés puro, símbolos puros, símbolos con números, test, test, llaves, corchetes, etc.
  • Tanto el chino como el inglés se contabilizan como 1 carácter.
  • Los permisos de notificación están deshabilitados de forma predeterminada.
  • Los mensajes operativos no pueden superar 5 envíos por dispositivo y día.
  • Los mensajes operativos idénticos no se pueden enviar al mismo dispositivo más de una vez al día.
  • Canal APNs ≤ 20 caracteres (40 caracteres en inglés); las partes excedidas mostrarán puntos suspensivos.
  • El Centro de notificaciones y la pantalla de bloqueo muestran hasta 110 caracteres, 55 caracteres chinos.
  • El banner superior muestra hasta 62 caracteres, 31 caracteres chinos; las partes excedidas mostrarán puntos suspensivos.
  • Palabras configuradas según la función de palabras sensibles El tamaño del cuerpo del mensaje está limitado a 4 KB (4096 bytes). El tamaño máximo para notificaciones VoIP es 5 KB (5120 bytes).
    Canal FCM Sin límite, pero el tamaño total del mensaje está limitado Sin límite, pero el tamaño total del mensaje está limitado Palabras configuradas según la función de palabras sensibles La longitud de Notification/Message en AppPush está limitada a 4000 bytes.
    Canal Harmony Sin límite, pero el tamaño total del mensaje está limitado Sin límite, pero el tamaño total del mensaje está limitado Palabras configuradas según la función de palabras sensibles El tamaño del cuerpo del mensaje no puede superar 4096 bytes (excluyendo el Push Token).

    Código de varios idiomas

    Idioma Código
    Inglés en
    Árabe ar
    Chino (simplificado) zh-Hans
    Chino (tradicional) zh-Hant
    Checo cs
    Danés da
    Neerlandés nl
    Francés fr
    Alemán de
    Hindi hi
    Italiano it
    Japonés ja
    Coreano ko
    Malayo ms
    Ruso ru
    Español es
    Tailandés th
    Vietnamita vi
    Indonesio id
    Noruego no
    Sueco sv
    Polaco pl
    Turco tr
    Hebreo he
    Portugués pt
    Rumano ro
    Húngaro hu
    Finés fi
    Griego el
    Ucraniano uk
    Lao lo
    Portugués (Portugal) pt_PT
    Portugués (Brasil) pt_BR
    Español (Argentina) es_AR
    Español (España) es_ES
    Español (América Latina) es_419
    Icon Solid Transparent White Qiyu
    Contacto