Android için Google Analytics SDK'sı: v3'e taşıma

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:

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 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:

  1. Context: sağlamak için EasyTracker.getInstance() çağrılarını güncelleyin
    // v2 (Old)
    // EasyTracker.getInstance().activityStart(this);
    
    // v3:
    EasyTracker.getInstance(this).activityStart(this);
    
  2. EasyTracker artık Tracker 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);
    
  3. send<hit-type> için sunulan tüm kolaylık yöntemlerini yeni send(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.


  4. ga_debug EasyTracker parametresini ga_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.


  5. GoogleAnalytics.requestAppOptOut() kullanımdan kaldırıldı, bunun yerine GoogleAnalytics.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();
    
  6. (İ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 ve true olarak ayarlayın:
  7. <!-- 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:

  1. 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()
    );
    
  2. GoogleAnalytics.setDebug() çağrılarını kaldırın ve 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

  3. 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:
  4. 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()
        );
      }
    }
    
    
  5. (İsteğe bağlı) Test verilerinin üretim raporlarınızla işlenmesini önlemek için test sırasında dryRun işaretini ayarlayın:
  6. // 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()
);

v3'te Veri Ayarlama hakkında daha fazla bilgi