परिचय
Google Tag Manager की मदद से डेवलपर अपने मोबाइल ऐप्लिकेशन में कॉन्फ़िगरेशन वैल्यू बदल सकते हैं Google Tag Manager इंटरफ़ेस का इस्तेमाल करके, ऐप्लिकेशन बाइनरी को फिर से बनाने और फिर से सबमिट करने की ज़रूरत नहीं है के तौर पर कैसे इस्तेमाल किया जा सकता है.
यह आपके ऐप्लिकेशन में मौजूद ऐसे किसी भी कॉन्फ़िगरेशन मान या फ़्लैग को प्रबंधित करने के लिए उपयोगी है जिसकी आपको ज़रूरत पड़ सकती है जिसमें ये बदलाव शामिल हैं:
- कई यूज़र इंटरफ़ेस (यूआई) सेटिंग और डिसप्ले स्ट्रिंग
- आपके ऐप्लिकेशन में दिखाए जाने वाले विज्ञापनों के साइज़, जगह या टाइप
- गेम की कई सेटिंग
नियमों का इस्तेमाल करके, रनटाइम के दौरान कॉन्फ़िगरेशन वैल्यू का भी आकलन किया जा सकता है. इससे डाइनैमिक को चालू किया जा सकता है कॉन्फ़िगरेशन, जैसे कि:
- विज्ञापन बैनर का साइज़ तय करने के लिए, स्क्रीन साइज़ का इस्तेमाल करना
- यूज़र इंटरफ़ेस (यूआई) एलिमेंट को कॉन्फ़िगर करने के लिए, भाषा और जगह की जानकारी का इस्तेमाल करना
Google TagManager, कन्वर्ज़न ट्रैकिंग टैग और पिक्सल को डाइनैमिक तौर पर लागू करने की सुविधा को भी चालू करता है. का इस्तेमाल करें. डेवलपर, ज़रूरी इवेंट को डेटा लेयर में पुश कर सकते हैं और बाद में यह तय कर सकते हैं कि ट्रैकिंग टैग या पिक्सेल सक्रिय किए जाने चाहिए.
आरंभ करने से पहले
इस शुरुआती गाइड को शुरू करने से पहले, नीचे दिए गए चरणों को पूरा करें:
- Android SDK टूल इंस्टॉल करें
- Google Play Services का SDK टूल डाउनलोड करें
- Google Tag Manager खाता बनाएं
- Google Tag Manager कंटेनर को कॉन्फ़िगर करना
इन चरणों को पूरा करने के बाद, इस गाइड के बाकी हिस्से में आपको अपने Android ऐप्लिकेशन में Google Tag Manager को कॉन्फ़िगर करके उसका इस्तेमाल करें.
शुरू करें
इस शुरुआती निर्देश की मदद से, आपको यह पता चलेगा कि कैसे:
- अपने प्रोजेक्ट में Google Tag Manager जोड़ना
- अपने ऐप्लिकेशन में Tag Manager शुरू करना
- Tag Manager कंटेनर से कॉन्फ़िगरेशन वैल्यू पाना
- वैल्यू और इवेंट को
dataLayer
में भेजें - अपने कंटेनर की झलक देखना, उसे डीबग करना, और पब्लिश करना
इस गाइड में, Cute Animals
से मिले कोड स्निपेट इस्तेमाल किए गए हैं
सैंपल ऐप्लिकेशन, जो
Google Play Services का SDK टूल.
इस प्रोजेक्ट का पूरा सोर्स यहां उपलब्ध है: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
.
1. अपने प्रोजेक्ट में Google Tag Manager जोड़ना
अपने प्रोजेक्ट में Google Tag Manager जोड़ने के लिए:
- Google Play Services SDK टूल सेट अप करें.
- अगर के बजाय IDE का इस्तेमाल किया जाता है
Android Studio का इस्तेमाल करने पर, ये अनुमतियां जोड़ें:
AndroidManifest.xml
फ़ाइल:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- को सक्षम करने के लिए
Google Analytics रिसीवर को कॉल करने के लिए
InstallReferrerReceiver
अभियान डेटा सेट करने के लिए, उसमें निम्न जोड़ें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 आपके ऐप्लिकेशन की पहली बार में चलाए जाने पर, डिफ़ॉल्ट कंटेनर का इस्तेमाल करता है. डिफ़ॉल्ट जैसे ही ऐप्लिकेशन नए कंटेनर को फिर से नेटवर्क.
डाउनलोड करने और अपने ऐप्लिकेशन में डिफ़ॉल्ट कंटेनर बाइनरी जोड़ने के लिए:
- Google Tag Manager के वेब इंटरफ़ेस में साइन इन करें.
- उस कंटेनर का वर्शन चुनें जिसे आपको डाउनलोड करना है.
- कंटेनर बाइनरी को फिर से पाने के लिए, डाउनलोड करें बटन पर क्लिक करें.
- डाउनलोड की गई कंटेनर बाइनरी फ़ाइल को अपने प्रोजेक्ट में, रॉ रिसॉर्स के तौर पर जोड़ें.
- अगर
raw
सब-फ़ोल्डर<project-root>/res/
मौजूद नहीं है, इसे बनाएं. - अगर ज़रूरी हो, तो कंटेनर बाइनरी फ़ाइल का नाम बदलें. इसमें सिर्फ़ यह शामिल है अंग्रेज़ी के छोटे अक्षरों, अंकों, और अंडरस्कोर का इस्तेमाल करें.
- कंटेनर बाइनरी फ़ाइल को फ़ोल्डर में कॉपी करें
<project-root>/res/raw
.
- अगर
हालांकि, अगर आपके कंटेनर में नियम या टैग नहीं हैं, तो बाइनरी फ़ाइल का इस्तेमाल करने का सुझाव दिया जाता है, इसके बजाय, एक सामान्य JSON फ़ाइल का इस्तेमाल किया जा सकता है.
3. Google Tag Manager शुरू करना
अपने ऐप्लिकेशन में Google Tag Manager शुरू करने के लिए:
TagManager
का सिंगलटन पाएं:TagManager tagManager = TagManager.getInstance(this);
- कंटेनर को लोड करने का अनुरोध करने के लिए,
TagManager
सिंगलटन का इस्तेमाल करें. इससे यह पता चलेगा कि Google Tag Manager का कंटेनर आईडी और आपका डिफ़ॉल्ट कंटेनर फ़ाइल से लिए जाते हैं. कंटेनर आईडी, अपरकेस में होना चाहिए. साथ ही, यह Google टैग में मौजूद कंटेनर आईडी से पूरी तरह मैच करना चाहिए मैनेजर वेब इंटरफ़ेस.loadContainerPreferNonDefault()
पर किया गया कॉल ब्लॉक नहीं हो रहा है और यहPendingResult
:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- किसी
ResultCallback
ContainerHolder
लोड होने या उसका समय खत्म होने पर:// 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
का सिर्फ़ एक इंस्टेंस बनाए रखना चाहिए का इस्तेमाल करें. यही वजह है कि ऊपर दिया गया उदाहरणContainerHolderSingleton
यूटिलिटी क्लास का इस्तेमाल करता हैContainerHolder
इंस्टेंस का ऐक्सेस मैनेज करने के लिए. यहाँ बताया गया है कि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)); }
यह कोड कंटेनर से रंग का नाम पाने के लिए दो काम करता है:
- इसका इस्तेमाल करके
ContainerHolder
सेContainer
लेता हैContainerHolder.getContainer()
. - इसका इस्तेमाल करके रंग की वैल्यू हासिल करता है
Container.getString(key)
, जहां आपके पास है ने Google टैग मैनेजर वेब इंटरफ़ेस में कुंजी और मान निर्धारित किया है.
5. इवेंट और वैल्यू को लेवल पर भेजना
Google Tag Manager एक dataLayer
भी देता है, जिसमें आप जानकारी भेज सकते हैं
आपके ऐप्लिकेशन के बारे में, जिसे आपके ऐप्लिकेशन के अन्य हिस्सों में पढ़ा जा सकता है या टैग सक्रिय करने के लिए इस्तेमाल किया जा सकता है
जिसे आपने Google Tag Manager के वेब इंटरफ़ेस में कॉन्फ़िगर किया हो.
डेटा को बारी-बारी से अपलोड करना
dataLayer
परसिस्टेंस की एक लेयर होती है, जिसका इस्तेमाल किया जा सकता है
की-वैल्यू पेयर को स्टोर करने के लिए, जिनका इस्तेमाल आपको ऐप्लिकेशन के अन्य हिस्सों में करना है या
के इनपुट के तौर पर शामिल हैं.
dataLayer
पर कोई वैल्यू पुश करने के लिए, इस पैटर्न को अपनाएं:
-
DataLayer
सिंगलटन:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- का उपयोग करके इवेंट पुश करें
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
में पुश करने से आप अपने ऐप्लिकेशन कोड को इससे अलग कर सकते हैं
टैग करते हैं, जिन्हें शायद आप उन इवेंट की प्रतिक्रिया में सक्रिय करना चाहें.
उदाहरण के लिए, अपने ऐप्लिकेशन में Google Analytics स्क्रीन व्यू ट्रैकिंग कॉल को हार्ड-कोड करने के बजाय,
आप स्क्रीन इवेंट को dataLayer
पर पुश कर सकते हैं और
Google Tag Manager का वेब इंटरफ़ेस. इससे आपको उस टैग को संशोधित करने अथवा जोड़ने की सुविधा मिलती है
अतिरिक्त टैग जो ऐप्लिकेशन कोड को अपडेट किए बिना, स्क्रीन इवेंट का जवाब देते हैं.
किसी इवेंट को dataLayer
पर पुश करने के लिए, इस पैटर्न को फ़ॉलो करें:
-
DataLayer
सिंगलटन:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- का उपयोग करके इवेंट पुश करें
DataLayer.pushEvent()
:dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
DataLayer.mapOf()
एक उपयोगिता तरीका है, जिसका इस्तेमाल करके आप मैप को आसानी से जनरेट कर सकते हैं की-वैल्यू पेयर, जो इवेंट पुश होने परdataLayer
को अपडेट करेंगे.
6. झलक देखना, डीबग करना, और प्रकाशित करना
अपने कंटेनर के वर्शन को पब्लिश करने से पहले, आपको उसकी झलक देखनी होगी, ताकि यह पक्का किया जा सके कि वह काम करता है उम्मीद के मुताबिक. Google Tag Manager की मदद से, अपने कंटेनर के वर्शन की झलक देखी जा सकती है वेब इंटरफ़ेस में लिंक और क्यूआर कोड जनरेट करें और अपने ऐप्लिकेशन को खोलने के लिए उनका इस्तेमाल करें. किसी भी अनचाहे व्यवहार को डीबग करने के लिए, वर्बोज़ लॉगिंग मोड को भी चालू किया जा सकता है.
झलक देखी जा रही है
अपने कंटेनर के किसी वर्शन की झलक देखने के लिए, यह तरीका अपनाएं:
- अपनी
AndroidManifest
फ़ाइल में इस झलकActivity
को जोड़ा जा रहा है:<!-- 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" />
- Google Tag Manager के वेब इंटरफ़ेस में झलक का लिंक जनरेट करना
- Google Tag Manager में साइन इन करना
- झलक देखने के लिए कंटेनर वर्शन चुनें
- झलक देखें बटन पर क्लिक करें
- अपने ऐप्लिकेशन के पैकेज का नाम डालें और झलक शुरू करने का लिंक जनरेट करें पर क्लिक करें
- अपना ऐप्लिकेशन लॉन्च करने के लिए, जनरेट किए गए लिंक या क्यूआर कोड का इस्तेमाल करें
- झलक दिखाने वाला लिंक जनरेट करें से जनरेट किए गए लिंक का इस्तेमाल करके, 'झलक देखें' मोड को बंद किया जा सकता है विकल्प चुना गया है.
डीबग करना
अगर आपको कंटेनर लागू करने से जुड़ी समस्या को हल करना है, तो कॉल करके वर्बोस लॉगिंग चालू करें
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);
Publishing
अपने कंटेनर की झलक देखने और यह पुष्टि करने के बाद कि वह सही तरीके से काम कर रहा है, आपके पास ये काम करने का विकल्प है अपना कंटेनर पब्लिश करें. आपका कंटेनर कॉन्फ़िगरेशन मान, टैग और इवेंट अगली बार जब भी उपयोगकर्ताओं के लिए लाइव होंगे, कंटेनर रीफ़्रेश किए जाते हैं. कंटेनर को रीफ़्रेश करने के बारे में ज़्यादा जानें.
बेहतर कॉन्फ़िगरेशन
नीचे दिए गए सेक्शन में कॉन्फ़िगरेशन के उन बेहतर विकल्पों के बारे में बताया गया है जिनका इस्तेमाल करके, Google Tag Manager को लागू करना.
कंटेनर को रीफ़्रेश करना
डिफ़ॉल्ट रूप से, आपका कंटेनर हर 12 घंटे में रीफ़्रेश होने के लिए तैयार हो जाता है. मैन्युअल रूप से रीफ़्रेश करने के लिए
कंटेनर, का उपयोग करें
ContainerHolder.refresh()
:
ContainerHolderSingleton.getContainerHolder().refresh();
यह एक एसिंक्रोनस कॉल है, जिसका जवाब तुरंत नहीं मिलेगा. नेटवर्क ट्रैफ़िक को कम करने के लिए, refresh()
हर 15 मिनट में सिर्फ़ एक बार कॉल किया जाएगा, नहीं तो कोई कार्रवाई नहीं होगी.