Panduan ini menjelaskan cara mengupgrade ke Google Analytics SDK untuk Android V3.
Fitur Sekilas: Yang Baru di V3
API di V3 telah difaktorkan ulang agar lebih konsisten di seluruh platform native dan web. Semua pengguna V2 perlu memperhatikan perubahan ini:
- Kini hit dikirim menggunakan satu metode
send(Map<String, String> parameters)
. - Mode debug telah diganti dengan
Logger
- EasyTracker kini membuat subclass
Tracker
, sehingga terjadi beberapa perubahan pada antarmuka. - Baru: flag
dryRun
telah ditambahkan untuk mencegah data yang dikirim muncul dalam laporan.
Untuk mengetahui daftar lengkap perubahan, lihat Android Changelog.
Sebelum Anda Mulai
Sebelum memulai upgrade ke v3, Anda memerlukan hal berikut:
- Properti yang mendukung Universal Analytics dan profil aplikasi
- Google Analytics SDK untuk Android v3
Upgrade Jalur
Untuk memulai, pilih jalur upgrade ke v3 dari implementasi saat ini:
- EasyTracker: v1.x hingga v3
- EasyTracker: v2.x hingga v3
- Penerapan Kustom: v1.x hingga v3
- Penerapan Kustom: v2.x hingga v3
EasyTracker: v1.x hingga v3
Sebaiknya pengguna EasyTracker v1.x mengikuti Panduan Memulai v3 untuk mulai menggunakan v3 dengan EasyTracker.
EasyTracker: v2.x hingga v3
Pengguna v2.x EasyTracker harus mengikuti langkah-langkah berikut untuk menyelesaikan upgrade ke v3:
- Perbarui panggilan ke
EasyTracker.getInstance()
untuk memberikanContext:
// v2 (Old) // EasyTracker.getInstance().activityStart(this);
// v3: EasyTracker.getInstance(this).activityStart(this);
EasyTracker
sekarang membuat subclassTracker
-- menghapus panggilan keEasyTracker.getTracker()
:// v2 (Old) Tracker v2Tracker = EasyTracker.getInstance().getTracker();
// v3 Tracker v3Tracker = EasyTracker.getInstance(this);
- Ganti semua metode praktis
send<hit-type>
dengan metodesend(Map<String, String> parameters)
yang baru:// v2 (Old) Tracker v2EasyTracker = EasyTracker.getInstance().getTracker(this); v2EasyTracker.sendView("Home Screen");
// v3 Tracker v3EasyTracker = EasyTracker.getInstance(this); // Set the screen name on the tracker so that it is used in all hits sent from this screen. v3EasyTracker.set(Fields.SCREEN_NAME, "Home Screen"); // Send a screenview. v3EasyTracker.send(MapBuilder .createAppView() .build() );
Pelajari lebih lanjut cara mengirim data di v3. - Ganti parameter EasyTracker
ga_debug
denganga_logLevel
, dan salah satu nilai verbositas ini:verbose
,info
,warning
,error
:<!-- res/values/analytics.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId">UA-XXXX-Y</string> <!-- REMOVE: <bool name="ga_debug">true</bool> --> <string name="ga_logLevel">verbose</string> </resources>
Lihat Referensi Parameter EasyTracker untuk detail selengkapnya. GoogleAnalytics.requestAppOptOut()
tidak digunakan lagi. Sebagai gantinya, gunakanGoogleAnalytics.getAppOptOut()
:// v2 (Old) GoogleAnalytics.getInstance(this).requestAppOptOut(new AppOptOutCallback() { @Override public void reportAppOptOut(boolean optOut) { if (optOut) { ... // Alert the user that they've opted out. } }); }
// v3 boolean optOutPreference = GoogleAnalytics.getInstance(this).getAppOptOut();
- (Opsional) Tambahkan parameter EasyTracker
ga_dryRun
lalu tetapkan ketrue
saat menguji implementasi Anda agar data pengujian tidak ditampilkan dalam laporan produksi:
<!-- res/values/analytics.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId">UA-XXXX-Y</string> <string name="ga_logLevel">verbose</string> <!-- Prevent data from appearing in reports. Useful for testing. --> <bool name="ga_dryRun">true</bool> </resources>
Implementasi Kustom: v1.x hingga v3
Pengguna v1.x yang tidak menggunakan EasyTracker
harus mengikuti
Panduan Memulai
V3 dan membaca
Panduan Developer
Konfigurasi Lanjutan jika diperlukan.
Implementasi Kustom: v2.x hingga v3
Pengguna v2.x yang tidak menggunakan EasyTracker
harus mengikuti langkah-langkah
di bawah untuk menyelesaikan upgrade ke v3:
- Ganti semua 'send<hit-type>' metode praktis dengan metode
send(Map<String, String> parameters)
yang baru:// v2 (Old) Tracker v2Tracker = GoogleAnaytics.getInstance(this).getTracker("UA-XXXX-Y"); v2Tracker.sendView("Home Screen");
// v3 Tracker v3Tracker = GoogleAnaytics.getInstance(this).getTracker("UA-XXXX-Y"); // This screen name value will remain set on the tracker and sent with // hits until it is set to a new value or to null. v3Tracker.set(Fields.SCREEN_NAME, "Home Screen"); v3Tracker.send(MapBuilder .createAppView() .build() );
- Hapus panggilan ke
GoogleAnalytics.setDebug()
, ganti denganGoogleAnalytics.getLogger().setLogLevel()
:// V2 (Old) GoogleAnalytics.getInstance(this).setDebug(true);
// V3 GoogleAnalytics.getInstance(this) .getLogger() .setLogLevel(LogLevel.VERBOSE); // VERBOSE | INFO | DEBUG | WARNING
Pelajari Logger lebih lanjut - SDK v3 tidak lagi otomatis memulai sesi baru saat aplikasi terbuka (kecuali saat menggunakan EasyTracker). Jika ingin mempertahankan perilaku ini dari implementasi kustom v2, Anda perlu menerapkan logika kontrol sesi Anda sendiri saat pengguna memulai aplikasi:
- (Opsional) Tetapkan flag
dryRun
saat melakukan pengujian untuk mencegah data pengujian diproses dengan laporan produksi:
package com.example.app; import com.google.analytics.tracking.android.GoogleAnalytics; import com.google.analytics.tracking.android.Tracker; import android.app.Application; public class MyApp extends Application { private static Tracker mTracker; private static final String GA_PROPERTY_ID = "UA-XXXX-Y"; @Override public void onCreate() { super.onCreate(); mTracker = GoogleAnalytics.getInstance(this).getTracker(GA_PROPERTY_ID); // CAUTION: Setting session control directly on the tracker persists the // value across all subsequent hits, until it is manually set to null. // This should never be done in normal operation. // // mTracker.set(Fields.SESSION_CONTROL, "start"); // Instead, send a single hit with session control to start the new session. mTracker.send(MapBuilder .createEvent("UX", "appstart", null, null) .set(Fields.SESSION_CONTROL, "start") .build() ); } }
// When true, dryRun flag prevents data from being processed with reports. GoogleAnalytics.getInstance(this).setDryRun(true);
Referensi
Bagian berikut memberikan contoh referensi tentang cara menetapkan dan mengirim data menggunakan SDK V3.
Mengirim Data menggunakan Maps di v3
Di V3, data dikirim menggunakan satu metode send()
yang menggunakan
Map
kolom dan nilai Google Analytics
sebagai argumen.
Class utilitas MapBuilder
disediakan untuk
menyederhanakan proses pembuatan hit:
// Sending a screenview in v3 using MapBuilder. Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y"); tracker.set(Fields.SCREEN_NAME, "Home Screen"); tracker.send(MapBuilder .createAppView() // Creates a Map of hit type 'AppView' (screenview). .set(Fields.customDimension(1), "Premium") // Set any additional fields for this hit. .build() // Build and return the Map to the send method. );
Class MapBuilder
dapat digunakan untuk membuat jenis hit yang didukung, seperti peristiwa:
// Sending an event in v3 using MapBuilder.createEvent() tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );
Pelajari lebih lanjut Mengirim Data di v3.
Menetapkan Data di Pelacak di v3
Nilai juga dapat ditetapkan langsung pada Tracker
menggunakan metode set()
.
Nilai yang ditetapkan secara langsung akan diterapkan ke semua hit berikutnya dari
Tracker
tersebut:
// Values set directly on a tracker apply to all subsequent hits. tracker.set(Fields.SCREEN_NAME, "Home Screen"); // This screenview hit will include the screen name "Home Screen". tracker.send(MapBuilder.createAppView().build()); // And so will this event hit. tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );
Untuk menghapus nilai yang ditetapkan pada Tracker
, tetapkan properti ke null
:
// Clear the previously-set screen name value. tracker.set(Fields.SCREEN_NAME, null); // Now this event hit will not include a screen name value. tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );