Dokumen ini menjelaskan cara mengelola pengiriman data ke Google Analytics menggunakan Google Analytics SDK untuk iOS v3.
Ringkasan
Data yang dikumpulkan menggunakan Google Analytics SDK untuk iOS disimpan secara lokal sebelum dikirim di thread terpisah ke Google Analytics.
Data harus dikirim dan diterima paling lambat 04.00 di hari berikutnya, dalam zona waktu lokal setiap tampilan. Data apa pun yang diterima setelah tanggal tersebut tidak akan muncul dalam laporan. Misalnya, jika hit dimasukkan ke dalam antrean lokal pada pukul 23.59, hit harus dikirim dalam waktu 4 jam, sebelum pukul 03.59, agar muncul dalam laporan. Di sisi lain, hit dalam antrean pada pukul 00.00 harus dikirim dalam waktu 28 jam, yaitu 03.59 di hari berikutnya agar dapat muncul dalam laporan.
Pengiriman berkala
Secara default, data dikirim dari Google Analytics SDK untuk iOS setiap 2 menit.
// Set the dispatch interval in seconds. // 2 minutes (120 seconds) is the default value. [GAI sharedInstance].dispatchInterval = 120;
Menetapkan nilai negatif akan menonaktifkan pengiriman berkala, sehingga Anda harus menggunakan pengiriman manual jika ingin mengirim data apa pun ke Google Analytics.
// Disable periodic dispatch by setting dispatch interval to a value less than 1. [GAI sharedInstance].dispatchInterval = 0;
Jika pengguna kehilangan akses jaringan atau keluar dari aplikasi Anda saat masih ada hit yang menunggu dikirim, hit tersebut akan dipertahankan di penyimpanan lokal. Fungsi ini akan dikirim pada saat berikutnya aplikasi Anda berjalan dan pengiriman dipanggil.
Pengiriman manual
Untuk mengirim hit secara manual, misalnya saat Anda mengetahui bahwa radio perangkat sudah digunakan untuk mengirim data lain:
[[GAI sharedInstance] dispatch];
Pengiriman latar belakang
Untuk mengaktifkan pengiriman latar belakang di aplikasi iOS:
- Tambahkan properti untuk
dispatchHandler
. - Implementasikan metode
sendHitsInBackground
. -
Ganti metode
applicationDidEnterBackground
. - Ganti
metode
applicationWillEnterForeground
.
Tambahkan properti untuk dispatchHandler
Dalam file implementasi (AppDelegate.m
)
class AppDelegate
, tambahkan properti berikut sebelum
@implementation AppDelegate
:
@interface AppDelegate () @property(nonatomic, copy) void (^dispatchHandler)(GAIDispatchResult result); @end @implementation AppDelegate // ...
Mengimplementasikan
metode sendHitsInBackground
Di class AppDelegate
, implementasikan
metode sendHitsInBackground
untuk mengirim hit saat
aplikasi beralih ke latar belakang:
// This method sends any queued hits when the app enters the background. - (void)sendHitsInBackground { __block BOOL taskExpired = NO; __block UIBackgroundTaskIdentifier taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ taskExpired = YES; }]; if (taskId == UIBackgroundTaskInvalid) { return; } __weak AppDelegate *weakSelf = self; self.dispatchHandler = ^(GAIDispatchResult result) { // Send hits until no hits are left, a dispatch error occurs, or // the background task expires. if (result == kGAIDispatchGood && !taskExpired) { [[GAI sharedInstance] dispatchWithCompletionHandler:weakSelf.dispatchHandler]; } else { [[UIApplication sharedApplication] endBackgroundTask:taskId]; } }; [[GAI sharedInstance] dispatchWithCompletionHandler:self.dispatchHandler]; }
Metode dispatchWithCompletionHandler
mengambil blok penyelesaian sebagai parameter dan memanggil pemblokiran penyelesaian setiap kali permintaan yang berisi satu atau beberapa beacon Google Analytics selesai.
Metode ini menampilkan hasil yang menunjukkan apakah ada lebih banyak data untuk dikirim dan/atau jika permintaan terakhir berhasil. Dengan metode ini, Anda dapat mengelola
pengiriman beacon secara efektif saat aplikasi beralih ke latar belakang.
Ganti
metode applicationDidEnterBackground
Ganti metode applicationDidEnterBackground
pada
class AppDelegate
untuk memanggil metode sendHitsInBackground
, yang mengirimkan hit saat aplikasi beralih ke latar belakang:
- (void)applicationDidEnterBackground:(UIApplication *)application { [self sendHitsInBackground]; }
Ganti
metode applicationWillEnterForeground
Ganti metode applicationWillEnterForeground
pada
class AppDelegate
untuk memulihkan interval pengiriman. Contoh:
- (void)applicationWillEnterForeground:(UIApplication *)application { // Restores the dispatch interval because dispatchWithCompletionHandler // has disabled automatic dispatching. [GAI sharedInstance].dispatchInterval = 120; }