Implementación de Notificaciones Push en HarmonyOS NEXT

  1. Activación del servicio y configuración del identificador

1.1 Registro de la aplicación

Accede a la documentación oficial de Huawei para completar el proceso de registro y obtener el Client ID necesario.

1.2 Configuración en el manifiesto

En el archivo de configuarción del módulo (entry/src/main/module.json5), añade la siguiente entrada de metadatos:

{
  "module": {
    "nombre": "entry",
    "tipo": "entry",
    "descripcion": "Modulo principal",
    "mainElement": "EntryAbility",
    "deviceTypes": ["phone", "tablet"],
    "paginas": "$profile:main_pages",
    "habilidades": [],
    "metadatos": [
      {
        "nombre": "client_id",
        "valor": "tu_client_id_aqui"
      }
    ]
  }
}
  1. Obtención y registro del token de push

El siguiente código demuestra cómo solicitar el token de push dentro de la capacidad principal:

import { notificacionesPush } from '@kit.PushKit';
import { registro } from '@kit.PerformanceAnalysisKit';
import { ErrorNegocio } from '@kit.BasicServicesKit';
import { CapacidadUI, ConstanteCapacidad, Intencion } from '@kit.AbilityKit';

export default class CapacidadEntrada extends CapacidadUI {
  
  async alCrear(intencion: Intencion, paramInicio: ConstanteCapacidad.ParamInicio): Promise<void> {
    await this.solicitarTokenNotificacion();
  }

  private async solicitarTokenNotificacion(): Promise<void> {
    try {
      const token: string = await notificacionesPush.obtenerToken();
      registro.info(0x0000, 'PushService', 'Token obtenido exitosamente: %{public}s', token);
      
      // Envío al backend propio
      await this.enviarTokenAServidor(token);
    } catch (error) {
      const err: ErrorNegocio = error as ErrorNegocio;
      registro.error(0x0000, 'PushService', 'Error al obtener token: %{public}d - %{public}s', 
        err.codigo, err.mensaje);
    }
  }

  private async enviarTokenAServidor(tokenPush: string): Promise<void> {
    // Implementar llamada HTTP al servidor
  }
}
  1. Identificador anónimo de aplicación (AAID)

Para identificar dispositivos de forma única sin comprometre la privacidad del usuario, HarmonyOS proporciona el AAID (Anonymous Application Identifier). Este identificador de 32 caracteres presenta características particulares:

  • Exclusivo por instancia de aplicación
  • Inaccesible entre aplicaciones distintas
  • Diferente para cada desarrollador en el mismo dispositivo
  • Varía entre dispositivos para la misma aplicación

Situaciones que regeneran el AAID:

  • Reinstalación de la aplicación
  • Invocación manual del método de eliminación
  • Restablecimiento de fábrica del dispositivo
  • Limpieza de datos de la aplicación

Obtención del AAID

import { CapacidadUI, ConstanteCapacidad, Intencion } from '@kit.AbilityKit';
import { IdentificadorAnonimo } from '@kit.PushKit';
import { ErrorNegocio } from '@kit.BasicServicesKit';
import { registro } from '@kit.PerformanceAnalysisKit';

export default class CapacidadEntrada extends CapacidadUI {
  
  async alCrear(intencion: Intencion, paramInicio: ConstanteCapacidad.ParamInicio): Promise<void> {
    await this.recuperarIdentificadorDispositivo();
  }

  private async recuperarIdentificadorDispositivo(): Promise<void> {
    try {
      const idDispositivo: string = await IdentificadorAnonimo.obtenerAAID();
      registro.info(0x0000, 'IdentidadService', 'AAID recuperado: %{public}s', idDispositivo);
    } catch (error) {
      const err: ErrorNegocio = error as ErrorNegocio;
      registro.error(0x0000, 'IdentidadService', 'Fallo al obtener AAID: %{public}d', err.codigo);
    }
  }
}

El AAID resulta útil para correlacionar tokens de push con dispositivos específicos en tu infraestructura de notificaciones, manteniendo al mismo tiempo el anoniamto del usuario final.

Etiquetas: HarmonyOS PushKit AAID HUAWEI Push Service ArkTS

Publicado el 9-30 11:33