Bu dokümanda, Android sürüm 3 için Google Analytics SDK'sının gelişmiş yapılandırma özelliklerinden bazılarına genel bir bakış sunulmaktadır.
Genel bakış
Android için Google Analytics SDK'sı, verileri ayarlayıp Google Analytics'e göndermek için bir Tracker
sınıfı ve uygulamanızın genel yapılandırma değerleri için arayüz görevi gören bir GoogleAnalytics
tekilliği sağlar.
Başlatma
Herhangi bir veri ölçülmeden önce, bir Context
ve Google Analytics mülk kimliği sağlayarak GoogleAnalytics
tekilliği aracılığıyla en az bir izleyiciyi başlatmanız gerekir:
// Initialize a tracker using a Google Analytics property ID. GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y")
Bu izleyici artık verileri ayarlamak ve Google Analytics'e göndermek için kullanılabilir.
Veri Ayarlama ve Gönderme
Veriler, izleyicide parametre-değer çiftlerinin haritaları ayarlanarak ve set
ile send
yöntemleriyle gönderilerek Google Analytics'e gönderilir:
/* * Send a screen view to Google Analytics by setting a map of parameter * values on the tracker and calling send. */ Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y"); HashMap<String, String> hitParameters = new HashMap<String, String>(); hitParameters.put(Fields.HIT_TYPE, "appview"); hitParameters.put(Fields.SCREEN_NAME, "Home Screen"); tracker.send(hitParameters);
MapBuilder
sınıfı, isabet oluşturma sürecini basitleştirir ve çoğu kullanım durumu için önerilir. Burada, aynı ekran görünümünü daha az kod satırıyla gönderebiliriz:
// Sending the same screen view hit using MapBuilder.createAppView() tracker.send(MapBuilder .createAppView() .set(Fields.SCREEN_NAME, "Home Screen") .build() );
Measurement Protocol Ve İşareti Söz Dizimi
Değerler, tek bir isabette, değeri bir Builder
üzerinde ayarlanarak veya sonraki tüm isabetlerde Measurement Protocol ve söz dizimi kullanılarak izleyici nesnesine ayarlanarak yapılabilir:
// Setting the content description field on a single hit using ampersand syntax. tracker.send(MapBuilder .createAppView() .set(Fields.SCREEN_NAME, "Home Screen") .build() );
Mevcut Measurement Protocol parametrelerinin tam listesi için Measurement Protocol Parametre Referansı'nı inceleyin.
Değerleri Birden Çok İsabete Uygulama
Doğrudan izleyicide ayarlanan tüm değerler aşağıdaki örnekte olduğu gibi korunur ve birden fazla isabete uygulanır:
// Set screen name on the tracker to be sent with all hits. tracker.set(Fields.SCREEN_NAME, "Home Screen"); // Send a screen view for "Home Screen" tracker.send(MapBuilder .createAppView() .build() ); // This event will also be sent with &cd=Home%20Screen. tracker.send(MapBuilder .createEvent("UX", "touch", "menuButton", null) .build() ); // Clear the screen name field when we're done. tracker.set(Fields.SCREEN_NAME, null);
Yalnızca birden fazla isabette korumak istediğiniz değerler doğrudan izleyicide ayarlanmalıdır. Aynı değer sonraki ekran görüntüleme ve etkinlik isabetlerine de uygulanabildiğinden, izleyiciye bir ekran adı ayarlamak mantıklıdır. Bununla birlikte, izleyicide isabet türü gibi bir alanın ayarlanması önerilmez. Çünkü bu alan, her isabetle değişebilir.
Birden Çok İzleyici Kullanma
Tek bir uygulamada birden fazla izleyici kullanılabilir. Bu da birden fazla mülke veri göndermek için faydalı olabilir:
Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1"); // Trackers may be named. By default, name is set to the property ID. Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("altTracker", "UA-XXXX-2"; t1.set(Fields.SCREEN_NAME, "Home Screen"); t2.set(Fields.SCREEN_NAME, getClass().toString()); // Send screen view to UA-XXXX-1. t1.send(MapBuilder .createAppView() .build() ); // Send screen view to UA-XXXX-2. t2.send(MapBuilder .createAppView() .build() );
Otomatik ekran ve yakalanmamış istisna ölçümü gibi otomatik ölçüm özellikleri, Google Analytics'e veri göndermek için yalnızca bir izleyici kullanır. Bu özellikleri kullanıyor ve diğer takip cihazlarını kullanarak veri göndermek istiyorsanız bunu manuel olarak yapmanız gerekir.
Varsayılan İzleyiciyi Kullanma
Google Analytics'te varsayılan bir izleyici bulunur. Başlatılan ilk izleyici varsayılan izleyici haline gelir ancak geçersiz kılınabilir:
// Tracker t1 becomes the default tracker because it is initialized first. Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1"); Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-2"); // Returns tracker t1. Tracker defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker(); // Hit sent to UA-XXXX-1. defaultTracker.send(MapBuilder .createAppView() .set(Fields.SCREEN_NAME, "Home Screen") .build() ); // Override the default tracker. GoogleAnalytics.getInstance(this).setDefaultTracker(t2); // Now this call returns tracker t2. defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker(); // Hit sent to UA-XXXX-2. defaultTracker.send(MapBuilder .createAppView() .set(Fields.SCREEN_NAME, getClass().toString()) .build() );
Örneklendirme
Google Analytics'e gönderilen isabetlerin sayısını sınırlamak için istemci tarafı örneklemeyi etkinleştirebilirsiniz. Uygulamanızın çok sayıda kullanıcısı varsa veya Google Analytics'e çok fazla veri gönderiyorsa örneklemeyi etkinleştirmek kesintisiz raporlamaya yardımcı olur.
Örneğin, EasyTracker ve XML üzerinden istemci tarafı örneklemeyi% 50 oranında etkinleştirmek için analytics.xml
dosyanızda aşağıdaki parametreyi kullanın:
<string name="ga_sampleFrequency">50.0</string>
Bir izleyici için istemci tarafı örneklemeyi programatik olarak etkinleştirmek isterseniz:
mTracker.set(Fields.SAMPLE_RATE, 50.0d);
Uygulama Düzeyinde Devre Dışı Bırakma
Google Analytics'i uygulamanın tamamında devre dışı bırakacak uygulama düzeyinde bir devre dışı bırakma işaretini etkinleştirebilirsiniz. Bu işaretin, uygulama her başlatıldığında ayarlanması gerektiğini ve varsayılan olarak NO
olacağını unutmayın.
Uygulama düzeyinde devre dışı bırakma ayarını edinmek için şunları kullanın:
boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();
Uygulama düzeyinde devre dışı bırakma işlemini ayarlamak için şunları kullanın:
GoogleAnalytics.getInstance(this).setAppOptOut(true);
Tipik bir uygulamada, bir uygulama SharedPreferences
metriğindeki değişikliği dinleyebilir ve Google Analytics kapsamı dışında kalma ayarını buna göre güncelleyebilir:
SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this); userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(TRACKING_PREF_KEY)) { GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false)); } else { // Any additional changed preference handling. } } });
Test ve Hata Ayıklama
Android için Google Analytics SDK'sı, test ve hata ayıklamayı kolaylaştıran araçlar sağlar.
Prova
SDK, ayarlandığında verilerin Google Analytics'e gönderilmesini engelleyen bir dryRun
işareti sağlar. dryRun
işareti, bir uygulamayı test ederken veya hata ayıklarken Google Analytics raporlarınızda test verilerinin görünmesini istemediğinizde ayarlanmalıdır.
Prova işaretini ayarlamak için:
// When dry run is set, hits will not be dispatched, but will still be logged as // though they were dispatched. GoogleAnalytics.getInstance(this).setDryRun(true);
Logger
Logger
arayüzü, SDK'dan gelen faydalı mesajların şu ayrıntı düzeylerinde işlenebilmesi için sağlanır: error
, warning
, info
ve verbose
.
SDK, standart bir Logger
uygulaması başlatır. Bu uygulama varsayılan olarak konsola yalnızca uyarı veya hata mesajları kaydeder. Bu mesajlar logcat'te kullanılabilir. Logger
öğesinin ayrıntı düzeyini ayarlamak için:
// Set the log level to verbose. GoogleAnalytics.getInstance(this).getLogger() .setLogLevel(LogLevel.VERBOSE);
Logger
özel uygulamaları da kullanılabilir:
// Provide a custom logger. GoogleAnalytics.getInstance(this).setLogger(new CustomLogger ());
Eksiksiz Örnek
Aşağıdaki örnekte, bir Google Analytics uygulamasını başlatmak ve tek ekran görüntülemesi göndermek için gereken kod gösterilmektedir.
package com.example.app; import com.google.analytics.tracking.android.GAServiceManager; import com.google.analytics.tracking.android.GoogleAnalytics; import com.google.analytics.tracking.android.Tracker; import android.app.Application; import android.content.SharedPreferences; import android.preference.PreferenceManager; /* * An advanced Google Analytics implementation may be initialized * in a subclass of Application. Note that this example assumes data * only needs to be sent to a single Google Analytics property ID. */ public class MyApp extends Application { private static GoogleAnalytics mGa; private static Tracker mTracker; /* * Google Analytics configuration values. */ // Placeholder property ID. private static final String GA_PROPERTY_ID = "UA-XXXX-Y"; // Dispatch period in seconds. private static final int GA_DISPATCH_PERIOD = 30; // Prevent hits from being sent to reports, i.e. during testing. private static final boolean GA_IS_DRY_RUN = false; // GA Logger verbosity. private static final LogLevel GA_LOG_VERBOSITY = LogLevel.INFO; // Key used to store a user's tracking preferences in SharedPreferences. private static final String TRACKING_PREF_KEY = "trackingPreference"; /* * Method to handle basic Google Analytics initialization. This call will not * block as all Google Analytics work occurs off the main thread. */ private void initializeGa() { mGa = GoogleAnalytics.getInstance(this); mTracker = mGa.getTracker(GA_PROPERTY_ID); // Set dispatch period. GAServiceManager.getInstance().setLocalDispatchPeriod(GA_DISPATCH_PERIOD); // Set dryRun flag. mGa.setDryRun(GA_IS_DRY_RUN); // Set Logger verbosity. mGa.getLogger().setLogLevel(GA_LOG_VERBOSITY); // Set the opt out flag when user updates a tracking preference. SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this); userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(TRACKING_PREF_KEY)) { GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false)); } } }); } @Override public void onCreate() { super.onCreate(); initializeGa(); } /* * Returns the Google Analytics tracker. */ public static Tracker getGaTracker() { return mTracker; } /* * Returns the Google Analytics instance. */ public static GoogleAnalytics getGaInstance() { return mGa; } }
Daha sonra, kullanıcıya ilk ekran gösterildiğinde bir ekran görüntülenme ölçülür:
package com.example.app import android.app.Activity /** * A simple Activity that sends a screen view to Google Analytics * when it is displayed to the user. */ public class HomeScreen extends Activity { private static final String SCREEN_LABEL = "Home Screen"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Fields set on a tracker persist for all hits, until they are // overridden or cleared by assignment to null. MyApp.getGaTracker().set(Fields.SCREEN_NAME, SCREEN_LABEL); } @Override public void onStart() { super.onStart(); // Send a screen view when the Activity is displayed to the user. MyApp.getGaTracker().send(MapBuilder .createAppView.build()); } }