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:

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
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
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 ".
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.
...
}]
})Event aktivasi aplikasi ($$_app_install) dikumpulkan dan dilaporkan secara otomatis oleh QT App SDK.
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 |
|
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
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
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
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.
|
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.
|
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;
@endDeskripsi 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:
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.
Mendukung melihat metrik efek aliran balik pengguna berbagi teratas dan tingkat aliran balik berbagi yang berbeda.
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 |
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"