Android v3 (लेगसी) - खास जानकारी

इस डेवलपर गाइड में बताया गया है कि मोबाइल ऐप्लिकेशन पर काम करता है.

परिचय

Google Tag Manager की मदद से डेवलपर, कॉन्फ़िगरेशन में बदलाव कर सकते हैं Google Tag Manager का इस्तेमाल करके, अपने मोबाइल ऐप्लिकेशन में वैल्यू ऐसा इंटरफ़ेस जो ऐप्लिकेशन की बाइनरी फ़ाइल को फिर से बनाने और दोबारा सबमिट करने की ज़रूरत नहीं है बाज़ार.

यह किसी भी कॉन्फ़िगरेशन वैल्यू को मैनेज करने के लिए मददगार है फ़्लैग करते हैं जिन्हें भविष्य में बदलना पड़ सकता है, शामिल हैं:

  • कई यूज़र इंटरफ़ेस (यूआई) सेटिंग और डिसप्ले स्ट्रिंग
  • आपके ऐप्लिकेशन में दिखाए जाने वाले विज्ञापनों के साइज़, जगह या टाइप
  • गेम की सेटिंग

कॉन्फ़िगरेशन वैल्यू का आकलन, रनटाइम के दौरान भी नियमों का इस्तेमाल करके किया जा सकता है. इन्हें चालू करने से डाइनैमिक कॉन्फ़िगरेशन लागू होते हैं, जैसे:

  • विज्ञापन बैनर का साइज़ तय करने के लिए, स्क्रीन साइज़ का इस्तेमाल करना
  • यूज़र इंटरफ़ेस (यूआई) एलिमेंट को कॉन्फ़िगर करने के लिए, भाषा और जगह की जानकारी का इस्तेमाल करना

Google TagManager, ट्रैकिंग टैग को डाइनैमिक तरीके से लागू करने की सुविधा भी चालू करता है और पिक्सल को ऐप्लिकेशन में शामिल कर सकते हैं. डेवलपर, अहम इवेंट को डेटा में पुश कर सकते हैं बाद में तय कर सकता है कि कौनसे ट्रैकिंग टैग या पिक्सल ट्रिगर किए जाने चाहिए. फ़िलहाल, Tag Manager में नीचे दिए गए टैग इस्तेमाल किए जा सकते हैं:

  • Google मोबाइल ऐप्लिकेशन Analytics
  • कस्टम फ़ंक्शन कॉल टैग

आरंभ करने से पहले

शुरुआती निर्देश वाली इस गाइड का इस्तेमाल करने से पहले, आपको इनकी ज़रूरत होगी:

अगर आपने पहले कभी Google Tag Manager का इस्तेमाल नहीं किया है, तो हमारा सुझाव है कि इस गाइड को जारी रखने से पहले, कंटेनर, मैक्रो, और नियमों (सहायता केंद्र) के बारे में ज़्यादा जानें.

शुरू करें

इस सेक्शन से डेवलपर को Tag Manager के सामान्य वर्कफ़्लो के बारे में जानकारी मिलेगी:

  1. अपने प्रोजेक्ट में Google Tag Manager SDK टूल जोड़ना
  2. कंटेनर की डिफ़ॉल्ट वैल्यू सेट करना
  3. कंटेनर खोलें
  4. कंटेनर से कॉन्फ़िगरेशन वैल्यू पाना
  5. इवेंट को Datalayer पर पुश करना
  6. झलक देखें और कंटेनर को पब्लिश करना

1. अपने प्रोजेक्ट में Google Tag Manager SDK टूल जोड़ना

Google Tag Manager SDK का इस्तेमाल करने से पहले, आपको SDK टूल पैकेज को अनज़िप करना होगा और अपने प्रोजेक्ट के बिल्ड पाथ में लाइब्रेरी जोड़ें और अनुमतियां जोड़ें आपकी AndroidManifest.xml फ़ाइल में.

सबसे पहले, Google Tag Manager लाइब्रेरी को इसके /libs फ़ोल्डर में जोड़ें आपका प्रोजेक्ट.

इसके बाद, इनका इस्तेमाल करने के लिए अपनी AndroidManifest.xml फ़ाइल को अपडेट करें अनुमतियां:

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

2. अपने प्रोजेक्ट में डिफ़ॉल्ट कंटेनर फ़ाइल जोड़ना

Google Tag Manager आपके ऐप्लिकेशन की पहली बार में चलाए जाने पर, डिफ़ॉल्ट कंटेनर का इस्तेमाल करता है. डिफ़ॉल्ट कंटेनर का उपयोग तब तक किया जाएगा, जब तक ऐप्लिकेशन नेटवर्क.

अपने ऐप्लिकेशन में डिफ़ॉल्ट कंटेनर बाइनरी डाउनलोड करने और जोड़ने के लिए, यह तरीका अपनाएं:

  1. Google Tag Manager के वेब इंटरफ़ेस में साइन इन करें.
  2. उस कंटेनर का वर्शन चुनें जिसे आपको डाउनलोड करना है.
  3. कंटेनर बाइनरी को फिर से पाने के लिए, डाउनलोड करें बटन पर क्लिक करें.
  4. बाइनरी फ़ाइल को इसमें जोड़ें नीचे दिया गया पाथ: <project-root>/assets/tagmanager/

कंटेनर आईडी (उदाहरण के लिए GTM-1234) डिफ़ॉल्ट फ़ाइल नाम होना चाहिए. एक बार बाइनरी फ़ाइल डाउनलोड की है, फ़ाइल के नाम से वर्शन सफ़िक्स हटाना न भूलें ताकि यह पक्का किया जा सके कि आपने सही नामकरण का पालन किया है.

हालांकि, अगर आपके कंटेनर में नियम या टैग नहीं हैं, तो बाइनरी फ़ाइल का इस्तेमाल करने का सुझाव दिया जाता है, तो आपके पास JSON फ़ाइल का इस्तेमाल करें. फ़ाइल नए /assets/tagmanager में होनी चाहिए फ़ोल्डर में जाकर, प्रोजेक्ट का नाम रखने की इस प्रक्रिया का पालन करना चाहिए: <Container_ID>.json. उदाहरण के लिए, अगर आपका कंटेनर आईडी GTM-1234 है, आपको अपने डिफ़ॉल्ट कंटेनर मान /assets/tagmanager/GTM-1234.json.

3. कंटेनर खोलना

किसी कंटेनर से वैल्यू पाने से पहले, आपके ऐप्लिकेशन को खोलना होगा कंटेनर. किसी कंटेनर को खोलने पर, वह डिस्क से लोड हो जाएगा (अगर उपलब्ध हो), या नेटवर्क से उसका अनुरोध करेगा (ज़रूरत होने पर).

Android पर कंटेनर खोलने का सबसे आसान तरीका है ContainerOpener.openContainer(..., Notifier notifier), जैसा कि इस उदाहरण में दिखाया गया है:

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.
  }
}

इस उदाहरण में, ContainerOpener.openContainer(..., Notifier notifier) का इस्तेमाल इन कामों के लिए किया जाता है लोकल स्टोरेज से सेव किए गए कंटेनर का अनुरोध करने के लिए. वे mContainer को containerAvailable कॉलबैक करते हैं, तो हम पक्का करते हैं कि मुख्य थ्रेड को ब्लॉक नहीं किया गया है. अगर सेव किया गया कंटेनर 12 घंटे से ज़्यादा पुराना है, तो कॉल, एसिंक्रोनस रूप से नए कंटेनर को फिर से पाने के अनुरोध को भी शेड्यूल करेगा नेटवर्क पर.

लागू किया गया यह सैंपल, फ़ाइल खोलने और वापस पाने का सबसे आसान तरीका बताता है ContainerOpener सुविधा क्लास का इस्तेमाल करने वाले कंटेनर के मान. बेहतर तरीके से लागू करने के विकल्पों के लिए, बेहतर कॉन्फ़िगरेशन देखें.

4. कंटेनर से कॉन्फ़िगरेशन वैल्यू हासिल की जा रही हैं

कंटेनर खुला होने पर, इनका इस्तेमाल करके कॉन्फ़िगरेशन वैल्यू को हासिल किया जा सकता है get<type>Value() तरीका:

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

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

किसी गैर-मौजूद कुंजी से किए गए अनुरोध के लिए एक डिफ़ॉल्ट मान लौटेगा, जो मौजूद नहीं है अनुरोधित प्रकार में:

// 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. डेटा लेयर में वैल्यू पुश करना

Datalayer एक ऐसा मैप है जो आपके ऐप्लिकेशन के बारे में रनटाइम की जानकारी को चालू करता है, जैसे कि टच इवेंट या स्क्रीन व्यू, ताकि टैग मैनेजर मैक्रो और टैग में कंटेनर.

उदाहरण के लिए, स्क्रीन व्यू की जानकारी को Datalayer मैप में पुश करके, आप कन्वर्ज़न पिक्सल को सक्रिय करने के लिए Tag Manager वेब इंटरफ़ेस में टैग सेट अप कर सकते हैं साथ ही, उन स्क्रीन व्यू के जवाब में कॉल को ट्रैक करना होगा. उन्हें अपने ऐप्लिकेशन में कोड करें.

इवेंट को push() और DataLayer.mapOf() हेल्पर तरीके का इस्तेमाल करके, DataLayer में पुश किया जाता है:

//
// 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
}

वेब इंटरफ़ेस में, अब टैग बनाए जा सकते हैं. जैसे, Google Analytics टैग हर स्क्रीन व्यू के लिए फ़ायर करने के लिए, यह नियम बनाएं: "openScreen" के बराबर है. स्क्रीन नेम को इनमें से किसी एक टैग में पास करने के लिए, डेटा लेयर में "screenName" कुंजी का रेफ़रंस देने वाला डेटा लेयर मैक्रो बनाएं. सिर्फ़ चुनिंदा स्क्रीन व्यू के लिए ट्रिगर करने के लिए, टैग (जैसे, Google Ads कन्वर्ज़न पिक्सल) भी बनाया जा सकता है. इसके लिए, ऐसा नियम बनाएं जिसमें की वैल्यू "openScreen" और की वैल्यू "ConfirmationScreen" हो.

6. पूर्वावलोकन और कंटेनर को पब्लिश करना

मैक्रो वैल्यू हमेशा, पब्लिश किए गए मौजूदा वर्शन के हिसाब से होंगी. कंटेनर का नवीनतम वर्शन प्रकाशित करने से पहले, आप पूर्वावलोकन कर सकते हैं शामिल किया जा सकता है.

कंटेनर की झलक देखने के लिए, Google में झलक वाला यूआरएल जनरेट करें कंटेनर का वर्शन चुनकर Tag Manager वेब इंटरफ़ेस आपको झलक देखना है, और फिर Preview को चुनना है. इंतज़ार करें इस झलक यूआरएल की ज़रूरत पड़ेगी. साथ ही, आपको बाद के चरणों में इसकी ज़रूरत पड़ेगी.

टैग की झलक विंडो में, झलक वाले यूआरएल उपलब्ध होते हैं
           मैनेजर वेब इंटरफ़ेस
पहली इमेज: इस इमेज से झलक दिखाने वाला यूआरएल पाना Tag Manager का वेब इंटरफ़ेस.

इसके बाद, अपने ऐप्लिकेशन के AndroidManifest.xml फ़ाइल:

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

एम्युलेटर या फ़िज़िकल डिवाइस पर लिंक को खोलने के लिए अपने ऐप्लिकेशन में ड्राफ़्ट कंटेनर की झलक देखें.

जब आप अपने ड्राफ़्ट कॉन्फ़िगरेशन वैल्यू को ऐप्लिकेशन, कंटेनर को पब्लिश करना.

बेहतर कॉन्फ़िगरेशन

मोबाइल के लिए Google टैग मैनेजर में कई बेहतर कॉन्फ़िगरेशन हैं विकल्पों की मदद से, रनटाइम की शर्तों के हिसाब से वैल्यू चुनी जा सकती हैं. इसके लिए, कंटेनर को मैन्युअल रूप से रीफ़्रेश करें, और कंटेनर. नीचे दिए सेक्शन में, सबसे सामान्य तकनीकी समस्याओं के बारे में बताया गया है कॉन्फ़िगरेशन.

कंटेनर खोलने के लिए बेहतर विकल्प

Google Tag Manager SDK टूल में, वेबसाइट खोलने के कई तरीके मौजूद हैं कंटेनर, जो आपको लोड होने की प्रोसेस पर ज़्यादा कंट्रोल दे सकते हैं:

TagManager.openContainer()

किसी ऐप्लिकेशन को खोलने के लिए, TagManager.openContainer() सबसे कम लेवल और सबसे सुविधाजनक एपीआई है कंटेनर. यह एक डिफ़ॉल्ट कंटेनर के साथ तुरंत वापस लौट आता है और अगर कोई कंटेनर सेव नहीं किया गया है, तो डिस्क या नेटवर्क से कंटेनर को एसिंक्रोनस रूप से लोड भी करता है कंटेनर मौजूद है या अगर सेव किया गया कंटेनर नया नहीं है (12 घंटे पुराना).

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.
  }

लोड होने की पूरी प्रोसेस के दौरान, TagManager.openContainer() गड़बड़ियां हुईं कई लाइफ़साइकल कॉलबैक में मदद करते हैं, ताकि आपका कोड यह पता लगा सके कि लोड होने का अनुरोध शुरू होता है, क्यों और क्यों नहीं या क्यों नहीं होता है, और क्या कंटेनर को डिस्क या नेटवर्क से लोड किया गया.

जब तक आपके ऐप्लिकेशन के लिए डिफ़ॉल्ट मानों का उपयोग करना स्वीकार्य न हो, तब तक सेव किए गए या नेटवर्क की जानकारी पाने के लिए, आपको इन कॉलबैक का इस्तेमाल करना होगा कंटेनर लोड हो गया है. ध्यान दें कि आप इस वीडियो में सेव की गई नेटवर्क कंटेनर, अगर ऐप्लिकेशन पहली बार चलाया जा रहा है और एक बार भी नहीं इंटरनेट.

TagManager.openContainer() ने नीचे दिए गए enum को पास कर लिया है इन कॉलबैक के लिए आर्ग्युमेंट के तौर पर वैल्यू:

RefreshType

मानब्यौरा
Container.Callback.SAVED रीफ़्रेश करने का अनुरोध, डिवाइस पर सेव किया गया कंटेनर लोड कर रहा है.
Container.Callback.NETWORK रीफ़्रेश करने का अनुरोध, नेटवर्क पर एक कंटेनर लोड कर रहा है.

RefreshFailure

मानब्यौरा
Container.Callback.NO_SAVED_CONTAINER सेव किया गया कोई कंटेनर उपलब्ध नहीं है.
Container.Callback.IO_ERROR I/O गड़बड़ी की वजह से कंटेनर को रीफ़्रेश नहीं किया जा सका.
Container.Callback.NO_NETWORK इंटरनेट नहीं है.
Container.Callback.NETWORK_ERROR नेटवर्क की कोई गड़बड़ी हुई.
Container.Callback.SERVER_ERROR सर्वर पर कोई गड़बड़ी हुई.
Container.Callback.UNKNOWN_ERROR एक ऐसी गड़बड़ी हुई है जिसे कैटगरी में नहीं रखा जा सकता.

नॉन-डिफ़ॉल्ट और नए कंटेनर खोलने के तरीके

ContainerOpener ने TagManager.openContainer() को रैप किया और कंटेनर खोलने के लिए दो सुविधाजनक तरीके उपलब्ध कराता है: ContainerOpener.openContainer(..., Notifier notifier) और ContainerOpener.openContainer(..., Long timeoutInMillis).

इनमें से हर एक तरीके में ऐसी गिनती होती है जो डिफ़ॉल्ट न हो या एक नया कंटेनर बनाएं.

ज़्यादातर ऐप्लिकेशन के लिए, OpenType.PREFER_NON_DEFAULT का इस्तेमाल करने का सुझाव दिया जाता है. दिए गए मान में पहले उपलब्ध गैर-डिफ़ॉल्ट कंटेनर को लौटाने का प्रयास करता है डिस्क या नेटवर्क से टाइम आउट की अवधि, भले ही वह कंटेनर ज़्यादा हो 12 घंटे से ज़्यादा पुराना है. अगर यह सेव किया गया पुराना कंटेनर दिखाता है, तो यह एक नए के लिए एसिंक्रोनस नेटवर्क अनुरोध. OpenType.PREFER_NON_DEFAULT का इस्तेमाल करते समय, एक डिफ़ॉल्ट अगर कोई अन्य कंटेनर उपलब्ध नहीं है या टाइम आउट की अवधि है, तो कंटेनर दिखाया जाएगा पार हो गया है.

OpenType.PREFER_FRESH से नया कंटेनर लौटाने की कोशिश करता है डिस्क या नेटवर्क का इस्तेमाल कर सकते हैं. अगर नेटवर्क में कोई नेटवर्क है, तो यह सेव किया गया कंटेनर दिखाता है कनेक्शन उपलब्ध नहीं है और/या टाइम आउट की अवधि पार हो गई है.

OpenType.PREFER_FRESH का इस्तेमाल करने का सुझाव नहीं दिया जाता है ऐसी जगहों पर जहां ज़्यादा समय तक अनुरोध करने से उपयोगकर्ता अनुभव पर काफ़ी असर पड़ सकता है, जैसे कि यूज़र इंटरफ़ेस (यूआई) फ़्लैग या डिसप्ले स्ट्रिंग. इस्तेमाल करने के लिए, Container.refresh() किसी भी समय का इस्तेमाल करें.

सुविधा के ये दोनों तरीके, ब्लॉक नहीं कर रहे हैं. ContainerOpener.openContainer(..., Long timeoutInMillis) नतीजे के तौर पर ContainerOpener.ContainerFuture ऑब्जेक्ट, जिसकी get विधि लोड होते ही Container दें (लेकिन यह तब तक ब्लॉक हो जाएगा). ContainerOpener.openContainer(..., Notifier notifier) तरीके में एक कॉलबैक होता है, कंटेनर उपलब्ध होने पर कॉल किया जाता है, इसका इस्तेमाल, मुख्य थ्रेड को ब्लॉक होने से रोकने के लिए किया जा सकता है. दोनों तरीकों में, टाइम आउट की डिफ़ॉल्ट अवधि है 2000 मिलीसेकंड.

नियमों का इस्तेमाल करके, रनटाइम में मैक्रो का आकलन करना

कंटेनर, नियमों का इस्तेमाल करके रनटाइम के दौरान वैल्यू का आकलन कर सकते हैं. नियम इन पर आधारित हो सकते हैं और मानदंड के आधार पर तय नहीं किया जा सकता. इसके लिए उदाहरण के लिए, नियमों का इस्तेमाल रनटाइम के दौरान डिवाइस की भाषा सेट करें. इसे कॉन्फ़िगर करने के लिए, नीचे दिया गया नियम लागू होगा:

किसी नियम का इस्तेमाल, डिवाइस की भाषा के आधार पर डिसप्ले स्ट्रिंग को चुनने के लिए किया जाता है
            रनटाइम: भाषा es के बराबर होती है. यह नियम पहले से तय की गई भाषा का इस्तेमाल करता है
            मैक्रो और एक दो वर्ण का ISO 639-1 भाषा कोड.
पहली इमेज:सिर्फ़ डिवाइसों के लिए वैल्यू कलेक्शन मैक्रो चालू करने के लिए नियम जोड़ना स्पैनिश भाषा इस्तेमाल करने के लिए कॉन्फ़िगर किया गया.

इसके बाद, हर भाषा के लिए वैल्यू कलेक्शन वाले मैक्रो बनाए जा सकते हैं और नियम बनाकर प्रत्येक मैक्रो में, उपयुक्त भाषा कोड डालकर. जब यह कंटेनर प्रकाशित कर दिया है, तो आपका ऐप्लिकेशन स्थानीय भाषा में प्रदर्शन दिखा पाएगा स्ट्रिंग कॉन्फ़िगर करती हैं. ये रनटाइम के दौरान उपयोगकर्ता के डिवाइस की भाषा पर निर्भर करती हैं.

ध्यान दें कि अगर आपके डिफ़ॉल्ट कंटेनर को नियमों की ज़रूरत है, तो आपको बाइनरी कंटेनर फ़ाइल को डिफ़ॉल्ट तौर पर सेट करें कंटेनर.

नियम कॉन्फ़िगर करने के बारे में ज़्यादा जानें (सहायता केंद्र).

बाइनरी डिफ़ॉल्ट कंटेनर फ़ाइलें

जिन डिफ़ॉल्ट कंटेनर को नियमों की ज़रूरत है उन्हें बाइनरी कंटेनर फ़ाइल का इस्तेमाल करना चाहिए JSON के बजाय फ़ाइल को डिफ़ॉल्ट कंटेनर के रूप में रखता है. बाइनरी कंटेनर, यह तय करने में मदद करते हैं कि Google टैग मैनेजर के नियमों के साथ रनटाइम के दौरान मैक्रो मान, जबकि JSON फ़ाइलें नहीं हैं.

बाइनरी कंटेनर फ़ाइलें, Google Tag Manager के वेब वर्शन से डाउनलोड की जा सकती हैं इंटरफ़ेस और को आपके प्रोजेक्ट के /assets/tagmanager/ फ़ोल्डर पर जाकर इस पैटर्न को फ़ॉलो करें: /assets/tagmanager/GTM-XXXX, जहां फ़ाइल का नाम कंटेनर आईडी का इस्तेमाल करें.

ऐसे मामलों में जहां JSON फ़ाइल और एक बाइनरी कंटेनर फ़ाइल मौजूद है, तो SDK टूल बाइनरी कंटेनर का इस्तेमाल करेगा फ़ाइल को डिफ़ॉल्ट कंटेनर के रूप में रखता है.

फ़ंक्शन कॉल मैक्रो का उपयोग करना

फ़ंक्शन कॉल मैक्रो ऐसे मैक्रो हैं, जो किसी खास फ़ंक्शन को चुनना होगा. फ़ंक्शन कॉल मैक्रो का इस्तेमाल इन कामों के लिए किया जा सकता है रनटाइम वैल्यू को अपने Google Tag Manager के नियमों के साथ शामिल करें, जैसे कॉन्फ़िगरेशन के हिसाब से, रनटाइम के दौरान यह तय किया जा सकता है कि उपयोगकर्ता को कौनसी कीमत दिखानी है डिवाइस की भाषा और मुद्रा.

फ़ंक्शन कॉल मैक्रो को कॉन्फ़िगर करने के लिए:

  1. Google टैग मैनेजर वेब इंटरफ़ेस में फ़ंक्शन कॉल मैक्रो निर्धारित करें. आर्ग्युमेंट को की-वैल्यू पेयर के तौर पर कॉन्फ़िगर किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.
  2. इसका इस्तेमाल करके अपने ऐप्लिकेशन में FunctionCallMacroHandler रजिस्टर करें Container.registerFunctionCallMacroHandler() और आपके कॉन्फ़िगर किए गए फ़ंक्शन का नाम जोड़ा है, जो इसकी जगह ले लेगा getValue() तरीका:
    /**
     * 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;
      }
    });
    

फ़ंक्शन कॉल टैग का इस्तेमाल करना

फ़ंक्शन कॉल टैग, पहले से रजिस्टर किए गए फ़ंक्शन को किसी भी समय चलाया जा सकता है इवेंट को डेटा लेयर और टैग के नियमों में पुश किया जाता है true का मूल्यांकन करें.

फ़ंक्शन कॉल टैग कॉन्फ़िगर करने के लिए:

  1. Google Tag Manager के वेब इंटरफ़ेस में, फ़ंक्शन कॉल टैग तय करें. आर्ग्युमेंट को की-वैल्यू पेयर के तौर पर कॉन्फ़िगर किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.
  2. इसका इस्तेमाल करके अपने ऐप्लिकेशन में फ़ंक्शन कॉल टैग हैंडलर रजिस्टर करें 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.
        }
      }
    });
    

कस्टम रीफ़्रेश अवधि सेट करना

Google Tag Manager SDK टूल, अगर मौजूदा कंटेनर की उम्र 12 घंटे से ज़्यादा हो, तो एक नया कंटेनर. सेट करने के लिए कस्टम कंटेनर रीफ़्रेश अवधि, इसका उपयोग करें Timer , जैसे कि नीचे दिया गया उदाहरण:

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

Logger की मदद से डीबग करना

Google Tag Manager SDK, डिफ़ॉल्ट रूप से लॉग में गड़बड़ियां और चेतावनियां प्रिंट करता है. वर्बोज़ लॉगिंग को सक्षम करने से, डीबगिंग में मदद मिल सकती है और ऐसा करने से ऐसा किया जा सकता है इसके साथ अपना Logger लागू करना TagManager.setLogger, जैसा कि इस उदाहरण में बताया गया है:

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.

});

या, आप TagManager.getLogger().setLogLevel(LogLevel) , जैसा कि इस उदाहरण में बताया गया है:

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