Bu kılavuzda, Android için Google Analytics SDK'sının V3 sürümüne nasıl geçileceği açıklanmaktadır.
Bir Bakışta: V3'teki Yenilikler
V3'teki API'ler, yerel ve web platformlarında daha tutarlı olacak şekilde yeniden düzenlendi. Tüm V2 kullanıcıları şu değişiklikleri dikkate almalıdır:
- İ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ıfına girerek arayüzde bazı değişiklikler yapıyor. - Yeni: Gönderilen verilerin raporlarda görünmesini engellemek 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:
Yeni Sürüme Geçme Yolları
Başlamak için mevcut uygulamanızdan v3'e bir yükseltme yolu seçin:
- EasyTracker: v1.x'ten v3'e
- EasyTracker: v2.x'ten v3'e
- Özel Uygulama: v1.x v3
- Özel Uygulama: v2.x sürümünden v3
EasyTracker: v1.x ile v3
EasyTracker sürüm 1.x kullanıcılarının, v3 sürümünü EasyTracker ile kullanmaya başlamak için v3 Başlangıç Kılavuzu'nu uygulamaları önerilir.
EasyTracker: v2.x ile v3
v2.x EasyTracker kullanıcıları, v3'e yükseltme işlemini tamamlamak için aşağıdaki adımları izlemelidir:
Context:
özelliğini sağlamak içinEasyTracker.getInstance()
numaralı telefona yapılan aramaları güncelleyin// v2 (Old) // EasyTracker.getInstance().activityStart(this);
// v3: EasyTracker.getInstance(this).activityStart(this);
EasyTracker
artıkTracker
alt sınıfını oluşturuyor.EasyTracker.getTracker()
çağrılarını kaldırın:// v2 (Old) Tracker v2Tracker = EasyTracker.getInstance().getTracker();
// v3 Tracker v3Tracker = EasyTracker.getInstance(this);
- Tüm
send<hit-type>
kolaylık yöntemlerini yenisend(Map<String, String> parameters)
yöntemi ile 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() );
3. adımda veri gönderme hakkında daha fazla bilgi edinin. ga_debug
EasyTracker parametresiniga_logLevel
ve aşağıdaki ayrıntı değerlerinden biriyle değiştirin: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 fazla 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 önlemek 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 - v3
EasyTracker
kullanmayan v1.x kullanıcıları, V3 Başlangıç Kılavuzu'na uymalı ve gerektiğinde Gelişmiş Yapılandırma Geliştirici Kılavuzu'na başvurmalıdır.
Özel Uygulama: v2.x sürümünden v3
EasyTracker
kullanmayan 2.x sürümü kullanıcıları, 3. sürüme yükseltme işlemini tamamlamak için aşağıdaki adımları uygulamalıdır:
- Tüm ##39;send<hit-type>' uygunluk yöntemlerini yeni
send(Map<String, String> parameters)
yöntemi ile 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,GoogleAnalytics.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'sı artık uygulama açıldığında otomatik olarak yeni bir oturum başlatmaz (EasyTracker kullanımı hariç). v2 özel uygulamasından bu davranışı korumak istiyorsanız kullanıcı uygulamayı başlattığında kendi oturum denetimi mantığınızı uygulamanız gerekir:
- (İsteğe bağlı) Test verilerinin üretim raporlarınız ile 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 kullanılarak verilerin nasıl ayarlanıp gönderileceğine dair referans örnekler sağlanmaktadır.
Haritalar v3'te Haritalar kullanarak veri gönderme
V3'te, veriler Google Analytics alanlarının ve değerlerinin Map
kadarını bağımsız değişken olarak 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ğlanı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ı, desteklenen isabet türlerinden herhangi birini (ör. etkinlikler) oluşturmak için kullanılabilir:
// Sending an event in v3 using MapBuilder.createEvent() tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() );
v3'te Veri Gönderme hakkında daha fazla bilgi edinin.
v3'te İzleyici'deki Verileri Ayarlama
Değerler, set()
yöntemi kullanılarak doğrudan bir Tracker
üzerinde de ayarlanabilir.
Doğrudan belirlenen değerler, Tracker
tarihinden 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
üzerinde ayarlanan bir değeri temizlemek için özelliği, null
değerine 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() );