Bu kılavuzda, Android için Google Analytics SDK'sının V3'e nasıl geçileceği açıklanmaktadır.
Bir Bakışta: V3'teki Yenilikler
V3'teki API'ler, yerel ve web platformları genelinde daha tutarlı olacak şekilde yeniden düzenlendi. Tüm V2 kullanıcıları şu değişikliklere dikkat etmelidir:
- İsabetler artık tek bir
send(Map<String, String> parameters)
yöntemi kullanılarak gönderiliyor. - Hata ayıklama modu,
Logger
ile değiştirildi - EasyTracker artık
Tracker
alt sınıflarını kullandığından arayüzde bazı değişiklikler olur. - Yeni: Dağıtılan verilerin raporlarda görünmesini önlemek için
dryRun
işareti eklendi.
Değişikliklerin tam listesi için Android Değişiklik Günlüğü'ne bakın.
Başlamadan önce
v3'e yükseltme işlemine başlamadan önce aşağıdakilere ihtiyacınız olacaktır:
- Universal Analytics özellikli bir mülk ve bir uygulama profili
- Android v3 için Google Analytics SDK'sı
Yeni Sürüme Geçiş Yolları
Başlamak için mevcut uygulamanızdan v3'e yükseltme yolu seçin:
- EasyTracker: v1.x'ten v3'e
- EasyTracker: v2.x'ten v3'e
- Özel Uygulama: v1.x'ten v3'e
- Özel Uygulama: v2.x'ten v3'e
EasyTracker: v1.x'ten v3'e
EasyTracker v1.x kullanıcılarının EasyTracker ile v3'ü kullanmaya başlamak için v3 Başlangıç Kılavuzu'nu izlemeleri önerilir.
EasyTracker: v2.x'ten v3'e
v2.x EasyTracker kullanıcıları, v3'e yükseltmeyi tamamlamak için aşağıdaki adımları uygulamalıdır:
Context:
sağlamak içinEasyTracker.getInstance()
çağrılarını güncelleyin// v2 (Old) // EasyTracker.getInstance().activityStart(this);
// v3: EasyTracker.getInstance(this).activityStart(this);
EasyTracker
artıkTracker
alt sınıflarını oluşturuyor --EasyTracker.getTracker()
öğesine yapılan çağrıları kaldırın:// v2 (Old) Tracker v2Tracker = EasyTracker.getInstance().getTracker();
// v3 Tracker v3Tracker = EasyTracker.getInstance(this);
send<hit-type>
için sunulan tüm kolaylık yöntemlerini yenisend(Map<String, String> parameters)
yöntemiyle değiştirin:// 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() );
v3'te veri gönderme hakkında daha fazla bilgi edinin.ga_debug
EasyTracker parametresiniga_logLevel
ile değiştirin ve şu ayrıntı değerlerinden birini girin: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>
Daha ayrıntılı bilgi için EasyTracker Parametre Referansı'na bakın.GoogleAnalytics.requestAppOptOut()
kullanımdan kaldırıldı, bunun yerineGoogleAnalytics.getAppOptOut()
kullanın:// 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();
- (İsteğe bağlı) Test verilerinin üretim raporlarınızda görünmesini engellemek için uygulamanızı test ederken
ga_dryRun
EasyTracker parametresini ekleyin vetrue
olarak ayarlayın:
<!-- 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>
Özel Uygulama: v1.x'ten v3'e
EasyTracker
kullanmayan v1.x kullanıcıları, gerektiğinde V3 Başlangıç Kılavuzu'na uymalı ve Gelişmiş Yapılandırma Geliştirici Kılavuzu'na başvurmalıdır.
Özel Uygulama: v2.x'ten v3'e
EasyTracker
kullanmayan v2.x kullanıcıları, v3'e yükseltme işlemini tamamlamak için aşağıdaki adımları uygulamalıdır:
- Tüm "send<hit-type>" kolaylığı yöntemlerini yeni
send(Map<String, String> parameters)
yöntemiyle değiştirin:// 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() );
GoogleAnalytics.setDebug()
çağrılarını kaldırın veGoogleAnalytics.getLogger().setLogLevel()
ile değiştirin:// V2 (Old) GoogleAnalytics.getInstance(this).setDebug(true);
// V3 GoogleAnalytics.getInstance(this) .getLogger() .setLogLevel(LogLevel.VERBOSE); // VERBOSE | INFO | DEBUG | WARNING
Logger hakkında daha fazla bilgi- v3 SDK, artık uygulama açıldığında otomatik olarak yeni oturum başlatmaz (EasyTracker'ın kullanıldığı durumlar hariç). Bu davranışı v2 özel uygulamasından korumak istiyorsanız bir kullanıcı uygulamayı başlattığında kendi oturum denetimi mantığınızı uygulamanız gerekir:
- (İsteğe bağlı) Test verilerinin üretim raporlarınızla işlenmesini önlemek için test sırasında
dryRun
işaretini ayarlayın:
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);
Referans
Aşağıdaki bölümlerde, V3 SDK'sını kullanarak verilerin nasıl ayarlanacağı ve gönderileceği ile ilgili referans örnekler verilmiştir.
v3'te Haritalar'ı Kullanarak Veri Gönderme
V3'te veriler, bağımsız değişken olarak bir Map
Google Analytics alanı ve değeri alan tek bir send()
yöntemi kullanılarak gönderilir. İsabet oluşturma sürecini basitleştirmek için bir MapBuilder
yardımcı programı sınıfı sağlanmıştır:
// 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. );
MapBuilder
sınıfı, etkinlikler gibi desteklenen isabet türlerinden herhangi birini oluşturmak için kullanılabilir:
// Sending an event in v3 using MapBuilder.createEvent() tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );
v3 sürümünde Veri gönderme hakkında daha fazla bilgi edinin.
v3'te İzleyicide Veri Ayarlama
Değerler, set()
yöntemi kullanılarak doğrudan bir Tracker
üzerinde de ayarlanabilir.
Doğrudan ayarlanan değerler, söz konusu Tracker
kaynağından gelen sonraki tüm isabetlere uygulanır:
// 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() );
Tracker
için ayarlanan bir değeri temizlemek için özelliği null
olarak ayarlayın:
// 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() );