Android v3 (Eski) - Genel Bakış

ziyaret edin.

Bu geliştirici kılavuzunda, Google Etiket Yöneticisi'nin mobil uygulamadır.

Giriş

Google Etiket Yöneticisi, geliştiricilerin yapılandırmayı değiştirmesine olanak tanır. değerlerini Google Etiket Yöneticisi'ni kullanarak mobil uygulamalarında arayüzü yeniden derleyip uygulamaya yeniden göndermek zorunda kalmadan daha fazla bilgi edineceksiniz.

Bu özellik, yapılandırma değerlerini yönetirken veya daha sonra değiştirmeniz gerekebilecek işaretler şunları içerir:

  • Ç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. Aşağıdaki gibi dinamik yapılandırmaları etkinleştirebilirsiniz:

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

Google Etiket Yöneticisi, izleme etiketlerinin dinamik olarak uygulanmasını da ve pikseller kullanır. Geliştiriciler önemli etkinlikleri bir veriye aktarabilir katmanını ekleyebilir ve daha sonra hangi izleme etiketlerinin veya piksellerinin tetikleneceğine karar verebilirsiniz. Etiket Yöneticisi, ş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'nde yeniyseniz şunları öneririz: bu kılavuza devam etmeden önce kapsayıcılar, makrolar ve kurallar (Yardım Merkezi) hakkında daha fazla bilgi edinin.

Başlarken

Bu bölüm, geliştiricilere tipik bir Etiket Yöneticisi iş akışı konusunda yol gösterecektir:

  1. Projenize Google Etiket Yöneticisi SDK'sını ekleyin
  2. Varsayılan Kapsayıcı Değerlerini Ayarlama
  3. Kapsayıcıyı açın
  4. Kapsayıcıdan Yapılandırma Değerleri Alma
  5. Etkinlikleri Datalayer'a Aktarma
  6. Önizleme ve Kapsayıcıyı yayınlayın

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

Google Etiket Yöneticisi SDK'sını kullanmadan önce, SDK paketini açmanız gerekir. kitaplığı projenizin derleme yoluna ekleyip izin ekleme AndroidManifest.xml dosyanıza ekleyin.

İlk olarak, Google Etiket Yöneticisi kitaplığını şuranın /libs klasörüne ekleyin: akılda kalıcı bir yolunu sunar.

Sonra, AndroidManifest.xml dosyanızı aşağıdaki gibi güncelleyin: izinler:

<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. Varsayılan uygulama, yeni bir kapsayıcı alana kadar kullanılır. ağ.

Varsayılan container ikili programını indirip 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. Container ikili programını almak için İndir düğmesini tıklayın.
  4. İkili program dosyasını şu yol: <project-root>/assets/tagmanager/

Varsayılan dosya adı, kapsayıcı kimliği olmalıdır (örneğin GTM-1234). Planınızı dosyayı indirdiyseniz sürüm sonekini dosya adından kaldırdığınızdan emin olun. inceleyin.

İkili programın kullanılması önerilse de, kapsayıcınız kural veya etiket içermiyorsa basit bir iletişim planı JSON dosyası olarak kaydedin. Dosya, yeni bir /assets/tagmanager konumunda olmalıdır. veya şu adlandırma kuralına uymalı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.

3. Kapsayıcı Açma

Bir kapsayıcıdan değer almadan önce uygulamanızın açılması gerekir yerleştirilmelidir. Bir kapsayıcı açıldığında diskten (varsa) yüklenir veya isteği ağdan ister (gerekirse).

Android'de bir kapsayıcı açmanın en kolay yolu ContainerOpener.openContainer(..., Notifier notifier), aşağıdaki örnekte gösterildiği gibi:

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 isteyin. Görevi, containerAvailable geri çağırmasında mContainer varsa ana ileti dizisi engellenmedi. Kaydedilen kapsayıcı 12 saatten eskiyse çağrısı, eşzamansız olarak yeni bir container'ı almak için bir istek de planlar. kullanabilirsiniz.

Bu örnek uygulama, GCLID'yi açıp açmanın ve almanın en basit yolunu gösterir değerleri ContainerOpener kolaylık sınıfını kullanarak bir kapsayıcıdan alınır. Daha gelişmiş uygulama seçenekleri için Gelişmiş Yapılandırma başlıklı makaleyi inceleyin.

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

Kapsayıcı açıldıktan sonra yapılandırma değerleri get<type>Value() yöntemleri:

// 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 uygun varsayılan bir değer döndürür istenen türe göre:

// 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. Veri Katmanı'na Değer Aktarma

DataKatmanlar, uygulamanız hakkında çalışma zamanı bilgilerini sağlayan bir haritadır. Örneğin, etkinliklerinizin veya ekran görüntülemelerinizin, anlamına gelir.

Örneğin, ekran görüntülenmeleriyle ilgili bilgileri Datalayer haritasına aktararak dönüşüm piksellerini tetikleyecek şekilde Etiket Yöneticisi web arayüzünde Böylece, ekran görüntülemelerine yanıt olarak telefon aramalarını kodlayıp uygulamanıza eklemeniz gerekir.

Etkinlikler, push() ve DataLayer.mapOf() yardımcı yöntemi:

//
// 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 etiketler (ör. Google Analytics etiketleri) oluşturabilirsiniz. şu kuralı oluşturarak her ekran görüntülenme için etkinleştirebilirsiniz: eşittir "openScreen". Ekran adını aktarmak için eklemek isterseniz, "screenName" öğesine referans veren bir veri katmanı makrosu oluşturun anahtarını kullanın. Dilerseniz (Google Ads dönüşüm pikseli gibi) yalnızca belirli ekran görüntülemelerinde tetiklenmesini etkinliğinin "openScreen" olduğu bir kural oluşturuyor &amp;&amp; eşittir "ConfirmationScreen".

6. Önizleniyor ve Kapsayıcı Yayınlama

Makro değerleri her zaman mevcut yayınlanan sürüme karşılık gelir. Bir kapsayıcının en son sürümünü yayınlamadan önce önizlemeyi hazırlayabilirsiniz.

Bir kapsayıcıyı önizlemek için Google Kapsayıcının sürümünü seçerek Etiket Yöneticisi web arayüzü istediğiniz önizlemeyi seçin ve ardından Preview düğmesini seçin. Devam et bu önizleme URL'sini ekleyin.

Önizleme URL&#39;leri, Etiketin önizleme penceresinde mevcuttur
           Yönetici web arayüzü
Şekil 1: Etiket Yöneticisi web arayüzü

Daha sonra, aşağıdaki Etkinliği uygulamanızın AndroidManifest.xml dosyası:

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

Şu işlemleri yapmak için bağlantıyı bir emülatörde veya fiziksel cihazda açın: taslak kapsayıcıyı uygulamanızda önizleyin.

Taslak yapılandırma değerlerinizi web sitesi uygulama, kapsayıcıyı yayınlayın.

Gelişmiş Yapılandırma

Mobil Cihazlar için Google Etiket Yöneticisi'nde bir dizi gelişmiş yapılandırma kullanarak çalışma zamanı koşullarına göre değer belirlemenizi sağlayan kapsayıcıyı manuel olarak yenileyebilir, açılış sayfası için ek seçeneklere ulaşabilirsiniz. container'lar. Aşağıdaki bölümlerde, en yaygın ve gelişmiş yapılandırmanın üç yolu vardır.

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

Google Etiket Yöneticisi SDK'sı, açılış sayfası için birkaç yöntem sunar. yükleme süreci üzerinde daha fazla kontrol sahibi olmanızı sağlayan kapsayıcılar:

TagManager.openContainer()

TagManager.openContainer(), bir açılış sayfası için en düşük düzey ve en esnek API'dir. anlamına gelir. Varsayılan bir container ile hemen geri döner ve ayrıca, kaydedilmemiş bir kapsayıcıyı diskten veya ağdan eşzamansız olarak yükler veya kayıtlı kapsayıcı yeni değilse (12 saatten eski)

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 boyunca TagManager.openContainer() sorun birkaç yaşam döngüsü geri çağırması yapar. Böylece kodunuz, yükleme isteğinin başladığı, başarısız veya başarılı olup olmadığı ve kapsayıcının diskten veya ağdan yüklenmesi gerekir.

Uygulamanızın varsayılan değerleri kullanması kabul edilmiyorsa bir ağın ne zaman kaydedildiğini veya ağın kapsayıcı yüklendi. Önceden kaydedilmiş bir veya yanlış dosyayı bu uygulama ilk kez çalıştırılıyorsa ve ağ bağlantısı.

TagManager.openContainer() şu enum paslarını geçer değerleri, bu geri çağırma işlevleri için bağımsız değişken olarak kullanı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() ile bitiriyor ve kapsayıcıları açmak için iki kolaylık yöntemi sunar: ContainerOpener.openContainer(..., Notifier notifier) ve ContainerOpener.openContainer(..., Long timeoutInMillis).

Bu yöntemlerin her biri, varsayılan olmayan veya yeni bir kapsayıcı görevi görür.

OpenType.PREFER_NON_DEFAULT çoğu uygulama için önerilir ve belirli bir ayar içindeki varsayılan olmayan ilk uygun kapsayıcıyı döndürmeyi dener. zaman aşımı süresi (örneğin, bu container daha büyük olsa bile disk veya ağdan) 12 saatten eski. Eski ve kaydedilmiş bir kapsayıcı döndürürse, yeni bir tane için eşzamansız ağ isteği. OpenType.PREFER_NON_DEFAULT kullanılırken başka kapsayıcı yoksa veya zaman aşımı süresi aşıldıysa varsayılan kapsayıcı döndürülür.

OpenType.PREFER_FRESH, şuradan yeni bir kapsayıcı döndürmeye çalışıyor: disk veya ağda yer alır. Bir ağ aşağıdaki durumlarda kaydedilmiş bir kapsayıcıyı döndürür: bağlantı kesildi ve/veya zaman aşımı süresi aşıldı.

OpenType.PREFER_FRESH kullanılması önerilmez uzun bir istek süresinin kullanıcı deneyimini belirgin şekilde etkileyebileceği yerlerde, veya görüntüleme dizeleri gibi özellikleri test etmenizi sağlar. Şunları da kullanabilirsiniz: Container.refresh() herhangi bir zamanda kullanarak bir ağ container'ı isteğini zorunlu kılar.

Bu kolaylık yöntemlerinin ikisi de engellemeyen değildir. ContainerOpener.openContainer(..., Long timeoutInMillis), şunu döndürür: get yöntemi bir sonucu döndüren ContainerOpener.ContainerFuture nesnesi Container (ancak yüklenene kadar engellenecek). ContainerOpener.openContainer(..., Notifier notifier) yöntemi tek bir geri çağırma alır, çağrılır, Bu kural, ana iş parçacığının engellenmesini önlemek için kullanılabilir. Her iki yöntemin de varsayılan zaman aşımı süresi 2000 milisaniyedir.

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

Kapsayıcılar, kuralları kullanarak çalışma zamanında değerleri değerlendirebilir. Kurallar şunlara dayalı olabilir: cihaz dili, platform veya başka herhangi bir makro değer gibi kriterlere göre belirlenir. Örneğin, Örneğin, kurallar, içeriğe dayalı yerelleştirilmiş bir görüntüleme dizesi seçmek için cihazın diline bakın. Bu, şu kuralı kullanın:

Görüntüleme dizelerini
            çalışma zamanı: dil eşittir es. Bu kural, önceden tanımlanmış dili kullanır
            makrosu ve iki karakterli ISO 639-1 dil kodu içerir.
Şekil 1: Yalnızca cihazlar için değer koleksiyonu makrosu etkinleştirmek üzere kural ekleme İspanyolcayı kullanacak şekilde yapılandırılmıştır.

Ardından her dil için değer koleksiyonu makroları oluşturup bu makroları kuralını her makroya uygun dil kodunu ekleyerek ekleyin. Bu kapsayıcı, yayınlandığında, uygulamanız artık yerelleştirilmiş görüntülü reklam dizeleri, çalışma zamanında kullanıcının cihazının diline göre belirlenir.

Varsayılan kapsayıcınız kural gerektiriyorsa Varsayılan olarak ikili kapsayıcı dosyanızı anlamına gelir.

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

Varsayılan İkili Kapsayıcı Dosyaları

Kural gerektiren varsayılan kapsayıcılar, ikili kapsayıcı dosyası kullanmalıdır JSON yerine dosyasını varsayılan kapsayıcı olarak ayarlayın. İkili program container'ları, kullanıcıların makro değerlerini Google Etiket Yöneticisi kurallarıyla birlikte, JSON dosyalarda bunu yapmaz.

İkili program kapsayıcı dosyaları, Google Etiket Yöneticisi web'den indirilebilir. arayüz ve proje başlatma belgesine /assets/tagmanager/ klasörünü açıp şu kalıbı izleyin: /assets/tagmanager/GTM-XXXX, burada dosya adı Kapsayıcı kimliği.

JSON dosyasının ikili kapsayıcı dosyasının olduğu mevcut bir ikili kapsayıcı dosyası varsa SDK, dosyasını seçin.

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

İşlev Çağrısı Makroları, belirtilen bir işleve ekleyin. İşlev Çağrısı Makroları, Google Etiket Yöneticisi kurallarınızla, kullanıcı için hangi fiyatın gösterileceğini belirlemek için çalışma sırasında cihazın dili ve para birimi.

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

  1. Google Etiket Yöneticisi web arayüzünde işlev çağrısı makrolarını tanımlayın. Bağımsız değişkenler isteğe bağlı olarak anahtar/değer çiftleri olarak yapılandırılabilir.
  2. Aşağıdakini kullanarak uygulamanıza FunctionCallMacroHandler kaydedin: Container.registerFunctionCallMacroHandler() ve yapılandırdığınız işlev adı değerini geçersiz kılarak bir sonraki getValue() yöntemi:
    /**
     * 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ısı Etiketleri, önceden kaydedilmiş işlevlerin her zaman yürütülmesine Veri katmanına ve etiket kurallarına bir etkinlik aktarıldığında true olarak değerlendir.

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

  1. İşlev çağrısı etiketini Google Etiket Yöneticisi web arayüzünde tanımlayın. Bağımsız değişkenler isteğe bağlı olarak anahtar/değer çiftleri olarak yapılandırılabilir.
  2. Aşağıdaki komutu kullanarak uygulamanıza işlev çağrısı etiket işleyicisi kaydedin: Container.registerFunctionCallTagHandler():
    /**
     * 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 Süresi Belirleme

Google Etiket Yöneticisi SDK'sı, Mevcut kapsayıcı yaşı 12 saati aşıyorsa yeni bir kapsayıcı Bir özel container yenileme süresi, Timer ( şu örneği inceleyin:

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 şununla kendi Logger'inizi uygulayın: TagManager.setLogger, şu örnekte olduğu gibi:

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, TagManager.getLogger().setLogLevel(LogLevel) , aşağıdaki örnekte olduğu gibi:

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