API del Web SDK
Autenticación
Cuando el desarrollador realiza la inicialización, debe proporcionar la información necesaria. Esta estructura de datos la genera el servidor del desarrollador y se envía al navegador; se utiliza para la inicialización de MTpush, mediante la cual el desarrollador autoriza al navegador a ejecutarse. Los desarrolladores deben garantizar que todos los usuarios que puedan llamar para obtener estos datos sean usuarios legítimos.
Estructura de datos de inicialización
interface MTInitInfo {
website_push_id: string;
code: number;
master_secret: string;
passwd: string;
pull: number;
regid: string;
sess: string;
tagalias: number;
uid: number;
vapid_pubkey: string;
}
type dataType = {
code: number,
content: string,
message: string,
};
interface InitType {
appkey: string; //The appkey of the application registered on the URORA platform by the developer, required
user_str: string; //Unique identifier for the user, required
swUrl?: string; //Default "/sw.min." + sdkEnv.version + ".js"
debugMode?: boolean; //Default false
webSocketUrl?: string; //If not provided, baseUrl will be used
fail?: (data: dataType | undefined) => void; //Callback for initialization failure
success?: (data: dataType | undefined) => void; //Callback for successful initialization
webPushcallback?: def;
canGetInfo?: (d: MTInitInfo) => void;
custom?: (Callback: () => void) => void; //Callback for custom prompt availability, call Callback after operation to apply
maCompletion?: (code: number, msg: string) => void; //Callback for ma-sdk initialization completion
openUrl?: string; // Enlace de redirección al hacer clic en una notificación
encodeSwUrl?: boolean; // Si se debe codificar swUrl
regidSearchPath?: string; // Ruta de la página para consultar el Registration ID
}
- Descripción de parámetros:
- openUrl: URL que se abre al hacer clic en una notificación
- Si no se especifica URL al enviar la notificación, se usa este valor como enlace de redirección;
- Si no se define, por defecto se redirige al dominio de integración;
- En integración multi-dominio, este parámetro permite redirigir a la URL correspondiente;
- encodeSwUrl: Si se debe codificar swUrl
- Útil cuando swUrl contiene caracteres especiales (p. ej. @) y el servidor restringe el acceso a esa URL, lo que puede hacer fallar el registro del Service Worker; añadir mecanismo de re-registro y codificar swUrl en los reintentos.
- regidSearchPath: Ruta de la página para consultar el Registration ID; por defecto /engagelab/regid. Ver Guía de consulta del Registration ID.
- openUrl: URL que se abre al hacer clic en una notificación
Solo se puede registrar un service worker dentro del mismo ámbito (scope). Cuando, al informar de una inicialización correcta, se muestre un error similar a "Failed to execute 'subscribe' on 'PushManager': Subscription failed - no active Service Worker", se deben comprobar posibles conflictos con otros service workers. Es posible que sea necesario fusionar los service workers o resolver el ámbito (scope) del service worker.
Inicialización del SDK
Descripción de la interfaz
Inicializar la interfaz.
window.MTpushInterface.init(Object:InitType)
Descripción de parámetros
- Para obtener más información, consulte Descripción de InitType.
- Descripción de los datos del objeto de callback:
| Nombre del parámetro | Tipo de parámetro | Descripción del parámetro |
|---|---|---|
| code | number | Código devuelto; 0 significa éxito, otros valores indican fallo; consulte el código de error |
| message | string | Descripción del resultado |
| content | string | Devuelve el mensaje de error si el registro falla con el código 1003 |
Ejemplo de llamada
MTpushInterface.init({
appkey: "xxx",
user_str: "adminDemo",
fail(data) {
console.log("Failed to create online push", data);
},
success(data) {
console.log("Online push created successfully", data);
},
webPushcallback(cod, tip) {
console.log("The status code and prompt the user gets", code, tip);
},
//swUrl?: string; //default "/sw.min." + sdkEnv.version + ".js"
canGetInfo(d) {
//At this time, you can get the RegId or get all the data in d
console.log("Get RegId", MTpushInterface.getRegistrationID(), d);
// MTpushInterface.setTagsAlias({ tags: ["test1", "test2"], alias: "swefgwwefwfwfwf" });
},
custom: (reqPermission) => {
//When using a custom prompt configuration, you must call reqPermission to request and configure permissions.
document.getElementById("xx")?.addEventListener("click", reqPermission);
},
});
Obtener RegistrationID
Descripción de la interfaz
Se debe llamar a esta API para obtener el RegistrationID correspondiente a la cuenta actual. El valor correspondiente solo se devuelve después de que la firma de inicialización sea correcta; de lo contrario, se devuelve una cadena vacía. Este método debe llamarse después de que se active el callback canGetInfo.
window.MTpushInterface.getRegistrationID()
Ejemplo de llamada
var rid = window.MTpushInterface.getRegistrationID();
Detener push
Se debe llamar a esta API para desconectar la conexión push persistente establecida con el backend y dejar de recibir mensajes push.
window.MTpushInterface.mtPush.stopPush()
Monitorización de mensajes push
Descripción de la interfaz
Se recomienda llamar al listener de mensajes antes de la inicialización.
window.MTpushInterface.onMsgReceive(fn)
Descripción de parámetros
| Nombre del parámetro | Tipo de parámetro | Descripción del parámetro |
|---|---|---|
| fn | function | Función de recepción y procesamiento de mensajes |
Ejemplo de llamada
window.MTpushInterface.onMsgReceive(function (res) {
if(res.type===0){
// res.data.messages[]
// res.data.messages[].msg_id
// res.data.messages[].title
// res.data.messages[].content
// res.data.messages[].extras
}else{
// res.data.title
}
});
Datos devueltos
| Nombre del parámetro | Tipo de parámetro | Descripción del parámetro |
|---|---|---|
| type | number | |
| data | Object | Contenido del mensaje |
Array de mensajes del canal de Engagelab (messages)
| Nombre del parámetro | Tipo de parámetro | Descripción del parámetro |
|---|---|---|
| msg_id | string | ID del mensaje |
| title | string | Título del mensaje |
| content | string | Contenido del mensaje |
| extras | Object | Campos adicionales del mensaje |
Datos de mensajes del canal del sistema
Se admite la interfaz w3c NotificationOptions; para más información, consulte MDN Web Docs.
Comprobar el estado del servicio push
window.MTpushInterface.getPushAuthority()
La estructura de datos devuelta es la siguiente:
{
mtPush: {
code:1, //1 is successful, -1 is in initialization, 0 is failed
msg:'success'
},
webPush: {
code:1, // 0 webpush is not available (browser does not support it) 1 is available 2 permission is disabled 3 permission is not confirmed
msg:'success'
}
}
Códigos de error del objeto WebPush
| code | msg | Observaciones |
|---|---|---|
| 0 | The browser does not support the Notifications API | El navegador no admite la API de notificaciones |
| 1 | Notification permissions available, message subscription successful. | Permisos de notificación disponibles; suscripción de mensajes correcta |
| 2 | Notification permissions have been disabled, message subscription failed. | Los permisos de notificación se han deshabilitado; la suscripción de mensajes ha fallado |
| 3 | Notification permissions have not been confirmed, message subscription has not been performed. | Los permisos de notificación no se han confirmado; no se ha realizado la suscripción de mensajes |
| -1 | The browser does not support Service Worker. | El navegador no admite Service Worker |
| -2 | Service Worker does not support HTTP. | Service Worker no admite el protocolo HTTP |
| -3 | Service Worker registration failed. | Fallo en el registro de Service Worker |
| -4 | Notification permission is available, but message subscription failed. | Los permisos de notificación están disponibles, pero la suscripción de mensajes ha fallado |
| -5 | Subscription has been canceled | Se ha cancelado la suscripción |
Obtener permisos de notificación del navegador
window.MTpushInterface.getWebPermission()
Descripción de parámetros devueltos
- granted : Disponible
- denied : Deshabilitado
- default: Permiso no confirmado
Informar datos de mensajes personalizados
Si es necesario realizar estadísticas de datos de mensajes personalizados, utilice la interfaz de informe personalizado para enviar los datos.
window.MTpushInterface.customClickReport('msg_id'); // msg_id is the msg_id of the custom message
Monitorización de desconexión
Descripción de la interfaz
Si se produce una desconexión después de una inicialización correcta, el SDK intentará automáticamente volver a conectarse y firmar.
Se recomienda llamar a este listener de eventos antes de la inicialización y volver a llamar a la inicialización después de recibir este evento.
window.MTpushInterface.mtPush.onDisconnect(fn)
Ejemplo de llamada
window.MTpushInterface.mtPush.onDisconnect(function () {
});
Cancelar la suscripción del navegador
Cancelar la suscripción a las notificaciones. Este método puede utilizarse cuando no se necesita recibir notificaciones al cerrar sesión en una cuenta o cuando el nivel de privacidad de algunas cuentas es alto.
MTpushInterface.unSubscribe();
Establecer TagsAlias
MTpushInterface.setTagsAlias({ tags: ["test1", "test2"], alias: "aliass" });
Descripción de parámetros
| Nombre del parámetro | Tipo de parámetro | Descripción del parámetro |
|---|---|---|
| tags | string[] | Obligatorio; la longitud máxima del array es 1000 y cada elemento tiene un máximo de 40 caracteres |
| alias | string | Obligatorio; máximo 40 caracteres |
Descripción de la interfaz
Los desarrolladores pueden establecer y eliminar etiquetas bajo un alias específico mediante esta interfaz. Esta interfaz utiliza una lógica de sobrescritura. Si se configura una cadena vacía, se pueden eliminar las etiquetas existentes.
Visualización múltiple de indicaciones por categoría
window.MTpushInterface.promptPushCategories();
Descripción de la interfaz
Tras suscribirse el usuario a las notificaciones push, los desarrolladores pueden mostrar las indicaciones por categoría varias veces según sea necesario. Esto debe llamarse después de que el SDK esté inicializado.
Callback de visualización de mensajes push
Descripción de la interfaz
Se recomienda llamar al listener de mensajes antes de la inicialización.
Ejemplo de llamada
window.MTpushInterface.onMsgDisplay((msgData) => {});
Descripción de parámetros
Descripción del parámetro de callback de mensajes de notificación msgData:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
engagelab_appkey: string;
engagelab_passwd: string;
engagelab_uid: string;
engagelab_url: string;
type: string; // 0: Engagelab channel message 1: System channel message
}
Descripción del parámetro de callback de mensajes in-app msgData:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
type: string;
}
Nota:
- En el modo de edición HTML para mensajes in-app, los parámetros de callback
titleycontentson cadenas vacías.- Los mensajes entregados a través del canal del sistema en el navegador Safari no pueden recibir callbacks de visualización.
Callback de clic de mensajes push
Descripción de la interfaz
Se recomienda llamar al listener de mensajes antes de la inicialización.
Ejemplo de llamada
window.MTpushInterface.onMsgClick((msgData) => {});
Descripción de parámetros
Descripción del parámetro de callback de mensajes de notificación msgData:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
engagelab_appkey: string;
engagelab_passwd: string;
engagelab_uid: string;
engagelab_url: string;
position: string; // Click position, 'msgBody' | Button ID
type: string; // 0: Engagelab channel message 1: System channel message
}
Descripción del parámetro de callback de mensajes in-app msgData:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
position: 'msgBody' | 'mainBtn' | 'subBtn' | 'closeBtn';
type: string;
}
Nota:
- En el modo de edición HTML para mensajes in-app, el valor de
positionlo determina el desarrollador y los parámetros de callbacktitleycontentson cadenas vacías.- Los mensajes entregados a través del canal del sistema en el navegador Safari no pueden recibir callbacks de clic.
Código de error
| code | message | Observaciones |
|---|---|---|
| 0 | success | Llamada correcta |
| 1000 | unknown error | Error desconocido |
| 1001 | initing , please try again later | Inicializando; inténtelo de nuevo más tarde |
| 1002 | invalid config | Error en la configuración inicial |
| 1003 | init failed | La inicialización ha fallado; consulte la salida de la consola para obtener detalles |
| 1004 | init timeout | Tiempo de espera de inicialización agotado |
| 1005 | network error | Error de red; sin red o no se puede conectar a WebSocket |
| 1006 | failed to get baseUrl and reportUrl | La solicitud de la API get-webaddr ha fallado; consulte el campo content del callback para obtener detalles |
| 1007 | authentication failed | La autenticación ha fallado; consulte el campo content del callback para obtener detalles |
| 1008 | region restricted | Restricción regional |
