All Products
Search
Document Center

Quick Tracking:Embedding API

Last Updated:Jan 29, 2026

1. Bagaimana cara melihat solusi pelacakan?

Sebelum menempatkan titik embedding, Anda perlu menentukan lokasi dan titik yang akan ditanam, artinya Anda harus merumuskan kebutuhan embedding secara jelas. Di platform Quick Tracking, kebutuhan eksplisit untuk titik pelacakan disebut sebagai skema titik pelacakan, dan telah disediakan templat spesifikasi untuk skema tersebut, seperti berikut:

image

Dalam skema burial point, berikut adalah burial point yang diperlukan:

1. Subjek kejadian: "siapa" memicu kejadian. Kejadian dapat dibagi menjadi ID perangkat dan ID akun. Kejadian harus memiliki salah satu dari keduanya.

  • ID Perangkat: ID perangkat default untuk perangkat Android dan iOS adalah ID unik tingkat aplikasi, yang dihasilkan secara otomatis oleh Quicktracking.

    • Pada perangkat yang menjalankan Android 9 atau versi lebih baru, SDK secara otomatis mengumpulkan IMEI, Wi-Fi MAC, Android ID, dan nomor seri untuk menghasilkan ID perangkat. Setelah dihasilkan, ID perangkat tersebut disimpan secara lokal dan hanya akan dibuat ulang jika aplikasi di-uninstall atau data aplikasi dihapus.

    • Perangkat dengan Android level 10 ke atas: SDK secara otomatis mengumpulkan oaid, gaid, androidid, dan nomor seri untuk menghasilkan device ID. Setelah device ID dihasilkan, ID tersebut disimpan secara lokal. Device ID hanya akan dihasilkan ulang setelah aplikasi di-uninstall atau data aplikasi dihapus.

    • Perangkat iOS: SDK secara otomatis mengumpulkan openudid untuk menghasilkan device ID. Setelah device ID dihasilkan, ID tersebut disimpan di keychain. Device ID hanya akan dihasilkan ulang setelah pengaturan pabrik dipulihkan atau data aplikasi dihapus.

    • SDK Quick Tracking hanya mengumpulkan IDFA dan OAID jika pengguna C-terminal aplikasi memberikan persetujuan untuk pengumpulan IDFA dan OAID tersebut. Hanya SDK aplikasi Quick Tracking yang dapat mengumpulkan OAID, GAID, IMEI, WiFIMAC, AndroidID, SN, dan IDFV.

  • ID Akun: ID akun pengguna klien setelah login. Ketika pengguna masuk dari perangkat yang berbeda, ID perangkat berubah, tetapi ID akun tidak berubah. Misalnya, seorang pengguna menggunakan ponsel dan tablet untuk masuk secara terpisah.

2. Atribut Pengguna: atribut dari ID akun, misalnya, pengguna dengan ID akun "testdemo@111", "tanggal lahir" dari "1999-02-13", "tingkat keanggotaan" dari "platinum", dll. "Tanggal lahir" dan "peringkat keanggotaan" adalah atribut pengguna.

3. Atribut Saluran: atribut pengiriman iklan, seperti saluran pengiriman, metode pengiriman, dan konten pengiriman.

4. Atribut Global: atribut yang dibawa oleh setiap kejadian setelah pengaturan global sekali.

5. Event penjelajahan halaman: event yang dilaporkan selama pemuatan halaman (event dengan kode halaman dan kode event yang sama dalam skema pelacakan juga ditandai dengan warna biru).

6. Klik, paparan, dan kejadian kustom: kejadian yang dilaporkan ketika pengguna klien berinteraksi dengan klien.

2. Atur ID perangkat dan ID akun

2.1 Pengaturan ID Perangkat

SDK mengumpulkan parameter berikut secara default.

ID Perangkat atau informasi perangkat

Metode Pengumpulan

Keterangan

idfa

[ASIdentifierManager advertisingIdentifier].UUIDString

Logo Iklan Apple

idfv

[[UIDevice currentDevice].identifierForVendor UUIDString]

Identifikasi tingkat aplikasi

openudid

[UIPasteboardpasteboardWithName:slotPBid create:NO]

openUdid (pihak ketiga)

taobao utdid

[UTDevice utdid]

Jika Anda mengintegrasikan SDK Taobao utdid, QuickTracking akan mengumpulkannya

mcc

[UMUtils mccString]

Kode Negara Sinyal Seluler

mnc

[UMUtils mncString]

Nomor jaringan data seluler

Jika developer ingin mengontrol pengumpulan identifier perangkat tertentu dalam tabel di atas—misalnya tidak mengumpulkan identifier perangkat atau menerapkan metode pengumpulan sendiri—Anda dapat mengimplementasikan callback block yang sesuai, seperti pada contoh berikut:

[QTConfigure customSetIdfaBlock:^NSString *{
  return @"";
}];
[QTConfigure customSetIdfvBlock:^NSString *{
  return @"";
}];
[QTConfigure customSetOpenUdidBlock:^NSString *{
  return @"custom-openudid";
}];
[QTConfigure customSetUtdidBlock:^NSString *{
  return @"custom-utdid";
}];
[QTConfigure customSetMccBlock:^NSString *{
  return @"custom-mcc";
}];
[QTConfigure customSetMncBlock:^NSString *{
  return @"custom-mnc";
}];

Catatan: Berhati-hatilah saat memutuskan apakah akan mengimplementasikan metode yang sesuai. Jika Anda memilih untuk mengimplementasikannya, Anda bertanggung jawab atas pengumpulan identifier perangkat tersebut. SDK tidak akan mencoba mengumpulkan identifier tersebut. Semakin sedikit identifier perangkat yang dapat dikumpulkan oleh SDK, semakin besar dampak negatifnya terhadap akurasi dan stabilitas data statistik.

// Sebelum mengatur domain pengumpulan dan memanggil fungsi pre-inisialisasi SDK, panggil fungsi registrasi kelas utilitas pengumpulan.
// Jika Anda tidak perlu mengontrol perilaku pengumpulan identitas perangkat, Anda tidak perlu mengimplementasikan kelas utilitas kustom dan mendaftarkannya.
[QTConfigure customSetIdfvBlock:^NSString *{
    return [[UIDevice currentDevice].identifierForVendor UUIDString];
}];
[QTConfigure setCustomDomain:@"Your receipt domain name" standbyDomain:nil];
[QTConfigure initWithAppKey:@"Your appkey" channel:@"App Store"]; 

SDK mendukung ID perangkat kustom. Jika Anda ingin menggunakan ID perangkat kustom, Anda harus mengatur setCustomDeviceId ke nilai yang valid (tidak kosong) sebelum inisialisasi (yaitu, sebelum init).

+ (void)setCustomDeviceId:(NSString *)devID;

Contoh penggunaan:

[QTConfigure setCustomDeviceId:@"xxxxxx"];

Catatan: Fungsi ini berlaku saat tidak ada ID perangkat yang diperoleh. Jika ID perangkat sudah ada di perangkat lokal, pengaturan tersebut tidak valid. Jika ID perangkat diperoleh secara lokal, Anda dapat meng-uninstall dan menginstal ulang perangkat.

2.2 Pengaturan ID Akun

1. QT menggunakan perangkat sebagai standar saat menghitung pengguna. Jika Anda perlu menghitung berdasarkan akun aplikasi itu sendiri, gunakan antarmuka berikut:

Fungsi antarmuka:

+ (void)profileSignInWithPUID:(NSString *)puid;

Parameter:

Parameter

Tipe

Deskripsi

Catatan

puid

NSString

User account ID

Kurang dari 64 byte panjangnya

Catatan: Setelah ID akun diatur, ID tersebut akan disimpan di penyimpanan lokal. ID akun hanya akan menjadi tidak valid ketika aplikasi di-uninstall, data aplikasi dihapus, atau antarmuka logout berikut dipanggil. Jika tidak, setiap kejadian akan membawa ID akun.

Kode contoh:

[QTMobClick profileSignInWithPUID:@"UserID"];

Jika Anda tidak lagi memerlukan pengikatan akun pengguna, Anda dapat memanggil antarmuka logout. Setelah Anda memanggil antarmuka logout, konten terkait akun tidak lagi dikirim.

+ (void)profileSignOff;

Kode contoh:

[QTMobClick profileSignOff];

2.3 Pengambilan ID Perangkat

Fungsi Antarmuka:

+ (NSString *)umidString;

Kode contoh:

NSString *deviceID = [QTConfigure umidString];

3 Unggah atribut pengguna

1. Unggah kejadian kustom dengan kode kejadian tetap sebagai "$$_user_profile". Atribut kejadian yang dibawa oleh kejadian tersebut ditempatkan di tabel pengguna sebagai atribut pengguna.

NSDictionary *dict = @{@"sex" : @"girl", @"age" : @"8"};
[QTMobClick event:@"$$_user_profile" attributes:dict];

Catatan: Atribut pengguna harus diunggah setelah pemanggilan statistik akun

4 Atribut Saluran

Setelah atribut saluran berlaku, semua kejadian berikutnya akan secara otomatis mencakup atribut ini, dan atribut serta nilai atribut ini akan disimpan dalam cache dan dihapus setelah proses APP berakhir. Saat menganalisis data, Anda dapat melihat dan menyaring berdasarkan properti ini.

4.1 Tautan H5 Mengaktifkan Aplikasi

  1. Skema URL aplikasi berisi atribut channel ini, dan kunci atribut harus diawali dengan "utm_" karena kata kunci yang dikenali oleh SDK adalah "utm_". Contoh: <URL scheme>? utm_channel=gzh

  2. Tambahkan URL Scheme Anda ke proyek. URL Scheme terletak di pengaturan proyek target → tab Info → URL Types. Isi skema tersebut, lalu panggil fungsi [MobClick handleUrl:url] di AppDelegate untuk menerima URL.

Panggilan AppDelegate:

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
 if ([QTMobClick handleUrl:url]) {
 return YES;
 }

 return YES;
}

Pemanggilan SceneDelegate:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {

 for (UIOpenURLContext *context in connectionOptions.URLContexts) {
 [QTMobClick handleUrl:context.URL];
 }
}

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {

 [QTMobClick handleUrl:URLContexts.allObjects.firstObject.URL];
}

PS: Jika Anda telah bekerja sama dengan perusahaan pengiriman saluran di pasar dan tidak bisa dimulai dengan utm_, Anda dapat menggunakan API Atribut Global untuk melaporkan atribut saluran. Kunci atribut harus dimulai dengan utm_.

4.2 Tautan H5 membangkitkan pasar aplikasi untuk mengunduh dan meluncurkan aplikasi

Dalam skenario ini, jika hanya utm_parameter yang termasuk dalam URL H5, utm_parameter tidak dapat disertakan dalam kejadian startup setelah aplikasi diunduh. Oleh karena itu, perlu dilakukan pencocokan fuzzy antara "kejadian evokasi H5" dan "kejadian aktivasi aplikasi" pada "Alamat IP dan UserAgent Browser ".

  1. Ketika pengguna mengklik tombol "Panggil / Unduh Aplikasi" di H5, sebuah kejadian "panggilan aplikasi ($$_app_link)" dilaporkan. Dalam kejadian tersebut, appkey dan atribut saluran dari aplikasi yang dipanggil harus disertakan.

// Contoh
aplus_queue.push({
  action:'aplus.recordAppLink',
  arguments:[{
    targetAppKey: 'Application appKey', // Wajib. AppKey aplikasi yang akan dipanggil.
    custom1: 'custom1', // Opsional. Parameter kustom.
    ...
  }]
})
  1. Event aktivasi aplikasi ($$_app_install) dikumpulkan dan dilaporkan secara otomatis oleh QT App SDK.

  2. Sistem QuickTracking melakukan pencocokan fuzzy antara kejadian evokasi aplikasi ($$_app_link) dan kejadian aktivasi aplikasi ($$_app_install) terhadap Alamat IP dan UserAgent Browser. Saat digunakan, Anda dapat langsung menganalisis properti saluran dari "aktivasi aplikasi (preset)" di aplikasi.

4.3 Statistik Data Aktif Pasar Aplikasi

Parameter input kedua dalam fungsi inisialisasi adalah Marketplace aplikasi: [QTConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];. Anda dapat melihat channel pembaruan di bagian System Properties.

5 Atribut Global

Setelah atribut global didaftarkan, semua event berikutnya akan secara otomatis menyertakan atribut tersebut. Atribut dan nilainya disimpan dalam memori serta dihapus setelah proses aplikasi berakhir. Saat menganalisis data, Anda dapat melihat dan memfilter berdasarkan properti ini.

5.1 Daftarkan Atribut Global

/**
 * Mengatur pasangan kunci-nilai properti global. 
 * Jika kunci properti global yang ada sama dengan kunci yang diberikan, nilai yang ada akan diperbarui.
 * Jika kunci properti global yang ada tidak sama dengan kunci yang diberikan, properti global baru akan ditambahkan.
 */
+(void) registerGlobalProperty:(NSDictionary *)property;

Parameter

Tipe

Deskripsi

Catatan

property

NSDictionary

Nama atribut dan nilai atribut untuk atribut global

-

Contoh:

NSDictionary *firstPropertyDict = @{
     @"a" : @"1",
     @"b" : @"2"
};
[QTMobClick registerGlobalProperty:firstPropertyDict];// Properti global saat ini adalah a:1 dan b:2
    
NSDictionary *secondPropertyDict = @{
     @"b" : @"3",
     @"c" : @"4"
};
[QTMobClick registerGlobalProperty:secondPropertyDict];// Properti global saat ini adalah a:1, b:3, dan c:4 

5.2 Dapatkan Properti Global

/**
 * Dapatkan properti global; jika tidak ada, kembalikan kosong. 
 */
+(NSString *) getGlobalProperty:(NSString *)propertyName;

Parameter

Tipe

Deskripsi

Catatan

propertyName

NSString

Nama properti, hanya mendukung huruf besar dan kecil, angka, dan garis bawah!

-

Nilai Kembalian

NSString

-

5.3 hapus atribut global

Menghapus atribut global tertentu. Setelah atribut dihapus, semua kejadian berikutnya yang dipicu tidak lagi membawa atribut tersebut.

/**
 *
 * Hapus atribut global tertentu.
 @param key
 */
+(void) unregisterGlobalProperty:(NSString *)propertyName;

Parameter

Tipe

Deskripsi

Catatan

propertyName

NSString

Nama properti. Hanya huruf, angka, dan garis bawah yang didukung.

-

5.4 Dapatkan Semua Properti Global

/**
 * Dapatkan semua properti global; jika tidak ada, kembalikan kosong. 
 */
+(NSDictionary *)getGlobalProperties;

Parameter

Tipe

Deskripsi

Catatan

Nilai Kembalian

NSDictionary

Nilai properti global yang dikembalikan adalah tipe karakter dan harus sama dengan nilai tipe parameter yang dilewatkan saat properti global didaftarkan.

-

5.5 Bersihkan Semua Properti Global

/**
 * Bersihkan semua properti global. 
 */
+(void)clearGlobalProperties;

6 API Kejadian Penelusuran Halaman

SDK menyediakan dua metode untuk melaporkan event penjelajahan halaman: pengumpulan halaman otomatis dan pengumpulan halaman manual. Kedua metode ini juga dapat digunakan bersamaan.

6.1 Pengumpulan halaman otomatis

Pengumpulan halaman otomatis diimplementasikan melalui hook sistem viewWillAppear dan viewWillDisappear, serta memperoleh className. Secara default, fitur ini dinonaktifkan pada SDK. Jika ingin mengaktifkannya, kami menyarankan Anda memanggil operasi tersebut sebelum inisialisasi.

Fungsi Antarmuka:

+ (void)setAutoPageEnabled:(BOOL)value;

Parameter

Tipe

Deskripsi

Catatan

value

BOOL

Apakah akan mengaktifkan pengumpulan halaman otomatis

  • YES: diaktifkan

  • NO: dinonaktifkan (dinonaktifkan secara default)

Kode contoh:

// Aktifkan pengumpulan halaman otomatis.
[QTMobClick setAutoPageEnabled:YES];

6.1.1 Nonaktifkan pelaporan otomatis satu halaman

Jika Anda mengaktifkan pengumpulan halaman otomatis secara global, Anda dapat memanggil operasi ini untuk melewati pengumpulan tersebut. Disarankan untuk memanggil operasi ini di awal metode viewWillAppear. Jika Anda tidak ingin mengumpulkan statistik untuk pengumpulan halaman otomatis saat ini, atur parameter pageName ke nil.

Fungsi Antarmuka:

+ (void)skipMe:(id)PageObject pageName:(NSString *)pageName;

Contoh:

#import <QTCommon/UMSpmHybrid.h>

- (void)viewWillAppear:(BOOL)animated
{
  
    [super viewWillAppear:animated];

    // Pengumpulan halaman otomatis untuk kelas saat ini tidak dihitung.
    [UMSpmHybrid skipMe:[self class] pageName:nil];
}

Pengumpulan halaman manual 6.2

Fungsi Antarmuka:

/**Statistik durasi halaman otomatis untuk mencatat durasi tampilan halaman.
 Penggunaan: Anda harus memanggil dua fungsi beginLogPageView: dan endLogPageView: untuk menyelesaikan statistik otomatis. Jika hanya satu fungsi yang dipanggil, data yang valid tidak akan dihasilkan.
 Panggil beginLogPageView: saat halaman ditampilkan, dan endLogPageView saat keluar dari halaman:
 @ param pageName Nama halaman tempat statistik dikumpulkan.
 @return void.
 */
+ (void)beginLogPageView:(NSString *)pageName;

/**Statistik durasi halaman otomatis untuk mencatat durasi tampilan halaman.
 Penggunaan: Anda harus memanggil dua fungsi beginLogPageView: dan endLogPageView: untuk menyelesaikan statistik otomatis. Jika hanya satu fungsi yang dipanggil, data yang valid tidak akan dihasilkan.
 Panggil beginLogPageView: saat halaman ditampilkan, dan endLogPageView saat keluar dari halaman:
 @ param pageName Nama halaman tempat statistik dikumpulkan.
 @return void.
 */
+ (void)endLogPageView:(NSString *)pageName;

Parameter:

Parameter

Tipe

Deskripsi

Catatan

pageName

NSString

Pengkodean halaman untuk statistik

Nilai dalam beginLogPageView dan endLogPageView harus sama

Catatan:

  • Anda harus memanggil berpasangan beginLogPageView: dan endLogPageView: dua fungsi untuk menyelesaikan statistik otomatis. Jika hanya satu fungsi yang dipanggil, data valid tidak akan dihasilkan;

  • Panggil beginLogPageView: ketika halaman ditampilkan, dan panggil endLogPageView: ketika halaman keluar.

Kode contoh:

Dalam kelas ViewController, panggil metode berikut secara berpasangan di viewWillAppear: dan viewWillDisappear::

- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];
 [QTMobClick beginLogPageView:@"NamaHalaman"]; //("NamaHalaman" adalah nama halaman, yang dapat disesuaikan)
}

- (void)viewWillDisappear:(BOOL)animated 
{
 [super viewWillDisappear:animated];
 [QTMobClick endLogPageView:@"NamaHalaman"];
}

Anda juga dapat memanggil fungsi beginLogPageView: dan endLogPageView: di metode viewDidAppear: dan viewDidDisappear: untuk menyelesaikan statistik otomatis berdasarkan skenario bisnis Anda.

6.2.1 Pengaturan Properti Halaman

Antarmuka pembaruan properti halaman iOS updatePageProperties memungkinkan Anda melampirkan properti kustom ke halaman saat ini. Antarmuka:

/**
 * @brief Memperbarui parameter bisnis di halaman.
 *
 * @param pageName Nama halaman, seperti Page_Detail.
 * @param pProperties Parameter bisnis, yang merupakan pasangan kv.
 *
 * @warning Deskripsi panggilan: harus dipanggil sebelum viewWillDisappear
 *
 * Lokasi terbaik: panggil sebelum viewWillDisappear
 */
+(void) updatePageProperties:(NSString *)pageName properties:(NSDictionary *) pProperties;

Parameter:

Parameter

Tipe

Deskripsi

Catatan

pageName

NSString

Pengkodean halaman, seperti Page_Detail

pProperties

NSDictionary

Parameter bisnis, pasangan kv

Catatan: Harap atur properti halaman sebelum memanggil beginLogPageView.

Impor file header:

#import <QTCommon/UMSpm.h>

Contoh:

[UMSpm updatePageProperties:@"page_home" properties: @{@"page_home_key":@"page_home_val"}];

Catatan: Anda hanya dapat mengonfigurasi pelacakan manual untuk halaman.

6.2.2 Lewati Properti Halaman

Selain itu, SDK Quick Tracking juga menyediakan antarmuka pelacakan properti halaman lewat updateNextPageProperties, yang memungkinkan Anda melampirkan properti kustom ke halaman berikutnya.

/**
 * @brief Memperbarui parameter bisnis di halaman berikutnya.
 *
 * @param properties Teruskan parameter bisnis ke halaman berikutnya. Pasangan KV
 *
 * @warning Deskripsi panggilan: Panggilan harus dilakukan sebelum pageAppear di halaman berikutnya. Jika tidak, kesalahan akan dibawa.
 *
 * Lokasi terbaik: harus dipanggil sebelum pageAppear di halaman berikutnya
 */
+(void) updateNextPageProperties:(NSDictionary *) properties;

Parameter:

Parameter

Tipe

Deskripsi

Catatan

properties

NSDictionary

Teruskan parameter bisnis ke halaman berikutnya. pasangan kv

Contoh:

Harus dipanggil sebelum beginLogPageView untuk halaman berikutnya.

[UMSpm updateNextPageProperties:@{@"news_next_key":@"news_next_val"}];

Catatan: Anda hanya dapat menggunakan pelacakan manual untuk atribut halaman.

7 Event Burial Point

Event kustom dapat digunakan untuk melacak perilaku pengguna dan mencatat detail spesifik terjadinya perilaku tersebut.

7.1 Titik pelacakan event

Antarmuka:

+ (void)event:(NSString *)eventCode; 

+ (void)event:(NSString *)eventCode attributes:(NSDictionary *)attributes;

+ (void)event:(NSString *)eventId pageName:(NSString *)pageName attributes:(NSDictionary *)attributes;

Deskripsi parameter:

Parameter

Tipe

Deskripsi

Catatan

eventCode

NSString

Pengodean Peristiwa

Kode event untuk klik, eksposur, dan event kustom dalam skema pelacakan

attributes

NSDictionary

Properti Kustom

-Nilai kunci dalam atribut tidak boleh kosong.

-value hanya bisa bertipe String, Long, Integer, Float, Double, Short, atau Array (elemen dalam array harus berupa String).

pageName

NSString

Pengkodean halaman

Halaman tempat event terjadi, dan kode halaman untuk event klik, eksposur, dan kustom dalam skema pelacakan.

Batas jumlah unggahan kejadian:

  • Panjang maksimum string kunci properti kustom: 1024

  • Panjang maksimum string nilai atribut kustom: 1024*4

  • Panjang peta atribut kustom (jumlah parameter):100 pasangan kunci-nilai

  • Ketika nilai properti kustom adalah elemen array, panjang maksimum array nilai properti adalah 100.

  • Total panjang pesan log tunggal dibatasi hingga 2MB.

Contoh 1:

Menghitung jumlah kejadian "teruskan" yang terjadi dalam aplikasi, lalu panggil dalam fungsi teruskan:

[QTMobClick event:@"Teruskan"];

Contoh 2:

Untuk menghitung jumlah kejadian "pembelian" yang terjadi dalam aplikasi, serta jenis dan jumlah barang yang dibeli, lalu panggil dalam fungsi pembelian:

NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
[QTMobClick event:@"purchase" attributes:dict];

Contoh 3:

NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
[QTMobClick event:@"purchase" pageName:@"ViewController" attributes:dict];

8 Penanaman Penuh Titik (Penanaman Otomatis)

8.1 Ruang lingkup yang berlaku untuk titik pelacakan lengkap

SDK berlaku untuk iOS 8.0 dan versi lebih baru.

8.2 Deskripsi Antarmuka Full Buried Point

8.2.1 Antarmuka pengumpulan halaman otomatis

Catatan

Halaman pengumpulan otomatis menggunakan hook sistem viewWillAppear dan viewWillDisappear, mengimplementasikan pengambilan className. Disarankan untuk memanggil sebelum inisialisasi, secara default dinonaktifkan.

/**Atur apakah akan mengumpulkan data secara otomatis. Nilai default adalah NO.
 @ param value diatur ke YES, SDK QT secara otomatis mengumpulkan informasi halaman
 */
+ (void)setAutoPageEnabled:(BOOL)value;

Contoh:

 [QTMobClick setAutoPageEnabled:YES];
 // Atur nama domain.
 [QTConfigure setCustomDomain:@"Nama domain penerimaan Anda" standbyDomain:nil]; 
 // Inisialisasi appkey.
 [QTConfigure initWithAppkey:@"AppKey aplikasi Anda" channel:@"App Store"]; 

Nonaktifkan pengumpulan halaman otomatis untuk suatu halaman

/**
 * @brief Melewati statistik pada halaman saat ini.
 *
 * @param PageObject Objek kontainer. Parameter ini digunakan untuk mendapatkan halaman secara otomatis. Secara default, parameter ini dapat disetel ke nil.
 * @param pageName Nama halaman. Parameter ini digunakan ketika Anda mengonfigurasi halaman secara manual. Anda dapat memasukkan nil ketika mengonfigurasi pengambilan halaman otomatis.
 * @warning Kami sarankan Anda memanggil operasi ini sebelum mengatur halaman. Setelah Anda memanggil operasi ini, halaman asli tidak mengirim data.
 *                          
 */
+ (void)skipMe:(id)PageObject pageName:(NSString *)pageName;

Contoh:

[UMSpmHybrid skipMe:self pageName:nil];

8.2.2 Buka control dan klik titik pelacakan data

Catatan

Event pengumpulan otomatis meliputi:

  • hook sistem sendAction:to:from:forEvent: mengimplementasikan pemantauan metode eksekusi kontrol

  • Mendengarkan addGestureRecognizer: Implementasikan semua perilaku klik

  • hook tableView:didSelectRowAtIndexPath: mendukung perilaku klik tableView

  • Hook collectionView:didSelectItemAtIndexPath: mendukung perilaku klik collectionView

Direkomendasikan untuk dipanggil sebelum inisialisasi, yang ditutup secara default.

/**Atur apakah akan mengumpulkan event klik secara otomatis. Nilai default adalah NO.
 @ param value diatur ke YES, SDK QT secara otomatis mengumpulkan event klik
 */
+ (void)setAutoEventEnabled:(BOOL)value;

Contoh:

 [QTMobClick setAutoEventEnabled:YES];
 // Atur nama domain.
 [QTConfigure setCustomDomain:@"Nama domain penerimaan Anda" standbyDomain:nil]; 
 // Inisialisasi appkey.
 [QTConfigure initWithAppkey:@"AppKey aplikasi Anda" channel:@"App Store"]; 

Kontrol yang didukung:

Nama Kontrol

Keterangan

UITableView

UICollectionView

UIImageView

Terdapat perilaku UITapGestureRecognizer yang dapat

UILabel

Ada perilaku UITapGestureRecognizer yang bisa dilakukan

UIButton

UISwitch

UIStepper

UISegmentedControl

UISlider

UIPageControl

UITabBarItem

UIBarButtonItem

Abaikan kejadian klik wadah

/**
 * @abstract
 * Abaikan klik pada halaman
 *
 * @param PageObject Wadah.
 */
+(void)ignorePageView:(id)PageObject;

Contoh:

// Metode ini mendukung beberapa pemanggilan dan mengabaikan pengumpulan.    
[QTAutoTrack ignorePageView:self];

Abaikan pengumpulan otomatis event klik untuk jenis kontrol tertentu

Pengumpulan otomatis event klik untuk kontrol jenis tertentu diabaikan menggunakan metode ignoreViewType.

/**
 * @abstract
 * Abaikan jenis klik tertentu
 *
 * @param aClass Lihat Class yang sesuai
 */
+(void)ignoreViewType:(Class)aclass;

Contoh:

// Metode ini mendukung beberapa pemanggilan dan mengabaikan pengumpulan.    
[QTAutoTrack ignoreViewType:[UIButton class]];    
[QTAutoTrack ignoreViewType:[UISwitch class]];

Abaikan pengumpulan otomatis event klik untuk kontrol tertentu

Pengumpulan otomatis event klik untuk kontrol tertentu diabaikan menggunakan metode UMAnalyticsIgnoreView.

button.UMAnalyticsIgnoreView=YES;

8.2.3 Pengaturan Informasi Kustom Halaman

Pengkodean Kustom untuk Pengaturan Halaman

Dengan mengimplementasikan metode -(NSString *)getUMPageName, pengkodean kustom dikembalikan

-(NSString *)getUMPageName
{
   return @"testPageCode";
}

Properti Kustom

Atur properti kustom di halaman dengan mengimplementasikan metode -(NSDictionary *)getUMPageProperties

-(NSDictionary *)getUMPageProperties
{
   return @{@"key1":@"val1",@"key2":@"val2"};
}

Pengaturan sumber halaman (page_referrer) informasi

Anda dapat menggunakan metode -(NSString *) getUMScreenUrl untuk mengembalikan informasi sumber kustom.

- (NSString *)getUMScreenUrl {
    return @"um//um/page";
}

8.2.4 Pengaturan Properti Kustom untuk Kejadian Klik Kontrol

Metode ini memungkinkan Anda mengatur properti kustom untuk kontrol tertentu. Anda dapat mengatur beberapa pasangan kunci-nilai untuk properti kustom. Baik Kunci maupun Nilai perlu berupa tipe string. Properti kustom dan nilainya termasuk dalam data kejadian klik penuh kontrol ini.

button.UMAnalyticsViewProperties=@{@"key11":@"val11"};

Atur Kode Kejadian untuk Kontrol

Metode ini memungkinkan Anda mengatur pengkodean kejadian untuk kontrol tertentu.

button.UMAnalyticsEventCode=@"abcd123";

8.3 Titik pelacakan eksposur

Catatan

Fitur ini didukung di SDK 1.7.0.PX dan versi lebih baru. Untuk informasi lebih lanjut, lihat catatan pembaruan iOS SDK.

Saat menggunakan fungsi pelacakan eksposur otomatis, pengguna perlu mengaktifkan fungsi eksposur otomatis secara manual di item konfigurasi (secara default dinonaktifkan)

// Aktifkan statistik eksposur.
[QTConfigure setAutoExposureEnabled:YES showMonitorVerboseLog:NO];

Tentu saja, Anda juga dapat menonaktifkan fungsi eksposur otomatis saat diperlukan.

// Nonaktifkan statistik eksposur.
[QTConfigure setAutoExposureEnabled:NO showMonitorVerboseLog:NO];

Deskripsi parameter:

Parameter

Tipe

Keterangan

exposureEnabled

BOOL

Apakah akan mengaktifkan pengambilan eksposur otomatis. Nilai default adalah NO, artinya pemantauan eksposur elemen dinonaktifkan.

showMonitorVerboseLog

BOOL

Sakelar log redundan untuk pendengar eksposur elemen. Nilai default adalah NO. Sakelar ini digunakan untuk melihat perubahan waktu pemantauan eksposur.

8.4.1 Item konfigurasi eksposur

#import <QTCommon/QTCommon.h>

// Pengaturan eksposur umum
QTExposureConfig *config = [[QTExposureConfig alloc] initWithVisibleAreaThreshold:0 exposureDurationThreshold:0 allowRepeatExposure:YES];
[QTConfigure setExposureConfig:config];

Tabel berikut menjelaskan parameter yang digunakan QTExposureConfig untuk mengonfigurasi properti eksposur:

Parameter

Tipe

Deskripsi

visibleAreaThreshold

CGFloat

Rasio eksposur minimum. Nilai default adalah 0.5f. Rentang eksposur adalah 0~1f.

  • Saat nilainya 0.0f, eksposur elemen yang terlihat satu piksel pun dapat memicu event titik pelacakan eksposur.

  • Saat nilainya 1.0f, eksposur elemen harus sepenuhnya terlihat untuk memicu event titik pelacakan eksposur.

exposureDurationThreshold

NSTimeInterval

Durasi eksposur efektif, yang merupakan durasi minimum yang didukung 0.3. Nilai default adalah 0.3, artinya tampilan memicu eksposur setelah waktu yang ditentukan.

allowRepeatExposure

BOOL

Apakah akan mengulangi eksposur. Nilai default: YES.

  • Saat YES, jika elemen disembunyikan, eksposur akan dipicu lagi saat elemen muncul kembali dan memenuhi kondisi eksposur.

  • Saat NO, jika elemen disembunyikan, saat elemen muncul kembali dan memenuhi kondisi eksposur, eksposur tidak akan dipicu lagi.

8.4.1 Konfigurasi eksposur global

Anda dapat menggunakan metode setExposureConfig untuk mengatur atribut eksposur global. Kami sarankan Anda memanggil

#import <QTCommon/QTCommon.h>

[QTConfigure setExposureConfig:config];

8.4.2 Menandai Elemen Eksposur

Untuk menggunakan fungsi eksposur, Anda perlu mengikat elemen eksposur secara manual. Anda dapat memanggil metode addViewForExposure untuk mengimplementasikan pengikatan elemen eksposur.

// Tambahkan tampilan eksposur.
+ (void)addViewForExposure:(UIView *_Nullable)view withData:(QTExposureData *_Nullable)data;

Deskripsi parameter:

Parameter

Tipe

Keterangan

view

UIView

Objek View yang perlu dikumpulkan statistik eksposurnya

data

QTExposureData

Tabel berikut menjelaskan data eksposur secara detail.

API QTExposureData:

/// Enkapsulasi data event eksposur, termasuk nama event, atribut kustom, identifier eksposur, dan konfigurasi eksposur
@interface QTExposureData : NSObject

// Konfigurasi eksposur.
@property (nonatomic, copy) QTExposureConfig *exposureConfig;

// Atribut event kustom.
@property (nonatomic, strong) NSDictionary<NSString *, id> *properties;

// Nama event.
@property (nonatomic, copy) NSString *event;

// Flag unik dari view.
@property (nonatomic, copy, readonly) NSString *exposureIdentifier;

@property (nonatomic, weak) id<QTExposureListener> exposureListener;

// Metode inisialisasi.
- (instancetype)initWithEvent:(NSString *)event properties:(NSDictionary<NSString *, id> *)properties exposureConfig:(QTExposureConfig *)exposureConfig exposureIdentifier:(NSString *)exposureIdentifier;

@end

Deskripsi parameter:

Parameter

Tipe

Deskripsi

event

NSString

Nama Event (Wajib)

properties

NSDictionary<NSString *, id>

Atribut event eksposur (opsional)

exposureConfig

QTExposureConfig

Konfigurasi eksposur (opsional. Secara default menggunakan konfigurasi global)

exposureIdentifier

NSString

Identifier unik elemen

Tag elemen umum

Kode contoh:

#import <QTCommon/QTCommon.h>

// Bangun data eksposur.
QTExposureData *data = [[QTExposureData alloc] initWithEvent:@"test_item_exp" properties:nil exposureConfig:nil exposureIdentifier:nil];
[QTMobClick addViewForExposure:view withData:data];
Tag Elemen Kelas Daftar

Tandai semua elemen

#import <QTCommon/QTCommon.h>

QTExposureConfig *config = [[QTExposureConfig alloc] initWithVisibleAreaThreshold:0 exposureDurationThreshold:0 allowRepeatExposure:YES];
QTExposureData *data = [[QTExposureData alloc] initWithEvent:@"test_whole_tableview_exp" properties:@{
    @"tableviewName":@"xxxx"
} exposureConfig:config exposureIdentifier:nil];
[QTMobClick addViewForExposure:self.tableView withData:data];

Tandai satu elemen:

Catatan

Elemen tunggal dalam daftar sering kali digunakan ulang dan posisi elemen berubah (disegarkan, dihapus, ditambahkan, dll.). Kami sarankan Anda menambahkan bidang exposureIdentifier ke data eksposur dan memastikan keunikan ID tersebut.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"exposureCell"];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
    label.text = [NSString stringWithFormat:@"session:%ld", (long)indexPath.section];
    [cell addSubview:label];
    
    UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(160, 0, 100, 20)];
    label2.text = [NSString stringWithFormat:@"row:%ld", (long)indexPath.row];
    [cell addSubview:label2];
    
    QTExposureData *data;
    // Definisikan kode event eksposur.
    NSString *cell_exp_eventcode = [NSString stringWithFormat:@"exposure_cell_%ld_%ld", indexPath.section, (long)indexPath.row];
    // Definisikan kamus atribut yang akan diekspos untuk elemen.
    NSDictionary *properties = @{ @"cell_image_name": @"xxxx" };
    // Definisikan identifier unik elemen yang diekspos.
    NSString* uniqueExpItemId = @"xxxx";
    // Definisikan waktu eksposur elemen tunggal dalam daftar.
    // Jika elemen default melebihi 50% di area viewport, elemen muncul selama 300ms.
    // Tentukan apakah akan mengulangi eksposur data. Anda dapat menentukan nilai berdasarkan kebutuhan bisnis Anda.
    QTExposureConfig* expItemConfig = [[QTExposureConfig alloc] initWithVisibleRadio:0.5 exposureMinDuration:0.3 allowRepeatExposure:YES];
    // Rangkai data eksposur.
    data = [[QTExposureData alloc] initWithEvent:cell_exp_eventcode
                                      properties:properties
                                  exposureConfig:expItemConfig
                              exposureIdentifier:uniqueExpItemId];
    /* API konfigurasi data eksposur opsional lainnya
    
    data = [[QTExposureData alloc] initWithEvent:cell_exp_eventcode
                                      properties:properties];
    
    data = [[QTExposureData alloc] initWithEvent:cell_exp_eventcode
                                  exposureConfig:expItemConfig
                              exposureIdentifier:uniqueExpItemId];
    
    data = [[QTExposureData alloc] initWithEvent:cell_exp_eventcode
                                      properties:properties
                              exposureIdentifier:uniqueExpItemId];
    
    data = [[QTExposureData alloc] initWithEvent:cell_exp_eventcode
                                      properties:properties
                                  exposureConfig:expItemConfig];
     
    */
   
    [QTMobClick addViewForExposure:cell withData:data];
    
    return cell;
}

8.4.3 Hapus Elemen Eksposur

Jika elemen itu sendiri dihapus, pemantauan titik pelacakan yang sesuai juga akan dihapus (seperti menghapus daftar).

Tentu saja Anda dapat menggunakan removeViewForExposure untuk menghapus elemen yang tidak memerlukan pengambilan eksposur.

[QTMobClick removeViewForExposure:view withExposureIdentifier:nil];

9 Berbagi Fisi

Berbagi fisi adalah konsep kunci dari strategi pertumbuhan hacking. Ini bergantung pada hubungan sosial antar pengguna untuk mewujudkan transmisi informasi timbal balik, sehingga mendorong akuisisi pengguna baru.

Setelah menyelesaikan integrasi fungsi SDK berbagi fisi, Anda akan dapat menggunakan model tren berbagi platform QuickTracking dan mengukur manfaat penarikan aktivitas pemasaran dengan indikator terkait berbagi kembali.

  1. Mendukung melihat metrik efek aliran balik pengguna berbagi teratas dan tingkat aliran balik berbagi yang berbeda.

  2. Mendukung kombinasi dan konfigurasi fleksibel indikator aliran balik, melihat pengguna teratas dengan kemampuan tarik fisi terbesar dan kemampuan konversi aliran balik berbagi, melacak hubungan antara pengguna yang berbagi tautan fisi dan aliran balik berbagi, dan dengan cepat menemukan konsumen pendapat kunci.

9.1 parameter berbagi sumber

/*
 * API untuk mendapatkan parameter berbagi sumber
 * return @{ @"$$_ref_share_id": @"xxxxx", @"$$_ref_share_url": @"xxxxx"}
 **/

+(nullable NSDictionary *)getRefShareParams;

Persyaratan Versi

iOS SDK V1.5.0.PX dan yang lebih baru

Fitur

API yang digunakan untuk mendapatkan ID dan URL berbagi sumber saat pengguna membuka aplikasi.

parameter permintaan

Tidak ada

Parameter pengembalian

Secara default, kamus kosong dikembalikan. Jika {} memiliki nilai, fungsi berikut dikembalikan:

Parameter

Tipe

Nilai Default

Makna

Catatan

$$_ref_share_url

String

""

URL berbagi sumber yang tidak mengandung ID berbagi.

Tidak ada

$$_ref_share_id

String

""

ID berbagi sumber

Tidak ada

Contoh pemanggilan

-(void)onShare {
    __weak typeof(self) weakSelf = self;
    NSDictionary* refShareParams = [QTMobClick getRefShareParams];
    NSString* $$_ref_share_id = [refShareParams objectForKey:@"$sid"];
    
    [QTMobClick requestShareParams:@"https://www.lydaas.com/?utm_source=share" params:@{
        @"title": @"Ini adalah judul berbagi",
        @"campaign":@"Ini adalah aktivitas berbagi",
        @"shareId": $$_ref_share_id
    } timeout:0 shareResultHandler:^(id  _Nullable result, NSError * _Nullable error) {
        NSLog(@"result === %@", result);
        if (error) {
            NSLog(@"error === %@", error);
        }
        __block NSString *shareId = [(NSDictionary*)result objectForKey:@"$sid"];
        
        NSDictionary *dict = @{
            @"$$_share_id": shareId,
            @"$$_share_url" : @"https://www.lydaas.com/?utm_source=share",
            @"$$_share_title" : @"Aktivitas Berbagi A",
            @"$_share_campaign_id" : @"Ini adalah aktivitas berbagi kustom",
            @"$$_share_type" : @"Platform berbagi yang ditentukan pengguna"
        };
        [QTMobClick event:@"$$_share" attributes:dict];
        dispatch_async(dispatch_get_main_queue(), ^{
            UIAlertController *alertController = [UIAlertController 
                alertControllerWithTitle:@"Parameter berbagi" message:[NSString 
                stringWithFormat:@"Hasil parameter permintaan berbagi adalah sebagai berikut:\n\n {\n $sid:%@ \n} \n", shareId] 
                preferredStyle:UIAlertControllerStyleAlert];
            // Buat UIAlertAction.
            UIAlertAction * firmAction = [UIAlertAction actionWithTitle:@"Saya mengerti" 
                style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                // Pemrosesan setelah tombol OK diklik
                NSLog(@"Pengguna telah disalin");
                UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
                pasteboard.string = shareId;
            }];
            [alertController addAction:confirmAction];
            [weakSelf presentViewController:alertController animated:YES completion:nil];
        });
    }];
}

9.2 permintaan parameter berbagi

#import <QTCommon/MobClick.h>

/*
 * API pengambilan parameter berbagi.
 * @param url: URL halaman yang dibagikan. Anda harus menentukan parameter ini.
 * @param params Parameter berbagi yang mungkin, bisa null.
 * {
 * @"title": judul berbagi, // bisa null, panjang maksimum 4*1024
 * @"shareId": ID berbagi sumber. // Nilainya bisa null.
 * @"campaign": aktivitas berbagi, // bisa null, panjang maksimum 4*1024
 * ... akan dikembangkan
 * }
 * @param timeout Periode timeout permintaan, dalam detik. Nilai valid: 0 hingga 10. Jika Anda menentukan 0, SDK menggunakan nilai default 3 detik.
 * @param Objek callback untuk hasil shareResultHandler. Parameter ini harus ditentukan dan tidak boleh null.
 */

+(void)requestShareParams:(nonnull NSString *)url
                   params:(nonnull NSDictionary *)params
                  timeout:(int)timeout
       shareResultHandler:(nonnull QTShareResultHandler)shareResultHandler;

Persyaratan Versi

iOS SDK v1.5.0.PX dan versi yang lebih baru

Fitur

Permintaan digunakan untuk membangun ID berbagi yang diperlukan untuk rantai berbagi

parameter permintaan

Parameter

Tipe

Nilai Default

Makna

Catatan

url

NSString

nil

Bagikan URL halaman

Harus ditentukan, tidak boleh nil

params

NSDictionary

nil

Parameter berbagi untuk mendapatkan parameter permintaan API

  • Parameter opsional

campaign: pengenal aktivitas berbagi. Tipe string, nilai default "", panjang maksimum 4*1024 karakter

title: Judul berbagi. Tipe string, nilai default "", panjang maksimum 4*1024

shareId: ID berbagi sumber. Tipe string, nilai default ""

timeout

int

0

Periode waktu habis antarmuka

Nilai valid: 1 hingga 10. Unit: detik. Waktu habis default SDK adalah 3 detik.

shareResultHandler

QTShareResultHandler

nil

Objek callback hasil

Harus ditentukan, tidak boleh nil

Catatan: Konteks callback adalah thread pekerja latar belakang permintaan jaringan internal SDK. Jika Anda perlu melakukan operasi pada kontrol UI dalam metode callback, gunakan handler thread UI untuk melakukan operasi terkait.

Parameter pengembalian

Parameter

Tipe

Nilai Default

Makna

Catatan

result

NSDictionary

nil

Hasil permintaan API parameter berbagi

Berisi properti

$sid, tipe NSString, ID berbagi

error

NSError

nil

Kesalahan dilaporkan untuk permintaan API parameter berbagi.

Tidak ada

Contoh pemanggilan

-(void)onShare {
  __weak typeof(self) * weakSelf = self;
 	[QTMobClick requestShareParams:@"https://www.lydaas.com/?utm_source=share" 
   	params:@{
     @"title": @"Ini adalah judul yang dibagikan",
     @"campaign":@"Ini adalah aktivitas berbagi",
     @"shareId": @"Ini adalah ID yang dibagikan"
     } 
   timeout:0 
   shareResultHandler:^(id  _Nullable result, NSError * _Nullable error) {
     NSLog(@"result === %@", result);
     if (error) {
       NSLog(@"error === %@", error);
     }
     __block NSString *shareId = [(NSDictionary*)result objectForKey:@"$sid"]; 
     NSDictionary *dict = @{
       @"$$_share_id": shareId, 
       @"$$_share_url" : @"https://www.lydaas.com/?utm_source=share",
       @"$$_share_title" : @"Aktivitas berbagi A",
       @"$_share_campaign_id" : @"Ini adalah aktivitas berbagi kustom",
       @"$$_share_type" : @"Platform berbagi yang ditentukan pengguna"
     };
     [QTMobClick event:@"$$_share" attributes:dict];
     dispatch_async(dispatch_get_main_queue(), ^{
       UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Parameter berbagi"
                                             message:[NSString stringWithFormat:
                                             @ "Hasil parameter berbagi permintaan adalah sebagai berikut:\n\n {\n $sid:%@ \n} \n", shareId] 
                                             preferredStyle:UIAlertControllerStyleAlert];
       // Buat sebuah UIAlertAction.
       UIAlertAction * firmAction = [UIAlertAction actionWithTitle:@"Saya mengerti"
                                       style:UIAlertActionStyleDefault
                                       handler:^(UIAlertAction * _Nonnull action) {
                                         // Pemrosesan setelah tombol OK diklik
                                         NSLog(@"Telah disalin ke clipboard");
                                         UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
                                         pasteboard.string = shareId;                                                     
                                       }];
       [alertController addAction:confirmAction];
       [weakSelf presentViewController:alertController animated:YES completion:nil];
     });
   }];
}

9.3 pelaporan kejadian berbagi

Laporkan kejadian berbagi dengan menggunakan pengkodean kejadian preset $$_share

Contoh:

[QTMobClick requestShareParams:@"https://www.lydaas.com/?utm_source=share"
                        params:@{
    @"title": @"Ini adalah judul berbagi",
    @"campaign":@"Ini adalah aktivitas berbagi",
    @"shareId": @"Ini adalah ID berbagi"
}
                        timeout:0
            shareResultHandler:^(id  _Nullable result, NSError * _Nullable error) {
    NSLog(@"result === %@", result);
    if (error) {
        NSLog(@"error === %@", error);
    }
    __block NSString *shareId = [(NSDictionary*)result objectForKey:@"$sid"];
    NSDictionary *dict = @{
        @"$$_share_id": shareId,
        @"$$_share_url" : @"https://www.lydaas.com/?utm_source=share",
        @"$$_share_title" : @"Aktivitas Berbagi A",
        @"$_share_campaign_id" : @"Ini adalah aktivitas berbagi kustom",
        @"$$_share_type" : @"Platform berbagi yang ditentukan pengguna"
    };
    [QTMobClick event:@"$$_share" attributes:dict];   
}];

Harap dicatat bahwa tautan yang dipanggil perlu membawa kunci "$sid" dan nilainya adalah parameter ID berbagi, seperti https://example.aliyun.com/path/to/content?$sid=123456"