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"
}
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"
}
]
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
}
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"
}
]
Konfigurasi Informasi Platform hmos
Agar fitur push berjalan, perlu konfigurasi informasi platform HarmonyOS.
Langkah utama:
Dapatkan client_id aplikasi pada proyek di platform hmos (catatan: ini client_id aplikasi, bukan client_id proyek)

Penting: Setelah aplikasi HarmonyOS dibuat, pastikan Anda mengonfigurasi "SHA256 Certificate/Public Key Fingerprint" aplikasi: Klik “Tambah Fingerprint Public Key (HarmonyOS API 9 ke atas)” setelah “SHA256 Certificate/Public Key Fingerprint”, ikuti petunjuk di “Konfigurasi Penandatanganan”.
Aktifkan layanan push di platform hmos
Konfigurasi client_id aplikasi pada proyek lokal
Penjelasan:
Untuk konfigurasi client_id aplikasi pada proyek lokal, tambahkan pada file module.json5 di bawah modul entry
"module": { "metadata": [ { "name": "client_id", "value": "id_anda" } ] }"module": { "metadata": [ { "name": "client_id", "value": "id_anda" } ] }Tampilkan blok kode ini di jendela mengambangKonfigurasi penandatanganan
Langkah 1: Siapkan file penandatanganan
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-publish-app-0000001053223745-V5#section793484619307 Langkah 2: Ajukan sertifikat rilis
https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-releasecert-0000001946273961 Langkah 3: Ajukan Release Profile, format Profile adalah .p7b
https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-releaseprofile-0000001914714796 Langkah 4: Konfigurasi penandatanganan pada proyek lokal, seperti gambar
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",
}
}
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
}
}
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
}
}
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"
}
]
}
]
}
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"]
}
]
}
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}`);
});
}
}
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: 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"
}
}]
}
}
- 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));
}
}
- 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"
]
}
]
}
]
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.');
}
}
- 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"]
}
]
}
]
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));
}
}
- 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"
]
}
]
}
]
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));
}
}
}
- 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"]
}
]
}
]
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));
}
}
}
- 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"]
}
]
}
]
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())
}
}
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"
}
}
]
}
}
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())
})
}
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();










