logoDokumen
Cari

Panduan Integrasi SDK

Petunjuk Penggunaan

Dokumen ini adalah panduan standar integrasi SDK EngageLab HarmonyOS. Panduan ini bertujuan membantu Anda menggunakan SDK, dengan asumsi Anda sudah memahami dasar penggunaan DevEco Studio dan pemrograman HarmonyOS.

Panduan ini berlaku untuk EngageLab HarmonyOS SDK versi 1.0.0 ke atas.

  • Saat ini mendukung HarmonyOS API 12 dan versi setelahnya.

Penjelasan Fitur Produk

EngageLab Push adalah layanan push end-to-end yang memungkinkan pesan dari server dikirim real-time ke ponsel pengguna akhir, sehingga pengembang dapat terus terhubung dengan pengguna untuk meningkatkan keterlibatan dan retensi aplikasi. Klien EngageLab Push mendukung berbagai platform seperti Android, iOS, HarmonyOS, dan QuickApp.

SDK HarmonyOS ini memudahkan pengembang menambahkan fitur push ke aplikasi HarmonyOS berbasis EngageLab dengan cepat.

Fitur Utama

  • Menjaga koneksi jangka panjang dengan server agar pesan dapat dikirim instan ke klien
  • Menerima notifikasi dan meneruskan informasi terkait ke aplikasi pengembang

Karakteristik Utama

  • Klien menjaga koneksi dengan konsumsi sumber daya dan baterai rendah
  • SDK memiliki antarmuka kaya, dapat menyesuaikan tampilan notifikasi di bilah pemberitahuan
  • Server berkapasitas besar dan stabil

Cara Integrasi

Integrasi Otomatis

Ketergantungan har

Penjelasan: Tambahkan pada file oh-package.json5 di bawah modul entry

"dependencies": { "@engagelab/push": "x.x.x" //isi versi yang sesuai, misal: "@engagelab/push": "1.0.0" }
              
              "dependencies": {
    "@engagelab/push": "x.x.x" //isi versi yang sesuai, misal: "@engagelab/push": "1.0.0"
}

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan 2: Karena har berupa bytecode, IDE perlu di-upgrade ke versi 5.0.3.500 ke atas, dan pada build-profile.json5 tingkat proyek (paling luar), atur "useNormalizedOHMUrl": true

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

            
Tampilkan blok kode ini di jendela mengambang

Integrasi Manual

Tautan unduhan paket kompresi integrasi: Unduh di sini, isi paket kompresi integrasi

Isi Paket Kompresi engagelab-hmos-x.x.x-release.zip

  • engagelab-hmos-x.x.x-release.har
    • Paket inti layanan EngageLab.
  • doc
    • Dokumentasi
  • entry
    • Proyek demo hmos, contoh penggunaan dasar SDK EngageLab.

Integrasi File har

  • Ekstrak paket engagelab-hmos-x.x.x-release.zip.
  • Salin engagelab-hmos-x.x.x-release.har ke direktori entry/hars/ pada proyek Anda (direktori hars dapat disesuaikan).

Penjelasan: Hubungkan engagelab-hmos-x.x.x-release.har, misal Anda menyalin har ke entry/hars/, tambahkan pada file oh-package.json5 di bawah modul entry

"dependencies": { "jg_harmony_har": "./hars/engagelab-hmos-x.x.x-release.har" //isi path sesuai lokasi penyimpanan har }
              
              "dependencies": {
    "jg_harmony_har": "./hars/engagelab-hmos-x.x.x-release.har" //isi path sesuai lokasi penyimpanan har
}

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan 2: Karena har berupa bytecode, IDE perlu di-upgrade ke versi 5.0.3.500 ke atas, dan pada build-profile.json5 tingkat proyek (paling luar), atur "useNormalizedOHMUrl": true

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

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Informasi Platform hmos

Agar fitur push berjalan, perlu konfigurasi informasi platform HarmonyOS.

Langkah utama:

Konfigurasi Informasi Platform EngageLab

Setelah langkah di atas, Anda juga perlu konfigurasi informasi platform EngageLab.

Langkah utama:

  • Buat aplikasi di platform EngageLab, pastikan dua informasi berikut: nama paket dan appKey, harus sama dengan yang di platform EngageLab.

    Penjelasan 1:

    Konfigurasi nama paket pada proyek lokal: tambahkan pada file app.json5 di bawah proyek AppScope

{ "app": { "bundleName": "nama_paket_anda", } }
              
              {
  "app": {
    "bundleName": "nama_paket_anda",
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan 2:

Konfigurasi EngageLab appKey pada proyek lokal (appKey dihasilkan otomatis setelah membuat aplikasi di konsol EngageLab), kode konfigurasi seperti:

export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setAppKey("appKey_anda") //panggil sebelum init } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setAppKey("appKey_anda")   //panggil sebelum init
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan 3:

Konfigurasi penerimaan callback pada proyek lokal, kode konfigurasi seperti:

export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setCallBackMsg(instansiClassTurunanCallBackMsg) //terima callback, panggil sebelum init } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setCallBackMsg(instansiClassTurunanCallBackMsg)  //terima callback, panggil sebelum init
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Halaman Tujuan Notifikasi

Notifikasi mendukung redirect ke halaman tertentu.

Dengan uris untuk mencocokkan halaman:

  • uris, cocokkan halaman dengan uri, saat push gunakan url=scheme_anda://host_anda:port_anda/path_anda
  • Catatan: untuk metode uris, actions harus diatur string kosong
{ "exported": true, "skills": [ { "actions": [""], //actions harus string kosong "uris": [ { "scheme": "scheme_anda", "host": "host_anda", "port": "port_anda", "path": "path_anda" } ] } ] }
              
              {
  "exported": true,
  "skills": [
    {
      "actions": [""], //actions harus string kosong
      "uris": [
        {
          "scheme": "scheme_anda",
          "host": "host_anda",
          "port": "port_anda",
          "path": "path_anda"
        }
      ]
    }
  ]
}

            
Tampilkan blok kode ini di jendela mengambang

Dengan actions untuk mencocokkan halaman:

  • actions, cocokkan halaman dengan actions, isi actions sesuai nilai Anda, saat push actions=actions_anda
{ "exported": true, "skills": [ { "actions": ["actions_anda"] } ] }
              
              {
  "exported": true,
  "skills": [
    {
      "actions": ["actions_anda"]
    }
  ]
}

            
Tampilkan blok kode ini di jendela mengambang

Ajukan Izin Notifikasi

Jika notifikasi belum diaktifkan, Anda tidak akan menerima notifikasi.

Langkah utama:

  • Ajukan izin di halaman utama
export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { notificationManager.requestEnableNotification().then(() => { hilog.info(0x0000, TAG, '%{public}s', `requestEnableNotification berhasil`); }).catch((err: Base.BusinessError) => { hilog.error(0x0000, TAG, '%{public}s', `requestEnableNotification gagal, kode ${err.code}, pesan ${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 berhasil`);
    }).catch((err: Base.BusinessError) => {
      hilog.error(0x0000, TAG, '%{public}s', `requestEnableNotification gagal, kode ${err.code}, pesan ${err.message}`);
    });
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Pesan Kustom

Jika Anda perlu menangani pesan kustom yang dikirim melalui saluran HarmonyOS, lakukan konfigurasi berikut:

Langkah 1

  • Buat file PushMessage.json di direktori src/main/resources/base/profile/ pada modul proyek Anda, dengan isi sebagai berikut:
{ "path": "pushmessage/t_push_message", "type": "rdb", "scope": "application" }
              
              {
  "path": "pushmessage/t_push_message",
  "type": "rdb",
  "scope": "application"
}

            
Tampilkan blok kode ini di jendela mengambang
  • path: nilai tetap pushmessage/t_push_message, menunjukkan nama database dan tabel.

  • type: nilai tetap rdb, jenis database relasional.

  • scope: cakupan database, application (tingkat aplikasi) atau module (tingkat hap modul).

  • Tambahkan proxyData pada file module.json5 di direktori modul proyek Anda seperti berikut:

{ "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"
      }
    }]
  }
}

            
Tampilkan blok kode ini di jendela mengambang
  • uri: format tetap datashareproxy://{bundleName}/PushMessage, ganti {bundleName} dengan bundleName aplikasi Anda, PushMessage adalah nama tetap, jangan diubah.
  • requiredWritePermission: nilai tetap ohos.permission.WRITE_PRIVACY_PUSH_DATA, layanan push membutuhkan izin ini untuk menulis data pesan latar belakang ke database.
  • metadata: konfigurasi tambahan, name tetap dataProperties, resource tetap $profile:nama_file, nama file tetap PushMessage.

Langkah 2

  • Pada ability proyek Anda (misal PushMessageAbility), impor modul push,
  • Hanya dapat menggunakan UIAbility untuk menerima pesan latar belakang.
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 pada receiveMessage tetap 'BACKGROUND' untuk menerima pesan kustom latar belakang pushService.receiveMessage('BACKGROUND', this, async (data: pushCommon.PushPayload) => { let jg = await EPushInterface.customMessageBackgroundData(data) if (jg) { // jika true berarti sudah diproses return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'BACKGROUND gagal:'+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 pada receiveMessage tetap 'BACKGROUND' untuk menerima pesan kustom latar belakang
      pushService.receiveMessage('BACKGROUND', this, async (data: pushCommon.PushPayload) => {
        let jg = await EPushInterface.customMessageBackgroundData(data)
        if (jg) { // jika true berarti sudah diproses
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'BACKGROUND gagal:'+JSON.stringify(e));
    }
}

            
Tampilkan blok kode ini di jendela mengambang
  • Tambahkan pada bagian abilities di file src/main/module.json5 proyek Anda, pada skills actions isikan action.ohos.push.listener (hanya boleh satu ability yang mendefinisikan action ini, jika juga menambah uris, maka uris harus kosong).
"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"
        ]
      }
    ]
  }
]

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Pesan Ekstensi Notifikasi

Jika membutuhkan pesan ekstensi notifikasi, lakukan konfigurasi berikut

Langkah 1

  • Jika proses tidak ada, buat komponen ExtensionAbility turunan RemoteNotificationExtensionAbility, override onReceiveMessage(), panggil EPushInterface.receiveExtraDataMessage untuk mengambil data, contoh kode:
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 {} // jika ingin mengubah notifikasi, kembalikan data notifikasi } 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 {} // jika ingin mengubah notifikasi, kembalikan data notifikasi
  }

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

            
Tampilkan blok kode ini di jendela mengambang
  • Tambahkan pada extensionAbilities di file src/main/module.json5 proyek Anda, atur type dan actions RemoteNotificationExtAbility (hanya boleh satu ExtensionAbility, jika juga menambah uris, maka uris harus kosong):
"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"]
      }
    ]
  }
]

            
Tampilkan blok kode ini di jendela mengambang

Langkah 2

  • Jika proses aplikasi Anda ada (foreground/background), notifikasi tidak akan muncul. Anda dapat menggunakan receiveMessage() untuk mendapatkan data pesan ekstensi notifikasi secara real-time, contoh kode:
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 pada receiveMessage tetap 'IM' untuk menerima notifikasi ekstensi pushService.receiveMessage('IM', this, async (data) => { let jg = await EPushInterface.extraMessageBackgroundData(data) if (jg) { // jika true berarti sudah diproses return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'IM gagal:'+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 pada receiveMessage tetap 'IM' untuk menerima notifikasi ekstensi
      pushService.receiveMessage('IM', this, async (data) => {
        let jg = await EPushInterface.extraMessageBackgroundData(data)
        if (jg) { // jika true berarti sudah diproses
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'IM gagal:'+JSON.stringify(e));
    }
}

            
Tampilkan blok kode ini di jendela mengambang
  • Tambahkan pada bagian skills di file src/main/module.json5 modul proyek Anda, actions isikan action.ohos.push.listener (hanya boleh satu ability yang mendefinisikan action ini, jika juga menambah uris, maka uris harus kosong):
"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"
        ]
      }
    ]
  }
]

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Pesan Panggilan VoIP Push

Jika membutuhkan pesan panggilan VoIP push, lakukan konfigurasi berikut

Langkah 1

  • Buat UIAbility, misal PushMessageAbility.ets, untuk menangani pesan panggilan VoIP, contoh kode:
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) { // jika true berarti sudah diproses return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'VoIP gagal:'+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) { // jika true berarti sudah diproses
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'VoIP gagal:'+JSON.stringify(e));
    }
  }
}

            
Tampilkan blok kode ini di jendela mengambang
  • Tambahkan pada bagian abilities di file src/main/module.json5 proyek Anda, actions PushMessageAbility.
"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"]
      }
    ]
  } 
]

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Fitur "Tidak Tampilkan di Latar Depan"

Jika membutuhkan fitur "tidak tampil di latar depan", lakukan konfigurasi berikut

Langkah 1

  • Buat UIAbility, misal PushMessageAbility.ets, untuk menangani pesan "tidak tampil di latar depan", contoh kode:
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) { // jika true berarti sudah diproses return } }); } catch (e) { hilog.info(0x0000, TAG, '%{public}s', 'DEFAULT gagal:'+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) { // jika true berarti sudah diproses
          return
        }
      });
    } catch (e) {
      hilog.info(0x0000, TAG, '%{public}s', 'DEFAULT gagal:'+JSON.stringify(e));
    }
  }
}

            
Tampilkan blok kode ini di jendela mengambang
  • Tambahkan pada bagian abilities di file src/main/module.json5 proyek Anda, actions PushMessageAbility.
"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"]
      }
    ]
  } 
]

            
Tampilkan blok kode ini di jendela mengambang

Aktifkan Fitur Layanan Push

Langkah utama:

  • Sebelum init, atur appKey terlebih dahulu
  • Sebelum init, atur class penerima callback terlebih dahulu
export default class MyAbilityStage extends AbilityStage { onCreate() { EPushInterface.setCallBackMsg(instansiClassTurunanCallBackMsg) //terima callback, panggil sebelum init EPushInterface.setAppKey("appKey_anda") //panggil sebelum init EPushInterface.init(this.context.getApplicationContext()) } }
              
              export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    EPushInterface.setCallBackMsg(instansiClassTurunanCallBackMsg) //terima callback, panggil sebelum init
    EPushInterface.setAppKey("appKey_anda") //panggil sebelum init
    EPushInterface.init(this.context.getApplicationContext())
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Izin

  • Izin wajib, untuk push yang lebih akurat, ajukan izin terlebih dahulu sebelum memanggil init untuk mengaktifkan fitur push.
  • Mulai versi v1.0.0, pengembang tidak perlu mengonfigurasi manual, SDK sudah menyertakan secara bawaan.

Langkah utama:

  • Deklarasikan izin pada file konfigurasi
  • Ajukan izin ke pengguna, setelah selesai baru panggil init untuk mengaktifkan fitur push

    Penjelasan 1:

    Deklarasikan izin pada file konfigurasi, tambahkan pada file src/main/module.json5 di modul entry

{ "module": { "requestPermissions": [ { "name": "ohos.permission.APP_TRACKING_CONSENT", "reason": "$string:reason", "usedScene": { "abilities": [ "EntryAbility" //umumnya digunakan di halaman utama ], "when": "always" } } ] } }
              
              {
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.APP_TRACKING_CONSENT",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "EntryAbility" //umumnya digunakan di halaman utama
          ],
          "when": "always"
        }
      }
    ]
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan 2:

Ajukan izin ke pengguna pada EntryAbility, lalu aktifkan fitur push, misal:

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) => { // Izin berhasil, lalu aktifkan fitur push EPushInterface.init(this.context.getApplicationContext()) }).catch((err: BusinessError) => { // Tetap aktifkan fitur push 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) => {
      // Izin berhasil, lalu aktifkan fitur push
      EPushInterface.init(this.context.getApplicationContext())
    }).catch((err: BusinessError) => {
      // Tetap aktifkan fitur push
      EPushInterface.init(this.context.getApplicationContext())
    })
}

            
Tampilkan blok kode ini di jendela mengambang

Fitur Lanjutan

Saran Mendapatkan Registration ID

Karena semua bentuk push EngageLab pada akhirnya akan dikonversi menjadi push ke Registration ID, maka saat menelusuri masalah pelanggan perlu menyediakan Registration ID. Untuk memudahkan pelanggan memberikan informasi dengan akurat dan mengurangi biaya komunikasi, disarankan setelah integrasi SDK selesai, tampilkan Registration ID pelanggan di UI aplikasi yang jarang digunakan seperti menu "Tentang", "Masukan", "Profil Saya", dan sebagainya.

Contoh kode:

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

            
Tampilkan blok kode ini di jendela mengambang
icon
Hubungi Sales