Panduan API SDK
Versi yang Didukung
Dokumen ini berlaku untuk MTPush iOS SDK versi v3.0.0 atau yang lebih baru.
Mengatur Pusat Data
Deskripsi Fitur
Fitur ini digunakan untuk mencocokkan pusat data yang Anda pilih di EngageLab Portal. Pastikan pusat data yang Anda atur sama dengan yang dipilih di portal. Jika tidak diatur, SDK akan menggunakan node pusat data default di Singapura.
Mulai versi v4.3.5, antarmuka ini tidak berlaku lagi. Pengembang tidak perlu lagi memanggil antarmuka ini secara manual untuk mengatur pusat data. SDK akan otomatis mencocokkan pusat data yang sesuai berdasarkan appkey.
Versi yang Didukung
Didukung mulai versi: v4.3.0
Versi Tidak Berlaku
Tidak berlaku mulai versi: v4.3.5
Definisi Antarmuka
- (void)setSiteName:(NSString *)siteName;
Penjelasan Parameter
*siteName
- Nama pusat data
Instruksi Pemanggilan
Panggil antarmuka ini sebelum memanggil antarmuka inisialisasi (setupWithOption:channel:apsForProduction:advertisingIdentifier).
API Tag dan Alias (iOS)
Deskripsi Fitur
Peringatan, mohon perhatikan hasil callback saat mengatur tag atau alias.
Hanya jika nilai callback yang dikembalikan adalah 0, pengaturan berhasil dan push dapat dilakukan ke target. Jika tidak, API server akan mengembalikan error 1011. Semua callback berjalan di thread utama.
Beberapa API berikut disediakan untuk memanipulasi alias dan tag.
API ini dapat dipanggil dari mana saja dalam aplikasi.
Alias alias
Alias digunakan untuk mengidentifikasi pengguna yang telah menginstal aplikasi. Alias ini dapat digunakan sebagai target saat mengirim push ke pengguna tersebut di masa mendatang. Setiap pengguna hanya dapat memiliki satu alias.
Disarankan menggunakan alias berbeda untuk setiap pengguna dalam satu aplikasi, sehingga pengguna dapat diidentifikasi secara unik melalui alias mereka.
Contoh: Dalam sebuah game, saat pengguna login, alias dapat diatur sebagai userid. Jika pengguna tidak aktif selama 3 hari, API server dapat dipanggil berdasarkan userid untuk mengirim notifikasi ke klien sebagai pengingat.
Tag tag
Tag digunakan untuk menandai pengguna yang telah menginstal aplikasi. Tujuannya untuk memudahkan pengembang mengirim pesan push secara massal berdasarkan tag.
Setiap pengguna dapat memiliki banyak tag.
Contoh: game, old_page, women
Menambah Tag
Panggil API ini untuk menambah tag, hasilnya dikembalikan dalam blok.
Catatan: Antarmuka ini adalah logika tambah, bukan timpa.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)addTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
tags
- Tidak boleh nil atau koleksi kosong ([NSSet set])
- Tipe anggota koleksi harus NSString
- Setidaknya satu tag per pemanggilan
- Komposisi tag valid: huruf (case-sensitive), angka, garis bawah, karakter Tionghoa, karakter khusus @!#$&*+=.|
- Batasan: Panjang nama tag maksimal 40 byte, maksimal 1000 tag dapat diatur, total panjang tidak boleh melebihi 5 K byte (gunakan encoding Utf-8)
- Satu perangkat mendukung hingga 1000 tag. Tidak ada batasan jumlah tag global aplikasi
completion
- Callback mengembalikan parameter tag terkait dan kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Menimpa Tag
Panggil API ini untuk mengatur tag, hasil dikembalikan dalam blok.
Catatan: Antarmuka ini adalah logika timpa, bukan tambah. Memanggil antarmuka ini akan menimpa semua tag yang telah diatur sebelumnya.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)setTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
tags
- Tidak boleh nil atau koleksi kosong ([NSSet set])
- Tipe anggota koleksi harus NSString
- Setidaknya satu tag per pemanggilan
- Komposisi tag valid: huruf (case-sensitive), angka, garis bawah, karakter Tionghoa, karakter khusus @!#$&*+=.|
- Batasan: Panjang nama tag maksimal 40 byte, maksimal 1000 tag dapat diatur, total panjang tidak boleh melebihi 5 K byte (gunakan encoding Utf-8)
- Satu perangkat mendukung hingga 1000 tag. Tidak ada batasan jumlah tag global aplikasi
completion
- Callback mengembalikan parameter tag terkait dan kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Menghapus Tag
Panggil API ini untuk menghapus tag, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)deleteTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
tags
- Tidak boleh nil atau koleksi kosong ([NSSet set])
- Tipe anggota koleksi harus NSString
- Setiap pemanggilan menghapus setidaknya satu tag
- Komposisi tag valid: huruf (case-sensitive), angka, garis bawah, karakter Tionghoa, karakter khusus @!#$&*+=.|
- Batasan: Panjang nama tag maksimal 40 byte, maksimal 1000 tag dapat dihapus, total panjang tidak boleh melebihi 5K byte (gunakan encoding Utf-8)
completion
- Callback mengembalikan parameter tag terkait dan kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Mengosongkan Tag
Panggil API ini untuk menghapus semua tag, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)cleanTags:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
completion
- Tag yang dikembalikan callback adalah nil. Kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Query Tag
Panggil API ini untuk mendapatkan semua tag, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)getAllTags:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
completion
- Tag yang dikembalikan callback adalah hasil query. Kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Validasi Tag
Panggil API ini untuk memverifikasi apakah tag target sudah diatur.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)validTag:(NSString *)tag
completion:(MTPushTagValidOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
tag
- Tidak boleh nil atau string kosong
- Komposisi tag valid: huruf (case-sensitive), angka, garis bawah, karakter Tionghoa, karakter khusus @!#$&*+=.|
- Batasan: Panjang nama tag maksimal 40 byte (gunakan encoding UTF-8)
completion
- Callback mengembalikan parameter tag terkait dan kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
- Cek properti isBind pada callback untuk melihat apakah sudah diatur, YES berarti sudah diatur
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Tags Block
typedef void (^MTPushTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq); typedef void (^MTPushTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
Mengatur Alias
Panggil API ini untuk mengatur alias.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)setAlias:(NSString *)alias
completion:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
-alias - Tidak boleh nil atau string kosong @"" - Setiap pemanggilan mengatur alias yang efektif, menimpa pengaturan sebelumnya - Alias valid: huruf (case-sensitive), angka, garis bawah, karakter Tionghoa, karakter khusus @!#$&*+=.| - Batasan: Panjang nama alias maksimal 40 byte (gunakan encoding Utf-8)
completion
- Callback mengembalikan parameter alias terkait dan kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Menghapus Alias
Panggil API ini untuk menghapus alias, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)deleteAlias:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
completion
- Tag yang dikembalikan callback adalah nil. Kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Query Alias
Panggil API ini untuk query alias saat ini, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: v3.5.0
Definisi Antarmuka
+ (void)getAlias:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
completion
- Tag yang dikembalikan callback adalah hasil query. Kode status: 0 sukses, kode lain lihat definisi error. seq adalah nomor sesi yang dikirim saat pemanggilan
*seq
* Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback
Alias Block
typedef void (^MTPushAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
In-App Messaging
Versi yang Didukung
Didukung mulai versi: v4.5.0
Deskripsi Fitur
Untuk menggunakan fitur in-app messaging, antarmuka ini perlu dikonfigurasi. Pesan in-app akan dipicu saat transisi halaman dan dapat ditampilkan di halaman tertentu. Antarmuka ini menyinkronkan aksi masuk dan keluar halaman dengan SDK, yang akan menangani logika tampilan pesan in-app berdasarkan sinkronisasi ini.
Definisi Antarmuka
+ (void)pageEnterTo:(NSString *)pageName
+ (void)pageLeave:(NSString *)pageName;
Contoh Penggunaan
Instruksi Penggunaan
Gunakan antarmuka pageEnterTo: dan pageLeave: secara berpasangan. Panggil pageEnterTo: saat masuk halaman, dan pageLeave: saat meninggalkan halaman.
Contoh Penggunaan
// Misal, gunakan metode ini di viewDidAppear: dan viewDidDisappear: pada ViewController
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[MTPushService pageEnterTo:@"AViewController"];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[MTPushService pageLeave:@"AViewController"];
}
Mendapatkan Konten Push APNs (notifikasi)
Deskripsi Fitur
Perangkat iOS menerima push notification (APNs). Ketika pengguna mengklik push notification untuk membuka aplikasi, aplikasi akan memproses sesuai status yang berbeda. Tambahkan dua metode berikut di AppDelegate untuk mendapatkan konten apn.
- Jika status App tidak berjalan, fungsi ini akan dipanggil. Jika launchOptions mengandung UIApplicationLaunchOptionsRemoteNotificationKey berarti app dijalankan karena pengguna mengklik notifikasi apns. Jika tidak ada key ini, berarti App tidak dijalankan karena klik apn, tetapi mungkin karena klik icon atau lainnya.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// Mendapatkan konten apn:
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]
- Pada iOS 6 dan di bawahnya, fungsi ini dipanggil saat App di foreground atau saat pesan notifikasi diklik di notification bar. Anda juga dapat menentukan apakah aplikasi sedang berjalan di foreground dengan memeriksa apakah applicationState di AppDelegate adalah UIApplicationStateActive. Kasus seperti ini ditangani dalam fungsi ini:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
- Berdasarkan iOS 7 atau yang lebih baru, jika fitur Remote Notification iOS 7 digunakan, fungsi pemrosesan perlu menggunakan:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
- Berdasarkan sistem iOS 10 ke atas, [application: didReceiveRemoteNotification:] akan diabaikan oleh sistem,
Digantikan oleh UserNotifications Framework baru [UNUserNotificationCenterDelegate willPresentNotification: withCompletionHandler:] Atau [UNUserNotificationCenterDelegate didReceiveNotificationResponse: withCompletionHandler:]. Pada versi saat ini atau setelahnya, Anda dapat mengimplementasikan metode protokol MTPushRegisterDelegate yang dikemas oleh SDK dan menyesuaikan dengan metode protokol delegate baru di iOS10. Yaitu, dua metode berikut:
- (void)mtpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler;
// NSDictionary * userInfo = notification.request.content.userInfo;
// Konten APNs adalah userInfo
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler;
// NSDictionary * userInfo = response.notification.request.content.userInfo;
// Konten APNs adalah userInfo
Contoh Kode
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// Mendapatkan konten informasi standar APNs
NSDictionary *aps = [userInfo valueForKey:@"aps"];
NSString *content = [aps valueForKey:@"alert"]; //Konten yang ditampilkan push
NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //Nomor badge
NSString *sound = [aps valueForKey:@"sound"]; //Suara yang dimainkan
// Mendapatkan konten field Extras
NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //Field Extras di server, key ditentukan sendiri
NSLog(@"content =[%@], badge=[%d], sound=[%@], customize field =[%@]",content,badge,sound,customizeField1);
// iOS 10 ke bawah Wajib
[MTPushService handleRemoteNotification:userInfo];
}
//iOS 7 Remote Notification
- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"ini adalah iOS7 Remote Notification");
// iOS 10 - Wajib
[MTPushService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
#pragma mark- MTPushRegisterDelegate // MTPushRegisterDelegate ditambahkan pada 2.1.9. Dua metode berikut perlu diimplementasikan
// Dukungan iOS 10
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
// Wajib
NSDictionary * userInfo = notification.request.content.userInfo;
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[MTPushService handleRemoteNotification:userInfo];
}
else {
// Notifikasi lokal
}
completionHandler(UNNotificationPresentationOptionAlert); // Untuk mengeksekusi metode ini, pilih apakah ingin Alert pengguna atau tidak. Ada tiga tipe yang dapat diatur: Badge, Sound, dan alert
}
// Dukungan iOS 10
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler {
// Wajib
NSDictionary * userInfo = response.notification.request.content.userInfo;
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[MTPushService handleRemoteNotification:userInfo];
}
else {
// Notifikasi lokal
}
completionHandler(); // Sistem mewajibkan metode ini dieksekusi
}
- Berdasarkan iOS12 atau di atasnya, UserNotifications Framework menambahkan metode callback baru [userNotificationCenter: openSettingsForNotification:], pada versi 3.1.1 ke atas MTPushRegisterDelegate juga menambahkan metode callback terkait. Metode ini dipanggil saat aplikasi diakses dari layar notifikasi eksternal atau layar Pengaturan notifikasi.
// Dukungan iOS 12
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{
if (notification) {
//Masuk aplikasi langsung dari layar notifikasi
}else{
//Masuk aplikasi langsung dari layar notifikasi
}
}
Dokumentasi referensi:Penanganan Notifikasi Lokal dan Remote
Mendapatkan Konten Push Pesan Kustom
Deskripsi Fitur
- Pesan kustom hanya dipush saat aplikasi berjalan di depan (foreground).
- Mendapatkan konten pesan kustom, judul, dan field tambahan dari server MTPush.
Cara Implementasi
Untuk mendapatkan konten push dari iOS, perlu mendaftarkan notifikasi di kelas delegate dan mengimplementasikan metode callback.
Pada metode - (BOOL) application: (UIApplication) application didFinishLaunchingWithOptions: (NSDictionary) launchOptions tambahkan kode berikut:
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kMTCNetworkDidReceiveMessageNotification object:nil];
Implementasikan metode callback networkDidReceiveMessage
- (void)networkDidReceiveMessage:(NSNotification *)notification {
NSDictionary * userInfo = [notification userInfo];
NSString *content = [userInfo valueForKey:@"content"];
NSString *messageID = [userInfo valueForKey:@"_j_msgid"];
NSDictionary *extras = [userInfo valueForKey:@"extras"];
NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //Field ekstra yang dikirim server, key ditentukan sendiri
}
Penjelasan Parameter
- content:Mendapatkan konten push
- messageID:Mendapatkan messageID push (key: @"_j_msgid")
- extras:Mendapatkan parameter yang ditentukan pengguna
- customizeField1:Mendapatkan nilai kustom berdasarkan key yang ditentukan
Untuk informasi lebih lanjut, silakan lihat demo pada paket SDK.
Mendapatkan Konten Pesan In-App
Versi yang Didukung
v4.5.0 ke atas
Deskripsi Fitur
In-App Messages: Aplikasi harus berjalan di foreground untuk menerima pesan in-app. Saat ini, pesan in-app dikategorikan menjadi tiga tipe: banner, interstitial, dan full-screen.
Dengan mengatur delegate untuk fitur in-app messaging dan mengimplementasikan metode delegate terkait, Anda dapat memperoleh konten pesan in-app.
Implementasi
Tambahkan Delegate
@interface AppDelegate ()<MTPushInAppMessageDelegate>
@end
Set Delegate
Tambahkan kode berikut pada -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[MTPushService setInAppMessageDelegate:self];
Tambahkan Metode Delegate untuk Callback Pesan In-App
#pragma mark - MTPushInAppMessageDelegate
- (void)mtPushInAppMessageDidShow:(MTPushInAppMessage *)inAppMessage {
NSString *mesageId = inAppMessage.mesageId; // ID Pesan
NSString *title = inAppMessage.title; // Judul
NSString *content = inAppMessage.content; // Konten
NSArray *target = inAppMessage.target; // Halaman Target
NSString *clickAction = inAppMessage.clickAction; // URL Aksi Klik
NSDictionary *extras = inAppMessage.extras; // Field Tambahan
NSLog(@"InAppMessageDidShow:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId, title, content, target, clickAction, extras);
}
- (void)mtPushInAppMessageDidClick:(MTPushInAppMessage *)inAppMessage {
NSString *mesageId = inAppMessage.mesageId; // ID Pesan
NSString *title = inAppMessage.title; // Judul
NSString *content = inAppMessage.content; // Konten
NSArray *target = inAppMessage.target; // Halaman Target
NSString *clickAction = inAppMessage.clickAction; // URL Aksi Klik
NSDictionary *extras = inAppMessage.extras; // Field Tambahan
NSLog(@"mtPushInAppMessageDidClick:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId, title, content, target, clickAction, extras);
}
Mendapatkan Konten Pesan Peningkatan Notifikasi
Versi yang Didukung
v4.5.1 ke atas
Deskripsi Fitur
Pesan pengingat peningkatan notifikasi: Saat mengirim notifikasi ke pengguna yang telah menonaktifkan izin notifikasi, notifikasi lokal akan digunakan untuk menggantikan notifikasi push sebagai pengingat.
Pengguna hanya dapat menerima pesan pengingat in-app enhancement saat aplikasi berjalan di foreground. Untuk menggunakan fitur ini, Anda perlu mengaktifkan toggle "Peningkatan Notifikasi" di pengaturan lanjutan platform push.
Dengan mengatur delegate untuk pengingat peningkatan notifikasi dan mengimplementasikan metode delegate terkait, Anda dapat memperoleh judul konten dan field tambahan dari pesan pengingat peningkatan notifikasi.
Metode Implementasi
Tambahkan Delegate
@interface AppDelegate ()<MTPushNotiInMessageDelegate>
@end
Set Delegate
Tambahkan kode berikut pada -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[MTPushService setNotiInMessageDelegate:self];
Tambahkan Metode Delegate untuk Callback Pesan Pengingat Peningkatan Notifikasi
#pragma mark - MTPushNotiInMessageDelegate
- (void)mtPushNotiInMessageDidShowWithContent:(NSDictionary *)content {
NSString *messageID = [content valueForKey:@"_j_msgid"];
NSDictionary *aps = [content valueForKey:@"aps"];
id customizeField1 = [content valueForKey:@"customizeField1"]; // Field tambahan pada pengaturan lanjutan platform push
}
- (void)mtPushNotiInMessageDidClickWithContent:(NSDictionary *)content {
NSString *messageID = [content valueForKey:@"_j_msgid"];
NSDictionary *aps = [content valueForKey:@"aps"];
id customizeField1 = [content valueForKey:@"customizeField1"]; // Field tambahan pada pengaturan lanjutan platform push
}
Mendapatkan RegistrationID
Definisi RegistrationID
Saat pertama kali aplikasi yang terintegrasi dengan MTPush SDK berhasil mendaftar ke server MTPush, server MTPush akan mengembalikan ke klien sebuah identifier unik untuk perangkat tersebut - RegistrationID. MTPush SDK mengirimkan RegistrationID sebagai broadcast ke aplikasi.
Aplikasi dapat menyimpan RegistrationID ini di server aplikasinya dan kemudian mengirim pesan atau notifikasi ke perangkat berdasarkan RegistrationID.
Mendapatkan registrationID (dengan block)
Definisi Antarmuka
+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
Penjelasan Parameter
- (void(^)(int resCode,NSString *registrationID))completionHandler
- completionHandler: Untuk memproses hasil pengaturan
- resCode: Kode status hasil pengembalian
- registrationID: Mengembalikan registrationID
[MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID);
}];
Tips: Disarankan menggunakan antarmuka ini untuk mendapatkan registrationID. Jika dipanggil di emulator, resCode akan mengembalikan 1011 dan registrationID akan bernilai nil.
Mendapatkan registrationID
Panggil API ini untuk mendapatkan RegistrationID aplikasi. Nilai yang sesuai hanya dikembalikan jika aplikasi berhasil mendaftar ke server MTPush, jika tidak akan dikembalikan string kosong.
Definisi Antarmuka
+(NSString *)registrationID
Tips: Pada iOS 9, jika aplikasi dihapus dan diinstal ulang, devicetoken yang dikembalikan APNs akan berubah. Pengembang perlu mendapatkan Registration id terbaru perangkat. Silakan panggil antarmuka "RegistrationID" ini pada implementasi metode kMTCNetworkDidLoginNotification untuk mendapatkan RegistrationID.
Instruksi Tambahan
Push pesan dan notifikasi melalui RegistrationID
Notifikasi dan pesan dapat dipush menggunakan RegistrationID. Parameter audience dapat dipush berdasarkan RegistrationID.
Mengatur Badge
Deskripsi Fitur
badge adalah angka yang digunakan iOS untuk menandai status aplikasi. Angka ini muncul di pojok kanan atas ikon aplikasi. MTPush mengenkapsulasi fungsi badge, memungkinkan aplikasi mengunggah nilai badge ke server MTPush. Backend MTPush membantu mengelola nilai badge push untuk setiap pengguna, menyederhanakan pengaturan badge push.
Dalam praktiknya, pengembang dapat langsung menambah atau mengurangi nilai badge tanpa perlu memelihara hubungan antara pengguna dan nilai badge. Untuk mengirim pesan push, cukup set tanda sudut +1, EngageLab akan secara otomatis +1 pada nilai badge setiap pengguna yang disimpan di server dan kemudian dikirim ke pengguna.
Mengatur badge
Mengatur nilai badge yang disimpan di server MTPush
Definisi Antarmuka
+ (BOOL)setBadge:(int)value
Penjelasan Parameter
- value Nilai berkisar dari 0 hingga 99999.
Secara lokal tetap harus memanggil fungsi UIApplication: setApplicationIconBadgeNumber untuk mengatur badge yang ditampilkan pada ikon
- Nilai pengembalian
- Mengembalikan TRUE jika dalam rentang nilai; jika tidak, mengembalikan FALSE
Mengatur Badge (dengan Callback Hasil)
Versi Didukung: v5.2.0
Definisi Antarmuka
+ (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion
Penjelasan Parameter
- value Rentang nilai: [0,99999]
- completion Callback hasil, error bernilai null jika sukses.
Anda tetap perlu memanggil fungsi UIApplication:setApplicationIconBadgeNumber secara lokal untuk mengatur nilai badge yang ditampilkan pada ikon.
Mengosongkan badge
Menghapus nilai badge yang disimpan di server MTPush, yaitu [setBadge:0]
Definisi Antarmuka
+ (void)resetBadge
Notifikasi Lokal
Deskripsi Fitur
Perangkat iOS menerima notifikasi lokal. Ketika pengguna mengklik notifikasi untuk membuka aplikasi, aplikasi akan menangani situasi sesuai status yang berbeda. Kode perlu ditambahkan pada dua metode berikut di AppDelegate untuk mendapatkan konten notifikasi lokal:
- Jika status App tidak berjalan, fungsi ini dipanggil. Jika launchOptions mengandung UIApplicationLaunchOptionsLocalNotificationKey berarti pengguna mengklik notifikasi lokal sehingga App berjalan; Jika tidak ada key, berarti App tidak dijalankan karena klik notifikasi lokal, mungkin karena klik ikon atau lainnya.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// Mendapatkan konten notifikasi lokal:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]
- Fungsi ini dipanggil jika status App foreground atau background, dan Anda dapat menentukan apakah applicationState di AppDelegate adalah UIApplicationStateActive. Kasus seperti ini ditangani dalam fungsi ini:
// NS_DEPRECATED_IOS(4_0, 10_0, "Gunakan UserNotifications Framework -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] atau -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]")
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
//Notifikasi lokal adalah notification
- Metode di atas akan deprecated pada iOS 10 ke atas. Digantikan oleh UserNotifications Framework baru - [UNUserNotificationCenterDelegate willPresentNotification: withCompletionHandler:] atau - [UNUserNotificationCenterDelegate didReceiveNotificationResponse: withCompletionHandler:]. Untuk itu, SDK mengenkapsulasi protokol MTPushRegisterDelegate, yang dapat menyesuaikan dengan metode delegate baru di iOS 10 hanya dengan mengimplementasikan metode protokol terkait, konsisten dengan callback push remote di atas, yaitu metode berikut:
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^) (NSInteger))completionHandler;
// if (![notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// Notifikasi lokal adalah notification
// }
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler;
// if (![response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// Notifikasi lokal adalah notification
// }
Mendaftarkan/memperbarui notifikasi lokal
Deskripsi Fitur
API digunakan untuk mendaftarkan atau memperbarui push (iOS 10 didukung dan kompatibel dengan iOS 10 ke bawah).
Definisi Antarmuka
+ (void)addNotification:(MTPushNotificationRequest *)request;
Penjelasan Parameter
- Request [MTPushNotificationRequest] tipe entitas, dapat memperkenalkan properti push.
Penjelasan
Masukkan request.requestIdentifier dalam request sebagai parameter untuk memperbarui push yang sudah ada, jika tidak, akan mendaftarkan push baru.
Contoh Kode
- (void)testAddNotification {
MTPushNotificationContent *content = [[MTPushNotificationContent alloc] init];
content.title = @"Notifikasi Uji Coba";
content.subtitle = @"2016";
content.body = @"Ini adalah kode uji coba";
content.badge = @1;
content.categoryIdentifier = @"Nama Kategori Kustom";
// Notifikasi iOS 10 ke atas setelah 5s
MTPushNotificationTrigger *trigger1 = [[MTPushNotificationTrigger alloc] init];
trigger1.timeInterval = 5;
//Ulangi setiap jam, dukungan iOS 10 ke atas
MTPushNotificationTrigger *trigger2 = [[MTPushNotificationTrigger alloc] init];
trigger2.timeInterval = 3600;
trigger2.repeat = YES;
//Notifikasi setiap Senin jam 8:00, dukungan iOS 10 ke atas
NSDateComponents *components = [[NSDateComponents alloc] init];
components.weekday = 2;
components.hour = 8;
MTPushNotificationTrigger *trigger3 = [[MTPushNotificationTrigger alloc] init];
trigger3.dateComponents = components;
trigger3.repeat = YES;
//#import <CoreLocation/CoreLocation.h>
//Notifikasi saat tiba di lokasi, dukungan iOS 8 ke atas
CLLocationCoordinate2D cen = CLLocationCoordinate2DMake(37.335400, -122.009201);
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:cen
radius:2000.0
identifier:@"engagelab"];
MTPushNotificationTrigger *trigger4 = [[MTPushNotificationTrigger alloc] init];
trigger4.region = region;
//Notifikasi setelah 5s, dukungan iOS 10 ke bawah
MTPushNotificationTrigger *trigger5 = [[MTPushNotificationTrigger alloc] init];
trigger5.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
MTPushNotificationRequest *request = [[MTPushNotificationRequest alloc] init];
request.requestIdentifier = @"sampleRequest";
request.content = content;
request.trigger = trigger1;//trigger2;//trigger3;//trigger4;//trigger5;
request.completionHandler = ^(id result) {
NSLog(@"Hasil kembali:%@", result);
};
[MTPushService addNotification:request];
}
Menghapus Notifikasi Lokal
Deskripsi Fitur
API digunakan untuk menghapus notifikasi yang siap dipush atau sudah ditampilkan di notification center. (iOS 10 didukung dan kompatibel dengan versi di atas iOS 10.)
Definisi Antarmuka
+ (void)removeNotification:(MTPushNotificationIdentifier *)identifier;
Penjelasan Parameter
- Identifier tipe entitas MTPushNotificationIdentifier.
Penjelasan
- Dengan identifier diset nil pada iOS 10 ke atas, semua push yang tampil dan request push di notification center akan dihapus. Anda juga dapat menghapus push atau request yang akan dipush dari notification center dengan mengatur identifiers.delivered dan identifiers.identifiers. Jika identifiers diset nil atau array kosong, maka akan menghapus semua push atau request yang tampil di notification center di bawah flag terkait.
- Di bawah iOS 10, jika identifier diset nil, maka akan menghapus semua push, atribut delivered pada identifier tidak berlaku, lainnya dapat dihapus dengan memasukkan objek push spesifik ke identifier.notificationObj.
Contoh Kode
- (void)testRemoveNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = @[@"sampleRequest"];
identifier.delivered = YES; //Jika YES, akan dihapus dari tampilan notification center. Jika NO, akan dihapus dari daftar yang akan dipush. Tidak berlaku untuk iOS 10 ke bawah
[MTPushService removeNotification:identifier];
}
- (void)testRemoveAllNotification {
[MTPushService removeNotification:nil]; // Menghapus semua push pada iOS 10 ke bawah; iOS 10 ke atas menghapus semua push dan request yang tampil di notification center
// //Dukungan iOS 10 ke atas
// MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
// identifier.identifiers = nil;
// identifier.delivered = YES; //Jika YES, menghapus semua yang tampil di notification center, jika NO, menghapus semua yang menunggu dipush
// [MTPushService removeNotification:identifier];
}
Mencari Notifikasi Lokal
Deskripsi Fitur
API digunakan untuk mencari push (iOS 10 didukung dan kompatibel dengan iOS 10 ke atas).
Definisi Antarmuka
+ (void)findNotification:(MTPushNotificationIdentifier *)identifier;
Penjelasan Parameter
- identifier [MTPushNotificationIdentifier]Tipe entitas
Penjelasan
- Untuk iOS 10 ke atas, Anda dapat mengatur identifiers.delivered dan identifiers untuk menemukan push atau request yang tampil di notification center. Jika identifiers diset nil atau array kosong, akan mengembalikan semua request push atau yang akan dipush di notification center di bawah flag terkait; Pada iOS 10 ke bawah, atribut identifiers tidak berlaku. delivered.identifiers mengembalikan semua push yang belum dijalankan jika diset nil atau array kosong.
- Anda perlu mengatur callback identifier.FindCompletionHandler untuk mendapatkan hasil pencarian, melalui (NSArray * results) mengembalikan array objek yang sesuai.
Contoh Kode
- (void)testFindNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = @[@"sampleRequest"];
identifier.delivered = YES; //Jika YES, akan mencari di notification center; jika NO, mencari di daftar yang akan dipush. Tidak berlaku di bawah iOS10
identifier.findCompletionHandler = ^(NSArray *results) {
NSLog(@"Hasil yang dikembalikan:%@", results); // Untuk iOS10 ke atas, mengembalikan array objek UILocalNotification. Untuk iOS10 ke atas, mengembalikan array objek UNNotification atau UNNotificationRequest sesuai nilai delivered
};
[MTPushService findNotification:identifier];
}
- (void)testFindAllNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = nil;
identifier.delivered = YES; //iOS 10 ke atas berlaku. Jika YES mencari semua pesan yang tampil di notification center, jika NO mencari semua pesan yang menunggu dipush. Tidak berlaku untuk iOS 10 ke bawah
identifier.findCompletionHandler = ^(NSArray *results) {
NSLog(@"Hasil yang dikembalikan:%@", results); // Untuk iOS 10 ke atas, mengembalikan array objek UILocalNotification. Untuk iOS 10 ke atas, mengembalikan array objek UNNotification atau UNNotificationRequest sesuai nilai delivered
};
[MTPushService findNotification:identifier];
}
Pengaturan Level Log
Mengaktifkan Mode Debug
Deskripsi Fitur
API digunakan untuk mengaktifkan Mode Debug agar menampilkan lebih banyak informasi log.
Definisi Antarmuka
+ (void)setDebugMode;
Penjelasan
Jika Anda membutuhkan informasi debugging lebih detail, panggil API ini untuk mengaktifkan Mode Debug.
Contoh Kode
[MTPushService setDebugMode];
Menonaktifkan Informasi Log
Deskripsi Fitur
API digunakan untuk mematikan pesan log (kecuali pesan error yang diperlukan).
Definisi Antarmuka
+ (void)setLogOFF;
Penjelasan
Panggil API ini jika Anda tidak membutuhkan informasi debugging apapun (disarankan saat rilis untuk menyembunyikan log dan menghemat performa).
Contoh Kode
[MTPushService setLogOFF];
Mengatur Nomor Handphone
Deskripsi Fitur
Digunakan untuk melengkapi pesan sms. Setelah Anda mengatur nomor handphone, Anda dapat mewujudkan mode notifikasi "SMS jika push gagal", dan meningkatkan tingkat keberhasilan push. Setelah mengatur nomor handphone, pesan sms akan dikirim ke perangkat sebagai pelengkap jika pesan normal tidak sampai, sehingga meningkatkan tingkat keberhasilan pengiriman push.
Definisi Antarmuka
+ (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion
Penjelasan Parameter
- mobileNumber Nomor handphone. Nilai hanya boleh diawali dengan (+) atau angka. Nilai hanya boleh mengandung tanda hubung (-) dan angka serta tidak boleh melebihi 20 karakter. Jika nil atau string kosong, maka nomor akan di-unbind.
- completion menanggapi callback. Jika sukses, error bernilai null. Jika gagal, error berisi kode dan informasi error. Untuk detail kode error, lihat definisi kode error.
Penjelasan
Antarmuka ini dapat dipanggil maksimal 3 kali dalam 10 detik. Disarankan memanggil antarmuka ini setelah login berhasil. Informasi hasil dikembalikan secara asinkron melalui completion, atau Anda dapat mengatur completion ke nil dan tidak memproses hasil.
Contoh Kode
[MTPushService setMobileNumber:@"xxx" completion:^(NSError *error) {
if (error) {
NSLog(@"error:%@", error);
}
else {
// sukses
}
}];
Melaporkan Informasi Bahasa
Deskripsi Fitur
API digunakan untuk melaporkan informasi bahasa pengguna
Definisi Antarmuka
+ (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;
Penjelasan Parameter
- language:Informasi bahasa
- handler:Callback pelaporan
Penjelasan
Disarankan memanggil antarmuka ini setelah login berhasil.
Contoh Kode
[MTPushService setUserLanguage:@"zh_Hans" completionHandler:^(int resCode, NSError *error) {
NSLog(@"laporan bahasa: %d, %@", resCode, error);
}];
Mengatur Mode Enkripsi TCP
Versi yang Didukung
Notification Service Extension SDK v3.0.0 ke atas.
Deskripsi Fitur
API digunakan untuk mengatur apakah akan menggunakan koneksi TCP terenkripsi.
Definisi Antarmuka
- (void)setTcpSSL:(BOOL)isSSL;
Penjelasan Parameter
- isSSL: YES untuk enkripsi
- NO untuk tanpa enkripsi
Instruksi Pemanggilan
Silakan panggil metode ini sebelum inisialisasi.
Contoh Kode
[MTPushService setTcpSSL:YES];
Fitur Voice Broadcasting
Pengantar Fitur
Untuk menggunakan fitur ini, Anda perlu mengaktifkan appGroups untuk bundleid Anda. Untuk langkah-langkah mengaktifkan appGroups, silakan merujuk ke "Panduan Pengaturan Sertifikat iOS".
Fitur ini mendukung iOS 14 ke atas.
Karena keterbatasan sistem, durasi voice broadcast dan waktu tampil pop-up notifikasi di perangkat hampir sama (sekitar 10 detik, meskipun bisa sedikit berbeda antar sistem). Voice broadcast akan berhenti saat pop-up notifikasi menghilang, jadi perhatikan durasi voice broadcast.
Mengatur appGroupId
Versi yang Didukung
Didukung mulai versi: v4.3.4.
Instruksi Pemanggilan
Digunakan untuk mengatur appGroupId, yang harus sama dengan appGroupId yang diatur di notification service extension melalui metode mtpushSetAppGroupId:. Digunakan untuk mendefinisikan ruang penyimpanan bersama antara proyek utama dan notification service extension, tempat sumber daya terkait voice broadcast disimpan.
Definisi Antarmuka
+ (void)setAppGroupId:(NSString *)appGroupId;
Penjelasan Parameter
- appGroupId: appGroupId yang Anda isi saat mengaktifkan kapabilitas appGroupId untuk bundleid Anda.
Instruksi Pemanggilan
Silakan panggil sebelum antarmuka inisialisasi.
Contoh Kode
[MTPushService setAppGroupId:@"Your appGroupId"];
Mengatur Apakah Mengaktifkan Voice Broadcasting
Versi yang Didukung
Didukung mulai versi: v4.3.4.
Deskripsi Fitur
Untuk mengaktifkan atau menonaktifkan fitur voice broadcasting.
Definisi Antarmuka
+ (void)enablePushTextToSpeech:(BOOL)enable;
Penjelasan Parameter
- enable: YES untuk mengaktifkan, NO untuk menonaktifkan, default NO.
Instruksi Pemanggilan
Silakan panggil sebelum antarmuka inisialisasi. Default tidak aktif.
Contoh Kode
[MTPushService enablePushTextToSpeech:YES];
Mengatur apakah RegistrationID direset saat perangkat diganti
Versi yang Didukung
Didukung mulai versi: v5.1.0.
Deskripsi Fitur
Mengaktifkan atau menonaktifkan fitur reset RegistrationID saat perangkat diganti. Jika diaktifkan, saat terjadi perubahan perangkat (hanya jika model perangkat berubah), informasi registrasi akan otomatis dihapus dan didaftarkan ulang.
Definisi Antarmuka
+ (void)enableResetOnDeviceChange:(BOOL)enable;
Penjelasan Parameter
- enable: YES: Aktifkan, NO: Nonaktifkan, default NO
Instruksi Penggunaan
Silakan panggil metode ini sebelum antarmuka inisialisasi. Default tidak aktif.
Contoh Kode
[MTPushService enableResetOnDeviceChange:YES];
LiveActivity
Melaporkan liveActivity PushToStartToken
Metode - registerLiveActivity:pushToStartToken:completion:seq:
Panggil API ini untuk melaporkan pushToStartToken dari liveActivity, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: 4.4.0
Definisi Antarmuka
+ (void)registerLiveActivity:(NSString *)activityAttributes
pushToStartToken:(NSData *)pushToStartToken
completion:(MTPLiveActivityTokenCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
activityAttributes
- Tipe atribut yang didefinisikan oleh liveActivity tertentu.
pushToStartToken
- pushToStartToken yang sesuai dengan liveactivity.
completion
- Digunakan untuk mengembalikan kode status: 0 untuk sukses, kode lainnya lihat definisi kode error. seq adalah nomor sesi yang dikirim saat pemanggilan.
seq
- Nomor urut yang dikirim saat request, akan dikembalikan apa adanya saat callback.
Callback pelaporan LiveActivity pushToStartToken (Block)
typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);
Melaporkan liveActivity PushToken (update token)
Metode - registerLiveActivity:pushToken:completion:seq:
Panggil API ini untuk melaporkan PushToken dari liveActivity tertentu, hasil dikembalikan dalam blok.
Versi yang Didukung
Didukung mulai versi: 4.4.0
Definisi Antarmuka
+ (void)registerLiveActivity:(NSString *)liveActivityId
pushToken:(NSData *)pushToken
completion:(MTPLiveActivityTokenCompletion)completion
seq:(NSInteger)seq;
Penjelasan Parameter
liveActivityId
- liveActivityId maksimal 24 byte.
- ID bisnis, didefinisikan oleh pengembang, dapat mengasosiasikan beberapa pushToken liveActivity. EngageLab menentukan target liveActivity yang perlu diperbarui melalui










