Guía de integración del SDK

Consejos de uso

Este documento es la guía de integración estándar del SDK de EngageLab para HarmonyOS. Se utiliza para orientar sobre el uso del SDK. De forma predeterminada, se asume que el lector ya está familiarizado con el uso básico de DevEco Studio y cuenta con ciertos conocimientos de programación en HarmonyOS.

La versión del SDK de EngageLab para HarmonyOS a la que corresponde esta guía es: 1.0.0 y versiones posteriores.

  • Actualmente se admite HarmonyOS API 12 y versiones posteriores.

Descripción de las funcionalidades del producto

EngageLab Push (engagelab) es un servicio de notificaciones push de extremo a extremo que permite entregar puntualmente mensajes del servidor a los dispositivos de los usuarios finales, lo que ayuda a los desarrolladores a mantener activamente la conexión con los usuarios, incrementando así la actividad de los usuarios y la retención de la aplicación. El cliente de EngageLab Push admite múltiples plataformas: Android, iOS, HarmonyOS y QuickApp.

Este SDK para HarmonyOS facilita a los desarrolladores, basándose en EngageLab, la incorporación rápida de funcionalidades push a aplicaciones HarmonyOS.

Funcionalidades principales

  • Mantener una conexión persistente con el servidor para que los mensajes puedan entregarse al cliente en tiempo real.
  • Recibir notificaciones y transferir al desarrollador de la app la información relacionada.

Características principales

  • La conexión mantenida por el cliente consume pocos recursos y baja energía.
  • Interfaces ricas del SDK, que permiten personalizar el estilo de aviso en la barra de notificaciones.
  • Servidores con gran capacidad y alta estabilidad.

Método de integración

Integración automática

Dependencia har

Descripción: Añadir en el archivo oh-package.json5 del módulo entry

"dependencies": { "@engagelab/push": "x.x.x" // Enter the corresponding version number, for example: "@engagelab/push": "1.0.0" }
              
              "dependencies": {
    "@engagelab/push": "x.x.x" // Enter the corresponding version number, for example: "@engagelab/push": "1.0.0"
}

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

Descripción 2: Actualmente, har es bytecode, por lo que se debe actualizar el IDE a 5.0.3.500 o superior y, en el archivo build-profile.json5 a nivel de proyecto (nivel superior/exterior), configurar "useNormalizedOHMUrl": true

"products": [ { "buildOption": { "strictMode": { "useNormalizedOHMUrl": true // Enable } }, "name": "default", "signingConfig": "default", "compileSdkVersion": "5.0.0(12)", "compatibleSdkVersion": "5.0.0(12)", "runtimeOS": "HarmonyOS" } ]
              
              "products": [
  {
    "buildOption": {
      "strictMode": {
        "useNormalizedOHMUrl": true // Enable
      }
    },
    "name": "default",
    "signingConfig": "default",
    "compileSdkVersion": "5.0.0(12)",
    "compatibleSdkVersion": "5.0.0(12)",
    "runtimeOS": "HarmonyOS"
  }
]

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

Integración manual

Enlace de descarga del paquete comprimido de integración: Ir a descargar; contenido del paquete comprimido de integración

Contenido del paquete comprimido de integración engagelab-hmos-x.x.x-release.zip

  • engagelab-hmos-x.x.x-release.har
    • Paquete principal de los servicios para desarrolladores de EngageLab.
  • doc
    • Documentación
  • entry
    • Código de un proyecto demo de hmos.

Integración del archivo har

  • Descomprimir el paquete comprimido de integración engagelab-hmos-x.x.x-release.zip.
  • Copiar engagelab-hmos-x.x.x-release.har en el directorio entry/hars/ de su proyecto.

Descripción: Asociar engagelab-hmos-x.x.x-release.har. Por ejemplo, si se copia el har en el directorio entry/hars/, añadir en el archivo oh-package.json5 del módulo entry:

"dependencies": { "jg_harmony_har": "./hars/engagelab-hmos-x.x.x-release.har" // This path corresponds to where engagelab-hmos-x.x.x-release.har is stored }
              
              "dependencies": {
    "jg_harmony_har": "./hars/engagelab-hmos-x.x.x-release.har" // This path corresponds to where engagelab-hmos-x.x.x-release.har is stored
}

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

Descripción 2: Actualmente, har es bytecode, por lo que se debe actualizar el IDE a 5.0.3.500 o superior y, en el archivo build-profile.json5 a nivel de proyecto, configurar "useNormalizedOHMUrl": true

"products": [ { "buildOption": { "strictMode": { "useNormalizedOHMUrl": true // Enable } }, "name": "default", "signingConfig": "default", "compileSdkVersion": "5.0.0(12)", "compatibleSdkVersion": "5.0.0(12)", "runtimeOS": "HarmonyOS" } ]
              
              "products": [
  {
    "buildOption": {
      "strictMode": {
        "useNormalizedOHMUrl": true // Enable
      }
    },
    "name": "default",
    "signingConfig": "default",
    "compileSdkVersion": "5.0.0(12)",
    "compatibleSdkVersion": "5.0.0(12)",
    "runtimeOS": "HarmonyOS"
  }
]

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

Configurar la información de la plataforma hmos

Para utilizar la funcionalidad push, se debe configurar la información de la plataforma HarmonyOS.

Los pasos principales son:

  • Obtener en la plataforma hmos el client_id correspondiente a la aplicación del proyecto.

  • Habilitar el servicio push en la plataforma hmos.

  • Configurar localmente el client_id de la aplicación.

    "module": { "metadata": [ { "name": "client_id", "value": "YOUR_ID" } ] }
                  
                  "module": {
      "metadata": [
        {
          "name": "client_id",
          "value": "YOUR_ID"
        }
      ]
    }
    
                
    Este bloque de código se muestra en una ventana flotante
  • Configurar la firma

    • Paso 3: Solicitar el Perfil de publicación; el formato del Profile es .p7b

Configurar la información de la plataforma EngageLab

  • Crear una aplicación en la plataforma EngageLab y asegurarse de que coincidan el nombre del paquete y el appKey.
{ "app": { "bundleName": "YOUR_BUNDLE_NAME" } }
              
              {
  "app": {
    "bundleName": "YOUR_BUNDLE_NAME"
  }
}

            
Este bloque de código se muestra en una ventana flotante
export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setAppKey("YOUR_APPKEY") // Call before init } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setAppKey("YOUR_APPKEY") // Call before init
  }
}

            
Este bloque de código se muestra en una ventana flotante
export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setCallBackMsg(YourCallBackMsgClass) // Receive callback info, call before init } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setCallBackMsg(YourCallBackMsgClass) // Receive callback info, call before init
  }
}

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

Configurar la página de destino de la redirección de la notificación

"url": "YOUR_SCHEME://YOUR_HOST:YOUR_PORT/YOUR_PATH"
              
              "url": "YOUR_SCHEME://YOUR_HOST:YOUR_PORT/YOUR_PATH"

            
Este bloque de código se muestra en una ventana flotante
"actions": ["YOUR_ACTIONS"]
              
              "actions": ["YOUR_ACTIONS"]

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

Solicitar habilitar el interruptor de notificaciones

  • Introducir el valor correspondiente.

Configurar información personalizada

if (jg) { // If true, it has already been processed return }
              
              if (jg) { // If true, it has already been processed
  return
}

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

Configurar mensajes de extensión de notificación

  • Completar la lógica de locución según el negocio.
return {} // If you want to modify the notification, you can return an object with data
              
              return {} // If you want to modify the notification, you can return an object with data

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

Habilitar la funcionalidad de negocio push

export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setCallBackMsg(YourCallBackMsgClass) // Call before init EPushInterface.setAppKey("YOUR_APPKEY") // Call before init EPushInterface.init(this.context.getApplicationContext()) } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setCallBackMsg(YourCallBackMsgClass) // Call before init
    EPushInterface.setAppKey("YOUR_APPKEY") // Call before init
    EPushInterface.init(this.context.getApplicationContext())
  }
}

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

Configurar permisos

"abilities": [ "EntryAbility" // Usually the main page is used ]
              
              "abilities": [
  "EntryAbility" // Usually the main page is used
]

            
Este bloque de código se muestra en una ventana flotante
atManager.requestPermissionsFromUser(context, permissions).then((data) => { // Authorization granted, then enable push business EPushInterface.init(this.context.getApplicationContext()) })
              
              atManager.requestPermissionsFromUser(context, permissions).then((data) => {
  // Authorization granted, then enable push business
  EPushInterface.init(this.context.getApplicationContext())
})

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

Funciones avanzadas

Recomendación para obtener el Registration ID

Código de ejemplo:

EPushInterface.getRegistrationID();
              
              EPushInterface.getRegistrationID();

            
Este bloque de código se muestra en una ventana flotante
Icon Solid Transparent White Qiyu
Contacto