Android v3 (Eski) - Genel Bakış

Bu geliştirici kılavuzunda, Google Etiket Yöneticisi'nin bir mobil uygulamaya nasıl uygulanacağı açıklanmaktadır.

Giriş

Google Etiket Yöneticisi, geliştiricilerin, uygulama ikili programlarını yeniden oluşturup uygulama pazarlarına yeniden göndermek zorunda kalmadan Google Etiket Yöneticisi arayüzünü kullanarak mobil uygulamalarındaki yapılandırma değerlerini değiştirmesine olanak tanır.

Bu özellik, uygulamanızda gelecekte değiştirmeniz gerekebilecek yapılandırma değerlerini veya işaretlerini yönetmek için faydalıdır. Örneğin:

  • Çeşitli kullanıcı arayüzü ayarları ve görüntüleme dizeleri
  • Uygulamanızda yayınlanan reklamların boyutları, konumları veya türleri
  • Oyun ayarları

Yapılandırma değerleri, çalışma zamanında kurallar kullanılarak da değerlendirilebilir. Böylece, aşağıdaki gibi dinamik yapılandırmalar etkinleştirilir:

  • Reklam banner boyutunu belirlemek için ekran boyutunu kullanma
  • Kullanıcı arayüzü öğelerini yapılandırmak için dil ve konum kullanma

Google TagManager, uygulamalarda izleme etiketlerinin ve piksellerin dinamik olarak uygulanmasını da sağlar. Geliştiriciler önemli etkinlikleri bir veri katmanına aktarabilir ve daha sonra hangi izleme etiketlerinin veya piksellerinin tetikleneceğine karar verebilirler. TagManager şu anda aşağıdaki etiketleri desteklemektedir:

  • Google Mobil Uygulama Analizi
  • Özel İşlev Çağrısı etiketi

Başlamadan önce

Bu başlangıç kılavuzunu kullanmadan önce aşağıdakilere ihtiyacınız olacaktır:

Google Etiket Yöneticisi'ni kullanmaya yeni başladıysanız bu kılavuza devam etmeden önce kapsayıcılar, makrolar ve kurallar hakkında daha fazla bilgi edinmenizi öneririz (Yardım Merkezi).

Başlayın

Bu bölüm, geliştiricilere tipik bir Etiket Yöneticisi iş akışı boyunca rehberlik edecektir:

  1. Google Etiket Yöneticisi SDK'sını projenize ekleme
  2. Varsayılan Kapsayıcı Değerlerini Ayarlama
  3. Kapsayıcıyı açın
  4. Kapsayıcıdan Yapılandırma Değerlerini Alma
  5. Etkinlikleri Datalayer'a aktarma
  6. Kapsayıcıyı Önizleyin ve Yayınlayın

1. Google Etiket Yöneticisi SDK'sını Projenize Ekleme

Google Etiket Yöneticisi SDK'sını kullanmadan önce, SDK paketinin sıkıştırmasını açmanız, kitaplığı projenizin derleme yoluna eklemeniz ve AndroidManifest.xml dosyanıza izinler eklemeniz gerekir.

Öncelikle, Google Etiket Yöneticisi kitaplığını projenizin /libs klasörüne ekleyin.

Ardından, AndroidManifest.xml dosyanızı aşağıdaki izinleri kullanacak şekilde güncelleyin:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

2. Projenize Varsayılan Kapsayıcı Dosyası Ekleme

Google Etiket Yöneticisi, uygulamanız ilk kez çalıştırıldığında varsayılan bir kapsayıcı kullanır. Uygulama, ağ üzerinden yeni bir kapsayıcı alana kadar varsayılan kapsayıcı kullanılır.

Varsayılan kapsayıcı ikili programını indirmek ve uygulamanıza eklemek için aşağıdaki adımları uygulayın:

  1. Google Etiket Yöneticisi web arayüzünde oturum açın.
  2. İndirmek istediğiniz kapsayıcının Sürüm'ünü seçin.
  3. Kapsayıcı ikili programını almak için İndir düğmesini tıklayın.
  4. İkili dosyayı aşağıdaki yola ekleyin: <project-root>/assets/tagmanager/

Varsayılan dosya adı, kapsayıcı kimliği olmalıdır (örneğin, GTM-1234). İkili dosyayı indirdikten sonra doğru adlandırma kuralını izlemek için dosya adından sürüm son ekini kaldırdığınızdan emin olun.

İkili dosyanın kullanılması önerilir ancak kapsayıcınız kural veya etiket içermiyorsa basit bir JSON dosyası kullanmayı da seçebilirsiniz. Dosya, Android projenizin yeni bir /assets/tagmanager klasöründe bulunmalı ve şu adlandırma kuralına uygun olmalıdır: <Container_ID>.json. Örneğin, kapsayıcı kimliğiniz GTM-1234 ise varsayılan kapsayıcı değerlerinizi /assets/tagmanager/GTM-1234.json öğesine eklemeniz gerekir.

3. Kapsayıcı Açma

Bir container'dan değer almadan önce uygulamanızın container'ı açması gerekir. Bir container açıldığında, container diskten yüklenir (varsa) veya (gerekirse) ağdan istenir.

Android'de kapsayıcı açmanın en kolay yolu, aşağıdaki örnekte olduğu gibi ContainerOpener.openContainer(..., Notifier notifier) kullanmaktır:

import com.google.tagmanager.Container;
import com.google.tagmanager.ContainerOpener;
import com.google.tagmanager.ContainerOpener.OpenType;
import com.google.tagmanager.TagManager;

import android.app.Activity;
import android.os.Bundle;

public class RacingGame {

  // Add your public container ID.
  private static final String CONTAINER_ID = "GTM-YYYY";

  volatile private Container mContainer;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TagManager mTagManager = TagManager.getInstance(this);

    // The container is returned to containerFuture when available.
    ContainerOpener.openContainer(
        mTagManager,                            // TagManager instance.
        CONTAINER_ID,                           // Tag Manager Container ID.
        OpenType.PREFER_NON_DEFAULT,            // Prefer not to get the default container, but stale is OK.
        null,                                   // Time to wait for saved container to load (ms). Default is 2000ms.
        new ContainerOpener.Notifier() {        // Called when container loads.
          @Override
          public void containerAvailable(Container container) {
            // Handle assignment in callback to avoid blocking main thread.
            mContainer = container;
          }
        }
    );
    // Rest of your onCreate code.
  }
}

Bu örnekte ContainerOpener.openContainer(..., Notifier notifier), yerel depolama alanından kayıtlı bir container istemek için kullanılır. containerAvailable geri çağırmasında mContainer atamasını yaparak ana iş parçacığının engellenmediğinden emin oluruz. Kayıtlı kapsayıcı 12 saatten eskiyse çağrı, ağ üzerinden yeni bir kapsayıcıyı eşzamansız olarak almak için bir istek de planlar.

Bu örnek uygulama, ContainerOpener kolaylık sınıfını kullanarak bir kapsayıcıdan değer açmanın ve almanın en basit yolunu temsil eder. Daha gelişmiş uygulama seçenekleri için Gelişmiş Yapılandırma başlıklı makaleye bakın.

4. Kapsayıcıdan Yapılandırma Değerlerini Alma

Container açıldıktan sonra yapılandırma değerleri, get<type>Value() yöntemleri kullanılarak alınabilir:

// Retrieving a configuration value from a Tag Manager Container.

// Get the configuration value by key.
String title = mContainer.getStringValue("title_string");

Var olmayan bir anahtarla yapılan istekler, istenen türe uygun bir varsayılan değer döndürür:

// Empty keys will return a default value depending on the type requested.

// Key does not exist. An empty string is returned.
string subtitle = container.getStringValue("Non-existent-key");
subtitle.equals(""); // Evaluates to true.

5. Değerleri Veri Katmanı'na Aktarma

DataKatmanlar, bir kapsayıcıdaki Etiket Yöneticisi makroları ve etiketleri tarafından kullanılabilir hale getirmek üzere uygulamanızla ilgili çalışma zamanı bilgilerinin (ör. dokunma etkinlikleri veya ekran görüntülenmeleri) kullanılmasını sağlayan bir haritadır.

Örneğin, ekran görüntülenmeleriyle ilgili bilgileri DataKatmanlar haritasına aktararak, Etiket Yöneticisi web arayüzünde dönüşüm piksellerini tetikleyecek ve bu ekran görüntülemelere yanıt olarak gelen çağrıları uygulamanıza sabit kodlamaya gerek kalmadan izlemelerini sağlayacak etiketler oluşturabilirsiniz.

Etkinlikler, push() ve DataLayer.mapOf() yardımcı yöntemi kullanılarak DataKatmanlar'a aktarılır:

//
// MainActivity.java
// Pushing an openScreen event with a screen name into the data layer.
//

import com.google.tagmanager.TagManager;
import com.google.tagmanager.DataLayer;

import android.app.Activity;
import android.os.Bundle;

public MainActivity extends Activity {

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

  }

  // This screen becomes visible when Activity.onStart() is called.
  public void onStart() {
    super.onStart();

    // The container should have already been opened, otherwise events pushed to
    // the DataLayer will not fire tags in that container.
    DataLayer dataLayer = TagManager.getInstance(this).getDataLayer();
    dataLayer.push(DataLayer.mapOf("event",
                                   "openScreen",      // The event type. This value should be used consistently for similar event types.
                                   "screenName",      // Writes a key "screenName" to the dataLayer map.
                                   "Home Screen")     // Writes a value "Home Screen" for the "screenName" key.
    );
  }
  // Rest of the Activity implementation
}

Web arayüzünde artık her ekran görüntülemede tetiklenecek etiketler (ör. Google Analytics etiketleri) oluşturmak için şu kuralı oluşturabilirsiniz: şuna eşittir: "openScreen". Ekran adını bu etiketlerden birine iletmek için, veri katmanında "screenName" anahtarına başvuruda bulunan bir veri katmanı makrosu oluşturun. Ayrıca, şuna eşittir: "openScreen" && şuna eşittir: "ConfirmationScreen"'a eşit olan bir kural oluşturarak yalnızca belirli ekran görüntülemelerinde tetiklenecek bir etiket (Google Ads dönüşüm pikseli gibi) oluşturabilirsiniz.

6. Kapsayıcıyı Önizleme ve Yayınlama

Makro değerleri her zaman yayınlanan geçerli sürüme karşılık gelir. Bir kapsayıcının en son sürümünü yayınlamadan önce, taslak kapsayıcınızı önizleyebilirsiniz.

Bir kapsayıcıyı önizlemek için, önizlemek istediğiniz kapsayıcı sürümünü ve ardından Preview öğesini seçerek Google Etiket Yöneticisi web arayüzünde bir önizleme URL'si oluşturun. Daha sonraki adımlarda ihtiyaç duyacağınızdan bu önizleme URL'sini kullanmaya devam edebilirsiniz.

Önizleme URL&#39;leri, Etiket Yöneticisi web arayüzünün önizleme penceresinde kullanılabilir
Şekil 1: Etiket Yöneticisi web arayüzünden önizleme URL'si alma.

Sonra, aşağıdaki Etkinliği uygulamanızın AndroidManifest.xml dosyasına ekleyin:

<!-- Google Tag Manager Preview Activity -->
<activity
  android:name="com.google.tagmanager.PreviewActivity"
  android:label="@string/app_name"
  android:noHistory="true" >  <!-- Optional, removes the PreviewActivity from activity stack. -->
  <intent-filter>
    <data android:scheme="tagmanager.c.application_package_name" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE"/>
  </intent-filter>
</activity>
  

Taslak kapsayıcıyı uygulamanızda önizlemek için bağlantıyı bir emülatörde veya fiziksel cihazda açın.

Taslak yapılandırma değerlerinizi uygulamanızın kullanımına sunmaya hazır olduğunuzda kapsayıcıyı yayınlayın.

Gelişmiş Yapılandırma

Mobil Cihazlar için Google Etiket Yöneticisi'nde, kuralları kullanarak çalışma zamanı koşullarına dayalı değerler seçmenize, kapsayıcıyı manuel olarak yenilemenize ve kapsayıcı açmak için ek seçenekler elde etmenize olanak tanıyan birçok gelişmiş yapılandırma seçeneği bulunur. Aşağıdaki bölümlerde en yaygın gelişmiş yapılandırmalardan birkaçı özetlenmektedir.

Kapsayıcıları Açmak İçin Gelişmiş Seçenekler

Google Etiket Yöneticisi SDK'sı, yükleme işlemi üzerinde daha fazla kontrol sahibi olmanızı sağlayabilecek kapsayıcıları açmak için çeşitli yöntemler sunar:

TagManager.openContainer()

TagManager.openContainer(), container açmak için en düşük düzey ve en esnek API'dir. Varsayılan container ile hemen döndürülür ve kayıtlı kapsayıcı yoksa ya da kayıtlı kapsayıcı yeni değilse (> 12 saatten eskiyse) diskten veya ağdan eşzamansız olarak bir container yükler.

mContainer = tagManager.openContainer(CONTAINER_ID, new Container.Callback() {

  // Called when a refresh is about to begin for the given refresh type.
  @Override
  public void containerRefreshBegin(Container container, RefreshType refreshType) {
    // Notify UI that the Container refresh is beginning.
   }

  // Called when a successful refresh occurred for the given refresh type.
  @Override
  public void containerRefreshSuccess(Container container, RefreshType refreshType]) {
    // Notify UI that Container is ready.
  }

  // Called when a refresh failed for the given refresh type.
  @Override
  public void containerRefreshFailure(Container container,
                                      RefreshType refreshType,
                                      RefreshFailure refreshFailure) {
    // Notify UI that the Container refresh has failed.
  }

Yükleme işlemi sırasında TagManager.openContainer(), yükleme isteğinin ne zaman başladığını, işlemin başarısız olup olmadığını, neden başarılı veya başarısız olduğunu ve neden başarılı olup olmadığını ve container'ın diskten veya ağdan yüklenip yüklenmediğini öğrenebilmesi için yükleme işlemi boyunca birkaç yaşam döngüsü geri çağırması yayınlar.

Uygulamanızın varsayılan değerleri kullanması kabul edilebilir olmadığı sürece kayıtlı bir kapsayıcının veya ağ kapsayıcısının ne zaman yüklendiğini öğrenmek için bu geri çağırmaları kullanmanız gerekir. Uygulama ilk kez çalıştırılıyorsa ve ağ bağlantısı yoksa kayıtlı bir kapsayıcıyı veya ağ kapsayıcısını yükleyemeyeceğinizi unutmayın.

TagManager.openContainer(), aşağıdaki enum değerlerini bu geri çağırmalara bağımsız değişken olarak aktarır:

RefreshType

DeğerAçıklama
Container.Callback.SAVED Yenileme isteği, yerel olarak kaydedilmiş bir kapsayıcı yüklüyor.
Container.Callback.NETWORK Yenileme isteği, ağ üzerinden bir kapsayıcı yüklüyor.

RefreshFailure

DeğerAçıklama
Container.Callback.NO_SAVED_CONTAINER Kullanılabilir kayıtlı kapsayıcı yok.
Container.Callback.IO_ERROR Bir G/Ç hatası, kapsayıcının yenilenmesini engelledi.
Container.Callback.NO_NETWORK Kullanılabilir ağ bağlantısı yok.
Container.Callback.NETWORK_ERROR Bir ağ hatası oluştu.
Container.Callback.SERVER_ERROR Sunucuda bir hata oluştu.
Container.Callback.UNKNOWN_ERROR Kategorize edilemeyen bir hata oluştu.

Varsayılan Olmayan ve Yeni Kapsayıcıları Açma Yöntemleri

ContainerOpener, TagManager.openContainer() öğesini sarmalar ve kapsayıcıları açmak için iki kolay yöntem sunar: ContainerOpener.openContainer(..., Notifier notifier) ve ContainerOpener.openContainer(..., Long timeoutInMillis).

Bu yöntemlerin her biri, varsayılan olmayan veya yeni bir kapsayıcı isteyen bir numaralandırma alır.

Çoğu uygulama için OpenType.PREFER_NON_DEFAULT önerilir ve bu kapsayıcı 12 saatten eski olsa bile belirli bir zaman aşımı süresi içinde (disk veya ağdan) ilk kullanılabilir olmayan ilk kapsayıcıyı döndürmeye çalışır. Eski ve kaydedilmiş bir kapsayıcı döndürürse yeni bir tane için de eşzamansız ağ isteğinde bulunur. OpenType.PREFER_NON_DEFAULT kullanılırken başka bir kapsayıcı yoksa veya zaman aşımı süresi aşılırsa varsayılan bir kapsayıcı döndürülür.

OpenType.PREFER_FRESH, belirtilen zaman aşımı süresi içinde diskten veya ağdan yeni bir container döndürmeye çalışır. Bir ağ bağlantısı yoksa ve/veya zaman aşımı süresi aşılırsa kayıtlı bir kapsayıcıyı döndürür.

Uzun istek süresinin kullanıcı deneyimini belirgin şekilde etkileyebileceği yerlerde (ör. kullanıcı arayüzü işaretleri veya görüntüleme dizeleri) OpenType.PREFER_FRESH özelliğinin kullanılması önerilmez. Ayrıca, istediğiniz zaman bir ağ kapsayıcısı isteğini zorlamak için Container.refresh() kullanabilirsiniz.

Bu kolay kullanım yöntemlerinin her ikisi de engel teşkil etmez. ContainerOpener.openContainer(..., Long timeoutInMillis), ContainerOpener.ContainerFuture nesnesi döndürür. Bu nesnenin get yöntemi, yüklenir yüklenmez bir Container döndürür (ancak bu işlem tamamlanana kadar engellenir). ContainerOpener.openContainer(..., Notifier notifier) yöntemi, container kullanılabilir olduğunda çağrılan tek bir geri çağırma yapar. Bu geri çağırma, ana iş parçacığının engellenmesini önlemek için kullanılabilir. Her iki yöntemde de varsayılan zaman aşımı süresi 2000 milisaniyedir.

Kuralları Kullanarak Makroları Çalışma Zamanında Değerlendirme

Kapsayıcılar, çalışma zamanında değerleri kuralları kullanarak değerlendirebilir. Kurallar cihaz dili, platform veya diğer makro değerleri gibi kriterlere dayanabilir. Örneğin, çalışma zamanında cihazın diline bağlı olarak yerelleştirilmiş bir görüntüleme dizesi seçmek için kurallar kullanılabilir. Bu ayar, aşağıdaki kural kullanılarak yapılandırılabilir:

Çalışma zamanında cihaz diline göre görüntüleme dizelerini seçmek için bir kural kullanılır: Dil es&#39;e eşittir. Bu kural, önceden tanımlanmış dil makrosu ve iki karakterli ISO 639-1 dil kodu kullanır.
Şekil 1: Yalnızca İspanyolca dilini kullanacak şekilde yapılandırılmış cihazlarda değer toplama makrosu etkinleştirmek için bir kural ekleme.

Daha sonra, her bir dil için değer toplama makroları oluşturabilir ve uygun dil kodunu ekleyerek bu kuralı her bir makroya ekleyebilirsiniz. Bu kapsayıcı yayınlandığında uygulamanız, çalışma zamanında kullanıcının cihazının diline bağlı olarak yerelleştirilmiş görüntüleme dizelerini gösterebilir.

Varsayılan kapsayıcınız için kurallar gerekiyorsa varsayılan kapsayıcınız olarak ikili kapsayıcı dosyası kullanmanız gerektiğini unutmayın.

Kuralları yapılandırma hakkında daha fazla bilgi edinin (Yardım Merkezi).

Varsayılan İkili Kapsayıcı Dosyaları

Kurallar gerektiren varsayılan kapsayıcılar, varsayılan kapsayıcı olarak JSON dosyası yerine bir ikili program kapsayıcı dosyası kullanmalıdır. İkili kapsayıcılar, çalışma zamanında makro değerlerini Google Etiket Yöneticisi kurallarıyla belirleme desteği sunar. JSON dosyaları ise bunu desteklemez.

İkili program kapsayıcı dosyaları, Google Etiket Yöneticisi web arayüzünden indirilebilir. Bu dosyalar, projenizin /assets/tagmanager/ klasörüne eklenmeli ve şu kalıbı izlemelidir: /assets/tagmanager/GTM-XXXX. Dosya adı, kapsayıcı kimliğinizi temsil eder.

JSON dosyasının yanı sıra ikili kapsayıcı dosyasının bulunduğu durumlarda SDK, ikili kapsayıcı dosyasını varsayılan kapsayıcı olarak kullanır.

İşlev Çağrısı Makrolarını Kullanma

İşlev Çağrısı Makroları, uygulamanızda belirtilen bir işlevin döndürdüğü değere ayarlanan makrolardır. İşlev Çağrısı Makroları, çalışma zamanı değerlerini Google Etiket Yöneticisi kurallarınızla birleştirmek için kullanılabilir. Örneğin, bir cihazın yapılandırılan diline ve para birimine göre kullanıcıya çalışma zamanında hangi fiyatın gösterileceğini belirlemek için kullanılabilir.

İşlev çağrısı makrosu yapılandırmak için:

  1. Google Etiket Yöneticisi web arayüzünde işlev çağrısı makrosunu tanımlayın. Bağımsız değişkenler, isteğe bağlı olarak anahtar/değer çiftleri olarak yapılandırılabilir.
  2. Container.registerFunctionCallMacroHandler() ve Google Etiket Yöneticisi web arayüzünde yapılandırdığınız işlev adını kullanarak getValue() yöntemini geçersiz kılarak uygulamanıza bir FunctionCallMacroHandler kaydedin:
    /**
     * Registers a function call macro handler.
     *
     * @param functionName The function name field, as defined in the Google Tag
     *     Manager web interface.
     */
    mContainer.registerFunctionCallMacroHandler(functionName, new FunctionCallMacroHandler() {
    
      /**
       * This code will execute when any custom macro's rule(s) evaluate to true.
       * The code should check the functionName and process accordingly.
       *
       * @param functionName Corresponds to the function name field defined
       *     in the Google Tag Manager web interface.
       * @param parameters An optional map of parameters
       *     as defined in the Google Tag Manager web interface.
       */
      @Override
      public Object getValue(String functionName, Map<String, Object> parameters)) {
    
        if (functionName.equals("myConfiguredFunctionName")) {
          // Process and return the calculated value of this macro accordingly.
          return macro_value
        }
        return null;
      }
    });
    

İşlev Çağrısı Etiketlerini Kullanma

İşlev Çağrı Etiketleri, veri katmanına bir etkinlik aktarıldığında ve etiket kuralları true olarak değerlendirildiğinde, önceden kaydedilmiş işlevlerin yürütülmesini sağlar.

İşlev çağrısı etiketini yapılandırmak için:

  1. Google Etiket Yöneticisi web arayüzünde işlev çağrısı etiketini tanımlayın. Bağımsız değişkenler, isteğe bağlı olarak anahtar/değer çiftleri olarak yapılandırılabilir.
  2. Container.registerFunctionCallTagHandler() kullanarak uygulamanıza bir işlev çağrısı etiketi işleyici kaydedin:
    /**
     * Register a function call tag handler.
     *
     * @param functionName The function name, which corresponds to the function name field
     *     Google Tag Manager web interface.
     */
    mContainer.registerFunctionCallTagHandler(functionName, new FunctionCallTagHandler() {
    
      /**
       * This method will be called when any custom tag's rule(s) evaluates to true.
       * The code should check the functionName and process accordingly.
       *
       * @param functionName The functionName passed to the functionCallTagHandler.
       * @param parameters An optional map of parameters as defined in the Google
       *     Tag Manager web interface.
       */
      @Override
      public void execute(String functionName, Map<String, Object> parameters) {
        if (functionName.equals("myConfiguredFunctionName")) {
          // Process accordingly.
        }
      }
    });
    

Özel Yenileme Dönemi Ayarlama

Mevcut kapsayıcı yaşı 12 saati aşarsa Google Etiket Yöneticisi SDK'sı yeni bir kapsayıcı almaya çalışır. Özel bir kapsayıcı yenileme süresi ayarlamak için aşağıdaki örnekte olduğu gibi Timer işlevini kullanın:

timer.scheduleTask(new TimerTask() {
  @Override
  public void run() {
    mContainer.refresh();
  }
}, delay, <new_period_in milliseconds>);

Günlükçü ile hata ayıklama

Google Etiket Yöneticisi SDK'sı varsayılan olarak hataları ve uyarıları günlüklere yazdırır. Daha ayrıntılı günlük kaydının etkinleştirilmesi, hata ayıklama açısından faydalı olabilir ve aşağıdaki örnekte olduğu gibi, TagManager.setLogger ile kendi Logger yönteminizi uygulayarak bunu yapabilirsiniz:

TagManager tagManager = TagManager.getInstance(this);
tagManager.setLogger(new Logger() {

  final String TAG = "myGtmLogger";

  // Log output with verbosity level of DEBUG.
  @Override
  public void d(String arg0) {
    Log.d(TAG, arg0);
  }

  // Log exceptions when provided.
  @Override
  public void d(String arg0, Throwable arg1) {
    Log.d(TAG, arg0);
    arg1.printStackTrace();
  }

  // Rest of the unimplemented Logger methods.

});

Alternatif olarak, aşağıdaki örnekte olduğu gibi, TagManager.getLogger().setLogLevel(LogLevel) kullanarak mevcut Logger'ın LogLevel değerini de ayarlayabilirsiniz:

// Change the LogLevel to INFO to enable logging at INFO and higher levels.
TagManager tagManager = TagManager.getInstance(this);
tagManager.getLogger().setLogLevel(LogLevel.INFO);