Android v4 - Başlarken

Giriş

Google Etiket Yöneticisi, geliştiricilerin mobil uygulamalarında yapılandırma değerlerini değiştirebilmesini sağlar uygulama ikili programlarını yeniden oluşturup yeniden göndermek zorunda kalmadan Google Etiket Yöneticisi arayüzünü kullanarak uygulama pazarlarına taşıyabilir.

Bu, uygulamanızda ihtiyaç duyabileceğiniz yapılandırma değerlerini veya işaretleri yönetmek için yararlıdır gelecekte değişebilir. Ö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
  • Çeşitli oyun ayarları

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

  • 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 Tag Manager, izleme etiketlerinin ve piksellerinin izin verir. Geliştiriciler önemli etkinlikleri bir veri katmanına aktarabilir ve daha sonra hangi izleme etiketlerinin veya piksellerinin tetiklenmesi gerekir.

Başlamadan Önce

Bu başlangıç kılavuzuna başlamadan önce aşağıdaki adımları uygulayın:

Bu adımları tamamladıktan sonra kılavuzun geri kalanında Google Etiket Yöneticisi'ni yapılandırıp kullanın.

Başlarken

Bu Başlangıç Kılavuzu'nu uyguladıktan sonra şunları nasıl yapacağınızı öğreneceksiniz:

Bu kılavuzda Cute Animals kod snippet'leri kullanılmaktadır örnek uygulama, Google Play Hizmetleri SDK'sı. Bu projenin tam kaynağı şurada bulunabilir: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals.

1. Projenize Google Etiket Yöneticisi'ni ekleme

Projenize Google Etiket Yöneticisi'ni eklemek için:

  1. Google Play Hizmetleri SDK'sını kurun.
  2. dışında bir IDE kullanıyorsanız Android Studio kullanıyorsanız aşağıdaki izinleri AndroidManifest.xml dosyası:
    <!-- For TagManager SDK -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. hizmetini etkinleştirmek için Google Analytics alıcısını çağırmak için InstallReferrerReceiver kampanya verilerini ayarlamak için aşağıdakini kampanya AndroidManifest.xml dosyası:
    <!-- Used for install referrer tracking-->
    <service android:name="com.google.android.gms.tagmanager.InstallReferrerService" />
    <receiver
      android:name="com.google.android.gms.tagmanager.InstallReferrerReceiver"
      android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
    </receiver>

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; ağ.

Varsayılan container ikili programını indirip uygulamanıza eklemek için:

  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. İndirilen container ikili programını, ham kaynak olarak projenize ekleyin.
    1. Şuradaki raw alt klasörü: <project-root>/res/ mevcut değil, oluşturun.
    2. Gerekirse kapsayıcı ikili program dosyasını yeniden adlandırın. Yalnızca küçük harf, rakam ve alt çizgi içerebilir.
    3. Kapsayıcı ikili dosyası dosyasını klasöre kopyalayın <project-root>/res/raw

İkili programın kullanılması önerilse de, kapsayıcınız kural veya etiket içermiyorsa bunun yerine basit bir JSON dosyası kullanmayı seçebilirsiniz.

3. Google Etiket Yöneticisi başlatılıyor

Uygulamanızda Google Etiket Yöneticisi'ni ilk kullanıma hazırlamak için:

  1. TagManager single'ını alın:
    TagManager tagManager = TagManager.getInstance(this);
  2. Bir container yükleme isteğinde bulunmak için TagManager singleton'ını kullanarak Varsayılan kapsayıcınızın yanı sıra Google Etiket Yöneticisi kapsayıcı kimliği dosyası olarak kaydedebilirsiniz. Kapsayıcı kimliği büyük harfli olmalı ve Google etiketindeki kapsayıcı kimliğiyle tam olarak eşleşmelidir. Yönetici web arayüzü. loadContainerPreferNonDefault() numaralı telefona yapılan çağrı engelleyici değil ve PendingResult:
    PendingResult<ContainerHolder> pending =
            tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
            R.raw.defaultcontainer_binary);
  3. kullanın ResultCallback değerini döndürmek için ContainerHolder Yükleme tamamlandıktan veya zaman aşımına uğradıktan sonra:
    // The onResult method will be called as soon as one of the following happens:
    //     1. a saved container is loaded
    //     2. if there is no saved container, a network container is loaded
    //     3. the 2-second timeout occurs
    pending.setResultCallback(new ResultCallback<ContainerHolder>() {
        @Override
        public void onResult(ContainerHolder containerHolder) {
            ContainerHolderSingleton.setContainerHolder(containerHolder);
            Container container = containerHolder.getContainer();
            if (!containerHolder.getStatus().isSuccess()) {
                Log.e("CuteAnimals", "failure loading container");
                displayErrorToUser(R.string.load_error);
                return;
            }
            ContainerLoadedCallback.registerCallbacksForContainer(container);
            containerHolder.setContainerAvailableListener(new ContainerLoadedCallback());
            startMainActivity();
        }
    }, TIMEOUT_FOR_CONTAINER_OPEN_MILLISECONDS, TimeUnit.MILLISECONDS);

    ContainerHolder Singleton oluşturma

    Her çalıştırması için yalnızca bir ContainerHolder örneği sağlamalısınız. bir uygulamadır. Bu nedenle yukarıdaki örnekte bir ContainerHolderSingleton yardımcı program sınıfı kullanılmaktadır. ContainerHolder örneğine erişimi yönetin. İşte bu ContainerHolderSingleton sınıfı şuna benziyor:

    package com.google.android.tagmanager.examples.cuteanimals;
    
    import com.google.android.gms.tagmanager.ContainerHolder;
    
    /**
     * Singleton to hold the GTM Container (since it should be only created once
     * per run of the app).
     */
    public class ContainerHolderSingleton {
        private static ContainerHolder containerHolder;
    
        /**
         * Utility class; don't instantiate.
         */
        private ContainerHolderSingleton() {
        }
    
        public static ContainerHolder getContainerHolder() {
            return containerHolder;
        }
    
        public static void setContainerHolder(ContainerHolder c) {
            containerHolder = c;
        }
    }

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

Kapsayıcı yüklendikten sonra Container.get<type>() yöntem. Yapılandırma değerleri, Google Etiket Yöneticisi'nin değer koleksiyonu değişkenleri. Örneğin, bir kullanıcı arayüzü öğesi için kullanmaya karar verdiğimiz en son rengi alır ve bunu, bir tam sayı:

/**
 * Returns an integer representing a color.
 */
private int getColor(String key) {
    return colorFromColorName(containerHolder.getContainer().getString(key));
}

Bu kod, kapsayıcıdan renk adını almak için iki şey yapar:

  1. ContainerHolder içinden Container öğesini şunu kullanarak alır: ContainerHolder.getContainer().
  2. Renk değerini şunu kullanarak alır: Container.getString(key), burada: Google Etiket Yöneticisi web arayüzünde anahtarı ve değeri tanımladı.

5. Etkinlikleri ve Değerleri dataLayer'a Aktarma

Google Etiket Yöneticisi, bilgileri aktarabileceğiniz bir dataLayer de sağlar. uygulamanızın diğer bölümlerinde okunabilen veya etiketleri tetiklemek için kullanılabilecek uygulamanız hakkında Google Etiket Yöneticisi web arayüzünde yapılandırmanız gerekir.

Değerleri dataLayer'a Aktarma

dataLayer, kullanabileceğiniz bir kalıcılık katmanı sağlar uygulamanızın diğer bölümlerinde kullanmak isteyebileceğiniz anahtar/değer çiftlerini depolamak için veya giriş olarak kullanabilirsiniz.

dataLayer öğesine bir değer aktarmak için şu kalıbı izleyin:

  1. edinin DataLayer single'ı:
    DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
  2. Etkinliği kullanarak aktarın DataLayer.push():
    // Put the image_name into the data layer for future use.
    TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);

dataLayer içinden bir değer almak için DataLayer.get(key).

dataLayer'a Etkinlik Aktarma

Etkinlikleri dataLayer hedefine aktarmak, uygulama kodunuzu etiketleyebilirsiniz.

Örneğin, Google Analytics ekran görüntülemelerini izlemeyle ilgili aramaları uygulamanıza sabit bir şekilde kodlamak yerine, Ekran etkinliklerini dataLayer alanına aktarabilir ve izleme etiketlerinizi Google Etiket Yöneticisi web arayüzü. Bu, size söz konusu etiketi değiştirme veya yeni uygulama kodunuzu güncellemeden ekran etkinliklerine yanıt veren ek etiketler.

dataLayer öğesine bir etkinlik aktarmak için şu kalıbı uygulayın:

  1. edinin DataLayer single'ı:
    DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
  2. Etkinliği kullanarak aktarın DataLayer.pushEvent():
    dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));

    DataLayer.mapOf(), projenizin haritasını kolayca oluşturmak için kullanabileceğiniz bir yardımcı yöntemdir anahtar/değer çiftleri kullanılır.dataLayer

6. Önizleme, Hata Ayıklama ve Yayınlama

Kapsayıcınızın bir sürümünü yayınlamadan önce, çalıştığından emin olmak için onu önizleyebilirsiniz. bu şekilde devam eder. Google Etiket Yöneticisi, kapsayıcınızın sürümlerini önizlemenize olanak tanır. Web arayüzünde bağlantılar ve QR kodları oluşturup bunları kullanarak uygulamanızı açın. Ayrıca, beklenmedik davranışlarda hata ayıklamak için ayrıntılı bir günlük kaydı modunu da etkinleştirebilirsiniz.

Önizleniyor

Kapsayıcınızın bir sürümünü önizlemek için aşağıdaki adımları uygulayın:

  1. Bu önizleme Activity, AndroidManifest dosyanıza ekleniyor:
    <!--  Add preview activity. -->
    <activity
        android:name="com.google.android.gms.tagmanager.PreviewActivity"
        android:label="@string/app_name"
        android:noHistory="true">  <!-- optional, removes the previewActivity from the activity stack. -->
        <intent-filter>
          <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE"/>
        </intent-filter>
    </activity>

    Bu satırı, uygulamanızın paket adını içerecek şekilde değiştirdiğinizden emin olun:

    <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
  2. Google Etiket Yöneticisi web arayüzünde önizleme bağlantısı oluşturma
    1. Google Etiket Yöneticisi'nde oturum açın.
    2. Önizlemek için kapsayıcı Sürüm'ünü seçin
    3. Önizleme düğmesini tıklayın
    4. Uygulamanızın paket adını girin ve Önizlemeyi başlat bağlantısı oluştur'u tıklayın
  3. Uygulamanızı başlatmak için oluşturulan bağlantıyı veya QR kodunu kullanın
  4. Önizlemeyi sonlandırma bağlantısı oluştur ile oluşturulan bir bağlantıyı izleyerek önizleme modundan çıkabilirsiniz. seçeneğidir.

Hata ayıklama

Container uygulamanızla ilgili sorunları gidermeniz gerekirse TagManager.setVerboseLoggingEnabled(true):

// Modify the log level of the logger to print out not only
// warning and error messages, but also verbose, debug, info messages.
tagManager.setVerboseLoggingEnabled(true);

Yayıncılık

Kapsayıcınızı önizledikten ve istenen şekilde çalıştığını doğruladıktan sonra, kapsayıcınızı yayınlayın. Sizin kapsayıcı yapılandırma değerleri, etiketler ve etkinlikler, yenilenmesi gerekiyor. Kapsayıcıları yenileme hakkında daha fazla bilgi edinin.

Gelişmiş Yapılandırma

Aşağıdaki bölümlerde, ayarlarınızı daha da özelleştirmek için kullanmak istediğiniz gelişmiş yapılandırma seçenekleri Google Etiket Yöneticisi'nin uygulanması.

Kapsayıcıyı Yenileme

Varsayılan olarak, kapsayıcınız 12 saatte bir yenilenmeye uygun hale gelir. Manuel olarak yenilemek için kapsayıcı için kullanın ContainerHolder.refresh():

ContainerHolderSingleton.getContainerHolder().refresh();

Bu, hemen döndürülmeyen eşzamansız bir çağrıdır. refresh(), ağ trafiğini azaltmak için 15 dakikada bir çağrılır, aksi takdirde işlemsiz olur.