Android v4 - इस्तेमाल शुरू करना

शुरुआती जानकारी

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

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

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

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

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

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

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

शुरुआती निर्देश देने से पहले नीचे दिए गए चरणों को पूरा करें:

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

YouTube पर शुरुआत करना

इस शुरुआती निर्देश का पालन करने के बाद, आपको पता चलेगा कि कैसे:

यह गाइड, Google Play Services SDK टूल में शामिल Cute Animals सैंपल ऐप्लिकेशन से कोड स्निपेट का इस्तेमाल करती है. इस प्रोजेक्ट का पूरा सोर्स यहां उपलब्ध है: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals.

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

अपने प्रोजेक्ट में Google Tag Manager जोड़ने के लिए:

  1. Google Play Services SDK टूल सेट अप करें.
  2. अगर Android Studio के अलावा, किसी अन्य आईडीई का इस्तेमाल किया जा रहा है, तो AndroidManifest.xml फ़ाइल में ये अनुमतियां जोड़ें:
    <!-- For TagManager SDK -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  3. कैंपेन डेटा सेट करने के लिए, InstallReferrerReceiver Google Analytics पाने वाले को कॉल कर सके, इसके लिए AndroidManifest.xml फ़ाइल में यह जोड़ें:
    <!-- 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. अपने प्रोजेक्ट में डिफ़ॉल्ट कंटेनर फ़ाइल जोड़ना

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

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

  1. Google Tag Manager के वेब इंटरफ़ेस में साइन इन करें.
  2. उस कंटेनर का वर्शन चुनें जिसे आपको डाउनलोड करना है.
  3. कंटेनर बाइनरी को फिर से पाने के लिए, डाउनलोड करें बटन पर क्लिक करें.
  4. डाउनलोड की गई कंटेनर बाइनरी फ़ाइल को अपने प्रोजेक्ट में रॉ रिसॉर्स के तौर पर जोड़ें.
    1. अगर <project-root>/res/ में raw सब-फ़ोल्डर मौजूद नहीं है, तो इसे बनाएं.
    2. अगर ज़रूरी हो, तो कंटेनर बाइनरी फ़ाइल का नाम बदलें. इसमें सिर्फ़ अंग्रेज़ी के छोटे अक्षर, अंक, और अंडरस्कोर होते हैं.
    3. कंटेनर बाइनरी फ़ाइल को <project-root>/res/raw फ़ोल्डर में कॉपी करें.

हमारा सुझाव है कि आप बाइनरी फ़ाइल का इस्तेमाल करें. हालांकि, अगर आपके कंटेनर में कोई नियम या टैग मौजूद नहीं हैं, तो आपके पास एक सामान्य JSON फ़ाइल इस्तेमाल करने का विकल्प है.

3. Google Tag Manager शुरू करना

अपने ऐप्लिकेशन में Google Tag Manager शुरू करने के लिए:

  1. TagManager सिंगलटन पाएं:
    TagManager tagManager = TagManager.getInstance(this);
    
  2. किसी कंटेनर को लोड करने का अनुरोध करने के लिए, TagManager सिंगलटन का इस्तेमाल करें. इसमें Google Tag Manager का कंटेनर आईडी और डिफ़ॉल्ट कंटेनर फ़ाइल शामिल करें. कंटेनर आईडी अंग्रेज़ी के बड़े अक्षरों में होना चाहिए. साथ ही, वह Google Tag Manager के वेब इंटरफ़ेस में मौजूद कंटेनर आईडी से एग्ज़ैक्ट मैच होना चाहिए. loadContainerPreferNonDefault() के कॉल को ब्लॉक नहीं किया जा रहा है और इससे PendingResult दिखेगा:
    PendingResult<ContainerHolder> pending =
            tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
            R.raw.defaultcontainer_binary);
    
  3. लोड होने या समय खत्म होने के बाद, ContainerHolder को दिखाने के लिए ResultCallback का इस्तेमाल करें:
    // 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 सिंगलटन बनाना

    आपको अपना ऐप्लिकेशन इस्तेमाल करने पर, हर बार ContainerHolder का सिर्फ़ एक इंस्टेंस रखना चाहिए. इसलिए, ऊपर दिए गए उदाहरण में, ContainerHolder इंस्टेंस का ऐक्सेस मैनेज करने के लिए, ContainerHolderSingleton यूटिलिटी क्लास का इस्तेमाल किया गया है. यहां बताया गया है कि ContainerHolderSingleton क्लास कैसी दिखती है:

    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. कंटेनर से कॉन्फ़िगरेशन वैल्यू फ़ेच करना

कंटेनर लोड होने के बाद, किसी भी Container.get<type>() तरीके का इस्तेमाल करके, कॉन्फ़िगरेशन वैल्यू वापस पाई जा सकती हैं. कॉन्फ़िगरेशन वैल्यू, Google Tag Manager के वैल्यू कलेक्शन वैरिएबल का इस्तेमाल करके तय की जाती हैं. उदाहरण के लिए, नीचे दिया गया तरीका उस सबसे नए रंग को फिर से हासिल करता है जिसमें हमने यूज़र इंटरफ़ेस (यूआई) एलिमेंट में इस्तेमाल करने का फ़ैसला लिया है और उसे एक पूर्णांक के रूप में लौटाता है:

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

कंटेनर से रंग का नाम वापस पाने के लिए, यह कोड दो काम करता है:

  1. ContainerHolder.getContainer() का इस्तेमाल करके, ContainerHolder से Container लेता है.
  2. रंग की वैल्यू पाने के लिए, Container.getString(key) का इस्तेमाल करें. वहीं, आपने Google Tag Manager के वेब इंटरफ़ेस में कुंजी और वैल्यू तय की है.

5. इवेंट और वैल्यू को dataLayer में पुश करना

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

dataLayer में वैल्यू पुश करना

dataLayer, परसिस्टेंस की एक लेयर देता है. इसका इस्तेमाल करके, उन की-वैल्यू पेयर को स्टोर किया जा सकता है जिनका इस्तेमाल आपको अपने ऐप्लिकेशन के दूसरे हिस्सों में या Google Tag Manager टैग में इनपुट के तौर पर करना चाहिए.

dataLayer पर कोई वैल्यू पुश करने के लिए, यह पैटर्न अपनाएं:

  1. DataLayer सिंगलटन पाएं:
    DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
    
  2. इवेंट को पुश करने के लिए, DataLayer.push() का इस्तेमाल करें:
    // Put the image_name into the data layer for future use.
    TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
    

dataLayer से वैल्यू पाने के लिए, DataLayer.get(key) का इस्तेमाल करें.

इवेंट को dataLayer में पुश करना

इवेंट को dataLayer में पुश करने पर, आपको अपने ऐप्लिकेशन कोड को उन टैग से अलग करने की सुविधा मिलती है जिन्हें उन इवेंट की वजह से फ़ायर किया जा सकता है.

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

किसी इवेंट को dataLayer में पुश करने के लिए, इस पैटर्न का पालन करें:

  1. DataLayer सिंगलटन पाएं:
    DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
    
  2. इवेंट को पुश करने के लिए, DataLayer.pushEvent() का इस्तेमाल करें:
    dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
    

    DataLayer.mapOf(), एक यूटिलिटी तरीका है. इसका इस्तेमाल आसानी से की-वैल्यू पेयर का मैप जनरेट करने में किया जा सकता है. इससे, इवेंट पुश किए जाने के समय dataLayer अपडेट हो जाएगा.

6. पूर्वावलोकन, डीबग करना और प्रकाशित करना

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

झलक देखी जा रही है

अपने कंटेनर के किसी वर्शन की झलक देखने के लिए, यह तरीका अपनाएं:

  1. इस झलक Activity को अपनी AndroidManifest फ़ाइल में जोड़ा जा रहा है:
    <!--  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>
    

    अपने ऐप्लिकेशन के पैकेज का नाम शामिल करने के लिए इस पंक्ति में बदलाव करना न भूलें:

    <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
    
  2. Google Tag Manager के वेब इंटरफ़ेस में झलक का लिंक जनरेट करें
    1. Google Tag Manager में साइन इन करना
    2. झलक देखने के लिए कंटेनर का वर्शन चुनें
    3. झलक देखें बटन पर क्लिक करें
    4. अपने ऐप्लिकेशन के पैकेज का नाम डालें और झलक शुरू करें लिंक जनरेट करें पर क्लिक करें
  3. अपना ऐप्लिकेशन लॉन्च करने के लिए, जनरेट किए गए लिंक या क्यूआर कोड का इस्तेमाल करें
  4. वेब इंटरफ़ेस में, झलक देखें लिंक जनरेट करें विकल्प से जनरेट किए गए लिंक पर जाकर, 'झलक देखें' मोड से बाहर निकला जा सकता है.

डीबग करना

अगर आपको कंटेनर लागू करने से जुड़ी समस्या हल करनी है, तो 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);

कॉन्टेंट पब्लिश करना

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

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

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

कंटेनर को रीफ़्रेश करना

डिफ़ॉल्ट रूप से, आपका कंटेनर हर 12 घंटे में रीफ़्रेश होने लायक हो जाता है. कंटेनर को मैन्युअल तौर पर रीफ़्रेश करने के लिए, ContainerHolder.refresh() का इस्तेमाल करें:

ContainerHolderSingleton.getContainerHolder().refresh();

यह एक एसिंक्रोनस कॉल है जो तुरंत वापस नहीं होगी. नेटवर्क ट्रैफ़िक को कम करने के लिए, refresh() को हर 15 मिनट में सिर्फ़ एक बार कॉल किया जा सकता है. ऐसा न करने पर, कॉल नहीं किया जा सकेगा.