logoDokumen
Cari

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;
              
               + (void)addTags:(NSSet<NSString *> *)tags
  completion:(MTPushTagsOperationCompletion)completion
         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)setTags:(NSSet<NSString *> *)tags
  completion:(MTPushTagsOperationCompletion)completion
         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)deleteTags:(NSSet<NSString *> *)tags
  completion:(MTPushTagsOperationCompletion)completion
         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)cleanTags:(MTPushTagsOperationCompletion)completion
         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)getAllTags:(MTPushTagsOperationCompletion)completion
         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)validTag:(NSString *)tag
  completion:(MTPushTagValidOperationCompletion)completion
         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)setAlias:(NSString *)alias
   completion:(MTPushAliasOperationCompletion)completion
          seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)deleteAlias:(MTPushAliasOperationCompletion)completion
             seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
               + (void)getAlias:(MTPushAliasOperationCompletion)completion
          seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
              
               * Nomor urut yang dikirim saat request akan dikembalikan apa adanya saat callback

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)pageEnterTo:(NSString *)pageName
+ (void)pageLeave:(NSString *)pageName;

            
Tampilkan blok kode ini di jendela mengambang

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"]; }
              
              // 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"];
}

            
Tampilkan blok kode ini di jendela mengambang

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]
              
              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 
// Mendapatkan konten apn:
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]

            
Tampilkan blok kode ini di jendela mengambang
  • 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;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

            
Tampilkan blok kode ini di jendela mengambang
  • 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;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

            
Tampilkan blok kode ini di jendela mengambang
  • 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
              
              - (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

            
Tampilkan blok kode ini di jendela mengambang

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 }
              
              - (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
}

            
Tampilkan blok kode ini di jendela mengambang
  • 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 } }
              
              // 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
  }
}

            
Tampilkan blok kode ini di jendela mengambang

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];
              
                  NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
    [defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kMTCNetworkDidReceiveMessageNotification object:nil];

            
Tampilkan blok kode ini di jendela mengambang

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   }
              
                  - (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  
    }

            
Tampilkan blok kode ini di jendela mengambang

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
              
              @interface AppDelegate ()<MTPushInAppMessageDelegate>

@end

            
Tampilkan blok kode ini di jendela mengambang

Set Delegate

Tambahkan kode berikut pada -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

[MTPushService setInAppMessageDelegate:self];
              
              [MTPushService setInAppMessageDelegate:self];

            
Tampilkan blok kode ini di jendela mengambang

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); }
              
              #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);
}

            
Tampilkan blok kode ini di jendela mengambang

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
              
              @interface AppDelegate ()<MTPushNotiInMessageDelegate>

@end

            
Tampilkan blok kode ini di jendela mengambang

Set Delegate

Tambahkan kode berikut pada -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

[MTPushService setNotiInMessageDelegate:self];
              
                [MTPushService setNotiInMessageDelegate:self];

            
Tampilkan blok kode ini di jendela mengambang

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 }
              
              #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
}

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;

            
Tampilkan blok kode ini di jendela mengambang

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); }];
              
              [MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
    NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID);
}];

            
Tampilkan blok kode ini di jendela mengambang

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
              
              +(NSString *)registrationID

            
Tampilkan blok kode ini di jendela mengambang

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
              
              + (BOOL)setBadge:(int)value

            
Tampilkan blok kode ini di jendela mengambang

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
              
              + (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion

            
Tampilkan blok kode ini di jendela mengambang

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
              
              + (void)resetBadge

            
Tampilkan blok kode ini di jendela mengambang

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]
              
              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 
// Mendapatkan konten notifikasi lokal:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]

            
Tampilkan blok kode ini di jendela mengambang
  • 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
              
              // 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

            
Tampilkan blok kode ini di jendela mengambang
  • 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 // }
              
              - (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
  // }

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)addNotification:(MTPushNotificationRequest *)request;

            
Tampilkan blok kode ini di jendela mengambang

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]; }
              
              - (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];
}

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)removeNotification:(MTPushNotificationIdentifier *)identifier;

            
Tampilkan blok kode ini di jendela mengambang

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]; }
              
              - (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];
}

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)findNotification:(MTPushNotificationIdentifier *)identifier;

            
Tampilkan blok kode ini di jendela mengambang

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]; }
              
              - (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];
}

            
Tampilkan blok kode ini di jendela mengambang

Pengaturan Level Log

Mengaktifkan Mode Debug

Deskripsi Fitur

API digunakan untuk mengaktifkan Mode Debug agar menampilkan lebih banyak informasi log.

Definisi Antarmuka

+ (void)setDebugMode;
              
              + (void)setDebugMode;

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan

Jika Anda membutuhkan informasi debugging lebih detail, panggil API ini untuk mengaktifkan Mode Debug.

Contoh Kode

[MTPushService setDebugMode];
              
              [MTPushService setDebugMode];

            
Tampilkan blok kode ini di jendela mengambang

Menonaktifkan Informasi Log

Deskripsi Fitur

API digunakan untuk mematikan pesan log (kecuali pesan error yang diperlukan).

Definisi Antarmuka

+ (void)setLogOFF;
              
              + (void)setLogOFF;

            
Tampilkan blok kode ini di jendela mengambang

Penjelasan

Panggil API ini jika Anda tidak membutuhkan informasi debugging apapun (disarankan saat rilis untuk menyembunyikan log dan menghemat performa).

Contoh Kode

[MTPushService setLogOFF];
              
              [MTPushService setLogOFF];

            
Tampilkan blok kode ini di jendela mengambang

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
              
              + (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion

            
Tampilkan blok kode ini di jendela mengambang

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 } }];
              
              [MTPushService setMobileNumber:@"xxx" completion:^(NSError *error) {
        if (error) {
          NSLog(@"error:%@", error);
        }
        else {
            // sukses
        }
      }];

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;

            
Tampilkan blok kode ini di jendela mengambang

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); }];
              
               [MTPushService setUserLanguage:@"zh_Hans" completionHandler:^(int resCode, NSError *error) {
    NSLog(@"laporan bahasa: %d, %@", resCode, error);
  }];

            
Tampilkan blok kode ini di jendela mengambang

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];
              
                [MTPushService setTcpSSL:YES];

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)setAppGroupId:(NSString *)appGroupId;

            
Tampilkan blok kode ini di jendela mengambang

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"];
              
                [MTPushService setAppGroupId:@"Your appGroupId"];

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)enablePushTextToSpeech:(BOOL)enable;

            
Tampilkan blok kode ini di jendela mengambang

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];
              
                [MTPushService enablePushTextToSpeech:YES];

            
Tampilkan blok kode ini di jendela mengambang

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;
              
              + (void)enableResetOnDeviceChange:(BOOL)enable;

            
Tampilkan blok kode ini di jendela mengambang

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];
              
                [MTPushService enableResetOnDeviceChange:YES];

            
Tampilkan blok kode ini di jendela mengambang

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;
              
                  + (void)registerLiveActivity:(NSString *)activityAttributes
            pushToStartToken:(NSData *)pushToStartToken
                  completion:(MTPLiveActivityTokenCompletion)completion
                        seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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);
              
              
typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);

            
Tampilkan blok kode ini di jendela mengambang

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;
              
                   + (void)registerLiveActivity:(NSString *)liveActivityId
                   pushToken:(NSData *)pushToken
                  completion:(MTPLiveActivityTokenCompletion)completion
                         seq:(NSInteger)seq;

            
Tampilkan blok kode ini di jendela mengambang

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
icon
Hubungi Sales