SDK-Integrationsleitfaden: HarmonyOS Push-Benachrichtigungen mit EngageLab

Hinweise zur Nutzung

Dieser Leitfaden beschreibt die Standardintegration des EngageLab HarmonyOS SDK und richtet sich an Entwickler:innen, die bereits mit den Grundlagen von DevEco Studio sowie der HarmonyOS-Programmierung vertraut sind.

Die Anleitung gilt für EngageLab HarmonyOS SDK Version 1.0.0 und alle nachfolgenden Versionen.

  • Aktuell werden HarmonyOS API 12 und höher unterstützt.

Produktfunktionsbeschreibung

EngageLab Push (engagelab) ist ein End-to-End-Push-Service, der es ermöglicht, Nachrichten vom Server zeitnah an die Endgeräte der Nutzer:innen zu senden. So können Sie die Verbindung zu Ihren Nutzer:innen aufrechterhalten, die Nutzeraktivität steigern und die App-Retention erhöhen. Der EngageLab Push-Client unterstützt Android, iOS, HarmonyOS und QuickApp.

Das HarmonyOS SDK erleichtert es Entwickler:innen, Push-Benachrichtigungen schnell und unkompliziert in HarmonyOS-Apps zu integrieren.

Hauptfunktionen

  • Aufbau und Aufrechterhaltung einer dauerhaften Verbindung zum Server, damit Push-Benachrichtigungen sofort an den Client übermittelt werden können
  • Empfang von Push-Benachrichtigungen und Weiterleitung relevanter Informationen an die Entwickler-App

Hauptmerkmale

  • Ressourcenschonende und energieeffiziente Verbindung auf dem Client
  • Vielfältige SDK-Schnittstellen, anpassbare Benachrichtigungsstile
  • Leistungsfähiger und stabiler Serverbetrieb

Integrationsmethoden

Automatische Integration

har-Abhängigkeit

Hinweis: Fügen Sie im oh-package.json5 des entry-Moduls folgende Zeile hinzu:

"dependencies": { "@engagelab/push": "x.x.x" // Gewünschte Version eintragen, z. B.: "@engagelab/push": "1.0.0" }
              
              "dependencies": {
    "@engagelab/push": "x.x.x" // Gewünschte Version eintragen, z. B.: "@engagelab/push": "1.0.0"
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Hinweis 2: Da die har-Datei nun als Bytecode vorliegt, stellen Sie sicher, dass Ihre IDE auf Version 5.0.3.500 oder höher aktualisiert ist. Aktivieren Sie im projektweiten build-profile.json5 die Option "useNormalizedOHMUrl": true:

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Manuelle Integration

Download-Link für das Integrationspaket: Jetzt herunterladen.
Das Integrationspaket enthält folgende Komponenten:

Inhalt des engagelab-hmos-x.x.x-release.zip

  • engagelab-hmos-x.x.x-release.har
    • Hauptbibliothek für die EngageLab-Entwicklerdienste
  • doc
    • Dokumentation
  • entry
    • HMOS-Demo-Projekt, das die grundlegende Nutzung des EngageLab SDK demonstriert und als Referenz dient

Integration der har-Datei

  • Entpacken Sie das Archiv engagelab-hmos-x.x.x-release.zip.
  • Kopieren Sie engagelab-hmos-x.x.x-release.har in das Verzeichnis entry/hars/ Ihres Projekts (der Ordnername kann angepasst werden).

Hinweis: Um die har-Datei zu referenzieren, fügen Sie im oh-package.json5 des entry-Moduls Folgendes hinzu:

"dependencies": { "jg_harmony_har": "./hars/engagelab-hmos-x.x.x-release.har" // Pfad zur har-Datei anpassen }
              
              "dependencies": {
    "jg_harmony_har": "./hars/engagelab-hmos-x.x.x-release.har" // Pfad zur har-Datei anpassen
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Hinweis 2: Da die har-Datei nun als Bytecode vorliegt, stellen Sie sicher, dass Ihre IDE auf Version 5.0.3.500 oder höher aktualisiert ist. Aktivieren Sie im projektweiten build-profile.json5 die Option "useNormalizedOHMUrl": true:

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Konfiguration der HMOS-Plattforminformationen

Für die Push-Funktionalität müssen HarmonyOS-Plattforminformationen konfiguriert werden.

Erforderliche Schritte:

Konfiguration der EngageLab-Plattforminformationen

Nach Abschluss der obigen Schritte müssen Sie noch die EngageLab-Plattforminformationen konfigurieren.

Hauptschritte:

  • Erstellen Sie eine App auf der EngageLab-Plattform und stellen Sie sicher, dass Paketname und appKey mit den Angaben auf der Plattform übereinstimmen.

    Hinweis 1:
    Paketname im lokalen Projekt konfigurieren – im app.json5 des AppScope-Projekts:

{ "app": { "bundleName": "IhrPaketname", } }
              
              {
  "app": {
    "bundleName": "IhrPaketname",
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Hinweis 2:
EngageLab appKey (wird nach dem Erstellen der App im EngageLab-Backend generiert) im Code wie folgt setzen:

export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setAppKey("IhrAppKey") // Vor init aufrufen } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setAppKey("IhrAppKey")   // Vor init aufrufen
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Hinweis 3:
Callback-Informationen im Code wie folgt konfigurieren:

export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setCallBackMsg(InstanzDerCallBackMsg-Klasse) // Vor init aufrufen } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setCallBackMsg(InstanzDerCallBackMsg-Klasse)  // Vor init aufrufen
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Konfiguration der Benachrichtigungs-Weiterleitungsseite

Push-Benachrichtigungen können auf eine bestimmte App-Seite weitergeleitet werden.

Seiten können per URI oder per Action gematcht werden:

  • Über URIs: Die Seite wird anhand der URI gematcht, beim Push ist dann url=IhrScheme://IhrHost:IhrPort/IhrPath.
  • Hinweis: Bei der URI-Methode muss actions als leerer String konfiguriert werden.
{ "exported": true, "skills": [ { "actions": [""], // actions MUSS leer sein "uris": [ { "scheme": "IhrScheme", "host": "IhrHost", "port": "IhrPort", "path": "IhrPath" } ] } ] }
              
                    {
        "exported": true,
        "skills": [
          {
            "actions": [""], // actions MUSS leer sein
            "uris": [
              {
                "scheme": "IhrScheme",
                "host": "IhrHost",
                "port": "IhrPort",
                "path": "IhrPath"
              }
            ]
          }
        ]
      }

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Über Actions: Die Seite wird anhand des Actions-Werts gematcht, beim Push ist actions=IhrAction.
{ "exported": true, "skills": [ { "actions": ["IhrAction"], } ] }
              
                    {
        "exported": true,
        "skills": [
          {
            "actions": ["IhrAction"], 
          }
        ]
      }

            
Diesen Codeblock im schwebenden Fenster anzeigen

Push-Benachrichtigungsberechtigung beantragen

Ohne aktivierte Push-Benachrichtigungsberechtigung werden keine Push-Benachrichtigungen empfangen.

Erforderliche Schritte:

  • Beim ersten Start der App Push-Benachrichtigungsberechtigung beantragen:
export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { notificationManager.requestEnableNotification().then(() => { hilog.info(0x0000, TAG, '%{public}s', `requestEnableNotification Erfolg`); }).catch((err: Base.BusinessError) => { hilog.error(0x0000, TAG, '%{public}s', `requestEnableNotification fehlgeschlagen, Code: ${err.code}, Nachricht: ${err.message}`); }); } }
              
              export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    notificationManager.requestEnableNotification().then(() => {
      hilog.info(0x0000, TAG, '%{public}s', `requestEnableNotification Erfolg`);
    }).catch((err: Base.BusinessError) => {
      hilog.error(0x0000, TAG, '%{public}s', `requestEnableNotification fehlgeschlagen, Code: ${err.code}, Nachricht: ${err.message}`);
    });
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Konfiguration benutzerdefinierter Push-Nachrichten

Um benutzerdefinierte Push-Nachrichten, die über den HarmonyOS-Kanal gesendet werden, zu verarbeiten, gehen Sie wie folgt vor:

Schritt 1

  • Erstellen Sie im Verzeichnis src/main/resources/base/profile/ des Modulprojekts die Datei PushMessage.json mit folgendem Inhalt:
{ "path": "pushmessage/t_push_message", "type": "rdb", "scope": "application" }
              
              {
  "path": "pushmessage/t_push_message",
  "type": "rdb",
  "scope": "application"
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • path: Muss pushmessage/t_push_message sein (Name der Datenbank und Tabelle)

  • type: Muss rdb sein (relationale Datenbank)

  • scope: application (App-weit) oder module (hap-Modul-weit)

  • Ergänzen Sie im src/main/module.json5 des Moduls unter proxyData folgende Konfiguration:

{ "module": { "proxyData":[{ "uri": "datashareproxy://{bundleName}/PushMessage", "requiredWritePermission": "ohos.permission.WRITE_PRIVACY_PUSH_DATA", "metadata":{ "name": "dataProperties", "resource": "$profile:PushMessage" } }] } }
              
              {
  "module": {
    "proxyData":[{
      "uri": "datashareproxy://{bundleName}/PushMessage",
      "requiredWritePermission": "ohos.permission.WRITE_PRIVACY_PUSH_DATA",
      "metadata":{
        "name": "dataProperties",
        "resource": "$profile:PushMessage"
      }
    }]
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • uri: Muss datashareproxy://{bundleName}/PushMessage sein ({bundleName} ersetzen)
  • requiredWritePermission: Muss ohos.permission.WRITE_PRIVACY_PUSH_DATA sein
  • metadata: name = dataProperties, resource = $profile:PushMessage

Schritt 2

  • Importieren Sie im Ability (z. B. PushMessageAbility) das push-Modul.
  • Hinweis: Nur UIAbility kann BACKGROUND-Nachrichten empfangen.
import { UIAbility } from '@kit.AbilityKit'; import { EPushInterface } from '@engagelab/push'; import { pushCommon, pushService } from '@kit.PushKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; const TAG: string = 'engagelab-JLog-PushMessageAbility' export default class PushMessageAbility extends UIAbility { onCreate(): void { try { // Parameter von receiveMessage MUSS 'BACKGROUND' sein pushService.receiveMessage('BACKGROUND', this, async (data: pushCommon.PushPayload) => { let jg = await EPushInterface.customMessageBackgroundData(data) if (jg) { // true = bereits verarbeitet return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'BACKGROUND fehlgeschlagen:'+JSON.stringify(e)); } }
              
              import { UIAbility } from '@kit.AbilityKit';
import { EPushInterface } from '@engagelab/push';
import { pushCommon, pushService } from '@kit.PushKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

const TAG: string = 'engagelab-JLog-PushMessageAbility'
export default class PushMessageAbility extends UIAbility {
  onCreate(): void {
    try { // Parameter von receiveMessage MUSS 'BACKGROUND' sein
      pushService.receiveMessage('BACKGROUND', this, async (data: pushCommon.PushPayload) => {
        let jg = await EPushInterface.customMessageBackgroundData(data)
        if (jg) { // true = bereits verarbeitet
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'BACKGROUND fehlgeschlagen:'+JSON.stringify(e));
    }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Ergänzen Sie im Abschnitt abilities des src/main/module.json5 die Action action.ohos.push.listener (nur eine Ability darf diese Action definieren; falls uris mit angegeben werden, muss uris leer sein):
"abilities": [ { "name": "PushMessageAbility", "srcEntry": "./ets/entryability/PushMessageAbility.ets", "launchType": "singleton", "startWindowIcon": "$media:icon", "startWindowBackground": "$color:start_window_background", "skills": [ { "actions": [ "action.ohos.push.listener" ] } ] } ]
              
              "abilities": [
      {
        "name": "PushMessageAbility",
        "srcEntry": "./ets/entryability/PushMessageAbility.ets",
        "launchType": "singleton",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "skills": [
          {
            "actions": [
              "action.ohos.push.listener"
            ]
          }
        ]
      }
]

            
Diesen Codeblock im schwebenden Fenster anzeigen

Erweiterte Push-Benachrichtigungen konfigurieren

So konfigurieren Sie erweiterte Push-Benachrichtigungen:

Schritt 1

  • Wenn der Prozess nicht existiert, wird der Notification Extension Process durchlaufen. In diesem Prozess können Sie z. B. Sprachausgabe realisieren und bestimmte Nachrichteninhalte (z. B. title, body) zurückgeben, um die aktuelle Nachricht zu überschreiben. Push Kit zeigt dann die Benachrichtigung an.
  • Erstellen Sie eine Komponente vom Typ ExtensionAbility, die von RemoteNotificationExtensionAbility erbt, überschreiben Sie die Methode onReceiveMessage() und rufen Sie EPushInterface.receiveExtraDataMessage auf:
import { pushCommon, RemoteNotificationExtensionAbility } from '@kit.PushKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { EPushInterface } from '@engagelab/push'; const TAG: string = 'engagelab-JLog-RemoteNotificationExtAbility' export default class RemoteNotificationExtAbility extends RemoteNotificationExtensionAbility { async onReceiveMessage(remoteNotificationInfo: pushCommon.RemoteNotificationInfo): Promise<pushCommon.RemoteNotificationContent> { hilog.info(0x0000, TAG, 'onReceiveMessage, remoteNotificationInfo: %{public}s', JSON.stringify(remoteNotificationInfo)); let jMessageExtra = await EPushInterface.receiveExtraDataMessage(this, remoteNotificationInfo); hilog.info(0x0000, TAG, 'onReceiveMessage jMessageExtra:' + JSON.stringify(jMessageExtra)); return {} // Um die Benachrichtigung zu ändern, können Sie hier Daten zurückgeben } onDestroy(): void { hilog.info(0x0000, TAG, 'RemoteNotificationExtAbility onDestroy.'); } }
              
              import { pushCommon, RemoteNotificationExtensionAbility } from '@kit.PushKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { EPushInterface } from '@engagelab/push';

const TAG: string = 'engagelab-JLog-RemoteNotificationExtAbility'

export default class RemoteNotificationExtAbility extends RemoteNotificationExtensionAbility {
  async onReceiveMessage(remoteNotificationInfo: pushCommon.RemoteNotificationInfo): Promise<pushCommon.RemoteNotificationContent> {
    hilog.info(0x0000, TAG, 'onReceiveMessage, remoteNotificationInfo: %{public}s',
      JSON.stringify(remoteNotificationInfo));
    let jMessageExtra = await EPushInterface.receiveExtraDataMessage(this, remoteNotificationInfo);
    hilog.info(0x0000, TAG, 'onReceiveMessage jMessageExtra:' + JSON.stringify(jMessageExtra));
    return {} // Um die Benachrichtigung zu ändern, können Sie hier Daten zurückgeben
  }

  onDestroy(): void {
    hilog.info(0x0000, TAG, 'RemoteNotificationExtAbility onDestroy.');
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Ergänzen Sie im Abschnitt extensionAbilities des src/main/module.json5 die Konfiguration für RemoteNotificationExtAbility (nur eine ExtensionAbility; falls uris mit angegeben werden, muss uris leer sein):
"extensionAbilities": [ { "name": "RemoteNotificationExtAbility", "type": "remoteNotification", "srcEntry": "./ets/entryability/RemoteNotificationExtAbility.ets", "description": "RemoteNotificationExtAbility test", "exported": false, "skills": [ { "actions": ["action.hms.push.extension.remotenotification"] } ] } ]
              
              "extensionAbilities": [
  {
    "name": "RemoteNotificationExtAbility",
    "type": "remoteNotification",
    "srcEntry": "./ets/entryability/RemoteNotificationExtAbility.ets",
    "description": "RemoteNotificationExtAbility test",
    "exported": false,
    "skills": [
      {
        "actions": ["action.hms.push.extension.remotenotification"]
      }
    ]
  }
]

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • type: Muss remoteNotification sein
  • actions: Muss action.hms.push.extension.remotenotification sein

Schritt 2

  • Existiert der Prozess, wird dieser Ablauf genutzt. In diesem Fall wird keine Benachrichtigung angezeigt – unabhängig davon, ob die App im Vorder- oder Hintergrund ist.
  • Sie können mit receiveMessage() Benachrichtigungsdaten in Echtzeit empfangen:
import { UIAbility } from '@kit.AbilityKit'; import { EPushInterface } from '@engagelab/push'; import { pushCommon, pushService } from '@kit.PushKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; const TAG: string = 'engagelab-JLog-PushMessageAbility' export default class PushMessageAbility extends UIAbility { onCreate(): void { try { // Parameter von receiveMessage MUSS 'IM' sein pushService.receiveMessage('IM', this, async (data) => { let jg = await EPushInterface.extraMessageBackgroundData(data) if (jg) { // true = bereits verarbeitet return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'IM fehlgeschlagen:'+JSON.stringify(e)); } }
              
              import { UIAbility } from '@kit.AbilityKit';
import { EPushInterface } from '@engagelab/push';
import { pushCommon, pushService } from '@kit.PushKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

const TAG: string = 'engagelab-JLog-PushMessageAbility'
export default class PushMessageAbility extends UIAbility {
  onCreate(): void {
    try { // Parameter von receiveMessage MUSS 'IM' sein
      pushService.receiveMessage('IM', this, async (data) => {
        let jg = await EPushInterface.extraMessageBackgroundData(data)
        if (jg) { // true = bereits verarbeitet
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'IM fehlgeschlagen:'+JSON.stringify(e));
    }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Ergänzen Sie im Abschnitt abilities des src/main/module.json5 die Action action.ohos.push.listener (nur eine Ability darf diese Action definieren; falls uris mit angegeben werden, muss uris leer sein):
"abilities": [ { "name": "PushMessageAbility", "srcEntry": "./ets/entryability/PushMessageAbility.ets", "launchType": "singleton", "startWindowIcon": "$media:icon", "startWindowBackground": "$color:start_window_background", "skills": [ { "actions": [ "action.ohos.push.listener" ] } ] } ]
              
              "abilities": [
      {
        "name": "PushMessageAbility",
        "srcEntry": "./ets/entryability/PushMessageAbility.ets",
        "launchType": "singleton",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "skills": [
          {
            "actions": [
              "action.ohos.push.listener"
            ]
          }
        ]
      }
]

            
Diesen Codeblock im schwebenden Fenster anzeigen

VoIP-Push-Benachrichtigungen konfigurieren

So konfigurieren Sie VoIP-Push-Benachrichtigungen:

Schritt 1

  • Erstellen Sie im Verzeichnis src/main/ets/entryability eine UIAbility-Komponente (z. B. PushMessageAbility.ets), die VoIP-Nachrichten verarbeitet:
import { UIAbility } from '@kit.AbilityKit'; import { EPushInterface } from '@engagelab/push'; import { pushCommon, pushService } from '@kit.PushKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; const TAG: string = 'engagelab-JLog-PushMessageAbility' export default class PushMessageAbility extends UIAbility { onCreate(): void { try { pushService.receiveMessage('VoIP', this, async (data) => { let jg = await EPushInterface.voIPMessageBackgroundData(data) if (jg) { // true = bereits verarbeitet return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'VoIP fehlgeschlagen:'+JSON.stringify(e)); } } }
              
              import { UIAbility } from '@kit.AbilityKit';
import { EPushInterface } from '@engagelab/push';
import { pushCommon, pushService } from '@kit.PushKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

const TAG: string = 'engagelab-JLog-PushMessageAbility'
export default class PushMessageAbility extends UIAbility {
  onCreate(): void {
    try {
      pushService.receiveMessage('VoIP', this, async (data) => {
        let jg = await EPushInterface.voIPMessageBackgroundData(data)
        if (jg) { // true = bereits verarbeitet
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'VoIP fehlgeschlagen:'+JSON.stringify(e));
    }
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Ergänzen Sie im Abschnitt abilities des src/main/module.json5 die Action action.ohos.push.listener (nur eine Ability darf diese Action definieren; falls uris mit angegeben werden, muss uris leer sein):
"abilities": [ { "name": "PushMessageAbility", "srcEntry": "./ets/entryability/PushMessageAbility.ets", "launchType": "singleton", "description": "PushMessageAbility test", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", "exported": false, "skills": [ { "actions": ["action.ohos.push.listener"] } ] } ]
              
              "abilities": [ 
  { 
    "name": "PushMessageAbility", 
    "srcEntry": "./ets/entryability/PushMessageAbility.ets", 
    "launchType": "singleton",
    "description": "PushMessageAbility test", 
    "startWindowIcon": "$media:startIcon",
    "startWindowBackground": "$color:start_window_background",
    "exported": false, 
    "skills": [ 
      { 
        "actions": ["action.ohos.push.listener"]
      }
    ]
  } 
]

            
Diesen Codeblock im schwebenden Fenster anzeigen

„Nicht im Vordergrund anzeigen“-Funktion konfigurieren

So konfigurieren Sie die Funktion „Nicht im Vordergrund anzeigen“:

Schritt 1

  • Erstellen Sie im Verzeichnis src/main/ets/entryability eine UIAbility-Komponente (z. B. PushMessageAbility.ets), die entsprechende Nachrichten verarbeitet:
import { UIAbility } from '@kit.AbilityKit'; import { EPushInterface } from '@engagelab/push'; import { pushCommon, pushService } from '@kit.PushKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; const TAG: string = 'engagelab-JLog-PushMessageAbility' export default class PushMessageAbility extends UIAbility { onCreate(): void { try { pushService.receiveMessage('DEFAULT', this, async (data: pushCommon.PushPayload) => { let jg = await EPushInterface.defaultMessageBackgroundData(data) if (jg) { // true = bereits verarbeitet return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'DEFAULT fehlgeschlagen:'+JSON.stringify(e)); } } }
              
              import { UIAbility } from '@kit.AbilityKit';
import { EPushInterface } from '@engagelab/push';
import { pushCommon, pushService } from '@kit.PushKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

const TAG: string = 'engagelab-JLog-PushMessageAbility'
export default class PushMessageAbility extends UIAbility {
  onCreate(): void {
    try {
      pushService.receiveMessage('DEFAULT', this, async (data: pushCommon.PushPayload) => {
        let jg = await EPushInterface.defaultMessageBackgroundData(data)
        if (jg) { // true = bereits verarbeitet
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'DEFAULT fehlgeschlagen:'+JSON.stringify(e));
    }
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Ergänzen Sie im Abschnitt abilities des src/main/module.json5 die Action action.ohos.push.listener (nur eine Ability darf diese Action definieren; falls uris mit angegeben werden, muss uris leer sein):
"abilities": [ { "name": "PushMessageAbility", "srcEntry": "./ets/entryability/PushMessageAbility.ets", "launchType": "singleton", "description": "PushMessageAbility test", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", "exported": false, "skills": [ { "actions": ["action.ohos.push.listener"] } ] } ]
              
              "abilities": [ 
  { 
    "name": "PushMessageAbility", 
    "srcEntry": "./ets/entryability/PushMessageAbility.ets", 
    "launchType": "singleton",
    "description": "PushMessageAbility test", 
    "startWindowIcon": "$media:startIcon",
    "startWindowBackground": "$color:start_window_background",
    "exported": false, 
    "skills": [ 
      { 
        "actions": ["action.ohos.push.listener"]
      }
    ]
  } 
]

            
Diesen Codeblock im schwebenden Fenster anzeigen

Push-Funktion aktivieren

Hauptschritte:

  • Setzen Sie den appKey vor dem Aufruf von init
  • Setzen Sie die Callback-Klasse vor dem Aufruf von init
export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setCallBackMsg(InstanzDerCallBackMsg-Klasse) // Callback setzen, vor init aufrufen EPushInterface.setAppKey("IhrAppKey") // Vor init aufrufen EPushInterface.init(this.context.getApplicationContext()) } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setCallBackMsg(InstanzDerCallBackMsg-Klasse) // Callback setzen, vor init aufrufen
    EPushInterface.setAppKey("IhrAppKey") // Vor init aufrufen
    EPushInterface.init(this.context.getApplicationContext())
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Berechtigungskonfiguration

Erforderliche Berechtigungen: Beantragen Sie diese vor dem Aufruf von init für präzisere Push-Benachrichtigungen.
Ab Version 1.0.0 ist die Konfiguration bereits im SDK enthalten.

Hauptschritte:

  • Berechtigungen in der Konfigurationsdatei deklarieren
  • Nutzer:in um Berechtigung bitten und nach erfolgreicher Vergabe init aufrufen

Hinweis 1:
Berechtigungen in src/main/module.json5 des entry-Moduls deklarieren:

{ "module": { "requestPermissions": [ { "name": "ohos.permission.APP_TRACKING_CONSENT", "reason": "$string:reason", "usedScene": { "abilities": [ "EntryAbility" // meist Startseite ], "when": "always" } } ] } }
              
              {
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.APP_TRACKING_CONSENT",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "EntryAbility" // meist Startseite
          ],
          "when": "always"
        }
      }
    ]
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Hinweis 2:
Berechtigung im EntryAbility anfragen und danach Push-Funktion aktivieren:

const permissions: Array<Permissions> = ['ohos.permission.APP_TRACKING_CONSENT']; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { let context:Context = this.context; let atManager:abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); atManager.requestPermissionsFromUser(context, permissions).then((data: PermissionRequestResult) => { // Berechtigung erteilt – Push aktivieren EPushInterface.init(this.context.getApplicationContext()) }).catch((err: BusinessError) => { // Push trotzdem aktivieren EPushInterface.init(this.context.getApplicationContext()) }) }
              
              const permissions: Array<Permissions> = ['ohos.permission.APP_TRACKING_CONSENT'];
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    let context:Context = this.context;
    let atManager:abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(context, permissions).then((data: PermissionRequestResult) => {
      // Berechtigung erteilt – Push aktivieren
      EPushInterface.init(this.context.getApplicationContext())
    }).catch((err: BusinessError) => {
      // Push trotzdem aktivieren
      EPushInterface.init(this.context.getApplicationContext())
    })
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Erweiterte Funktionen

Empfehlung: Registration ID abrufen und anzeigen

Da alle Push-Formen von EngageLab letztlich auf die Registration ID abzielen, ist diese für die Fehleranalyse wichtig. Wir empfehlen, die Registration ID nach der SDK-Integration in weniger frequentierten Bereichen der App wie „Über“, „Feedback“ oder „Mein Bereich“ anzeigen zu lassen, damit Nutzer:innen sie bei Support-Anfragen leicht übermitteln können.

Beispielcode:

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

            
Diesen Codeblock im schwebenden Fenster anzeigen
icon
Vertrieb kontaktieren