Android v4 - শুরু করা

ভূমিকা

Google ট্যাগ ম্যানেজার ডেভেলপারদের তাদের মোবাইল অ্যাপ্লিকেশানে কনফিগারেশন মান পরিবর্তন করতে সক্ষম করে Google ট্যাগ ম্যানেজার ইন্টারফেস ব্যবহার করে অ্যাপ মার্কেটপ্লেসগুলিতে অ্যাপ্লিকেশন বাইনারিগুলি পুনঃনির্মাণ এবং পুনরায় জমা না করেই৷

এটি আপনার অ্যাপ্লিকেশনের যেকোনো কনফিগারেশন মান বা পতাকা পরিচালনার জন্য দরকারী যা আপনাকে ভবিষ্যতে পরিবর্তন করতে হতে পারে, যার মধ্যে রয়েছে:

  • বিভিন্ন UI সেটিংস এবং ডিসপ্লে স্ট্রিং
  • মাপ, অবস্থান, বা আপনার অ্যাপ্লিকেশনে পরিবেশিত বিজ্ঞাপনের ধরন
  • বিভিন্ন গেম সেটিংস

নিয়ম ব্যবহার করে রানটাইমে কনফিগারেশন মানগুলিও মূল্যায়ন করা যেতে পারে, গতিশীল কনফিগারেশন সক্ষম করে যেমন:

  • বিজ্ঞাপন ব্যানারের আকার নির্ধারণ করতে পর্দার আকার ব্যবহার করা
  • UI উপাদানগুলি কনফিগার করতে ভাষা এবং অবস্থান ব্যবহার করে৷

Google TagManager এছাড়াও অ্যাপ্লিকেশনগুলিতে ট্র্যাকিং ট্যাগ এবং পিক্সেলগুলির গতিশীল বাস্তবায়ন সক্ষম করে৷ বিকাশকারীরা গুরুত্বপূর্ণ ইভেন্টগুলিকে একটি ডেটা স্তরে ঠেলে দিতে পারে এবং পরে সিদ্ধান্ত নিতে পারে কোন ট্র্যাকিং ট্যাগ বা পিক্সেলগুলি ফায়ার করা উচিত৷

তুমি শুরু করার আগে

আপনি এই শুরু করার নির্দেশিকাটি শুরু করার আগে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

একবার আপনি এই পদক্ষেপগুলি সম্পন্ন করার পরে, এই নির্দেশিকাটির অবশিষ্টাংশ আপনাকে আপনার Android অ্যাপ্লিকেশনের মধ্যে কীভাবে Google ট্যাগ ম্যানেজার কনফিগার করতে হবে এবং ব্যবহার করতে হবে তার মাধ্যমে নিয়ে যাবে৷

শুরু হচ্ছে

এই শুরু করার নির্দেশিকা অনুসরণ করার পরে, আপনি কীভাবে করবেন তা বুঝতে পারবেন:

এই গাইডটি Google Play Services SDK এর সাথে অন্তর্ভুক্ত Cute Animals নমুনা অ্যাপ্লিকেশন থেকে কোড স্নিপেট ব্যবহার করে। এই প্রকল্পের সম্পূর্ণ উৎস এখানে উপলব্ধ: < android-sdk-directory >/extras/google/google_play_services/tagmanager/cuteanimals

1. আপনার প্রোজেক্টে Google ট্যাগ ম্যানেজার যোগ করা

আপনার প্রকল্পে Google ট্যাগ ম্যানেজার যোগ করতে:

  1. Google Play পরিষেবা SDK সেট আপ করুন
  2. আপনি যদি অ্যান্ড্রয়েড স্টুডিও ছাড়া অন্য কোনো আইডিই ব্যবহার করেন, তাহলে AndroidManifest.xml ফাইলে নিম্নলিখিত অনুমতিগুলি যোগ করুন:
    <!-- For TagManager SDK -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  3. প্রচারের ডেটা সেট করতে 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 ট্যাগ ম্যানেজার আপনার অ্যাপ্লিকেশনের প্রথম রানে একটি ডিফল্ট ধারক ব্যবহার করে। অ্যাপটি নেটওয়ার্কে একটি নতুন কন্টেইনার পুনরুদ্ধার করতে সক্ষম হওয়ার সাথে সাথেই ডিফল্ট কন্টেইনারটি ব্যবহার করা বন্ধ হয়ে যাবে।

আপনার অ্যাপ্লিকেশনে একটি ডিফল্ট ধারক বাইনারি ডাউনলোড এবং যোগ করতে:

  1. গুগল ট্যাগ ম্যানেজার ওয়েব ইন্টারফেসে সাইন ইন করুন।
  2. আপনি যে ধারকটি ডাউনলোড করতে চান তার সংস্করণটি নির্বাচন করুন।
  3. কন্টেইনার বাইনারি পুনরুদ্ধার করতে ডাউনলোড বোতামে ক্লিক করুন।
  4. একটি কাঁচা সম্পদ হিসাবে আপনার প্রকল্পে ডাউনলোড করা কন্টেইনার বাইনারি ফাইল যোগ করুন।
    1. যদি <project-root>/res/ এর অধীনে raw সাবফোল্ডারটি বিদ্যমান না থাকে তবে এটি তৈরি করুন।
    2. প্রয়োজনে ধারক বাইনারি ফাইলের নাম পরিবর্তন করুন। এটি শুধুমাত্র ছোট হাতের অক্ষর, অঙ্ক এবং আন্ডারস্কোর নিয়ে গঠিত।
    3. কন্টেইনার বাইনারি ফাইলটিকে <project-root>/res/raw ফোল্ডারে কপি করুন।

যদিও বাইনারি ফাইল ব্যবহার করা বাঞ্ছনীয়, যদি আপনার কন্টেইনারে নিয়ম বা ট্যাগ না থাকে, তাহলে আপনি পরিবর্তে একটি সাধারণ JSON ফাইল ব্যবহার করতে পারেন।

3. গুগল ট্যাগ ম্যানেজার শুরু করা হচ্ছে

আপনার অ্যাপ্লিকেশনে Google ট্যাগ ম্যানেজার শুরু করতে:

  1. TagManager singleton পান:
    TagManager tagManager = TagManager.getInstance(this);
    
  2. একটি কন্টেইনার লোড করার জন্য একটি অনুরোধ করতে TagManager সিঙ্গলটন ব্যবহার করুন, একটি Google ট্যাগ ম্যানেজার কন্টেইনার আইডি এবং সেইসাথে আপনার ডিফল্ট কন্টেইনার ফাইল উল্লেখ করুন। কন্টেইনার আইডিটি বড় হাতের হওয়া উচিত এবং Google ট্যাগ ম্যানেজার ওয়েব ইন্টারফেসে থাকা কন্টেইনার আইডির সাথে হুবহু মেলে৷ 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 ইনস্ট্যান্সে অ্যাক্সেস পরিচালনা করতে একটি 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 ট্যাগ ম্যানেজারের মান সংগ্রহের ভেরিয়েবল ব্যবহার করে সংজ্ঞায়িত করা হয়। উদাহরণস্বরূপ, নিম্নলিখিত পদ্ধতিটি একটি UI উপাদানের জন্য আমরা যে সর্বশেষ রঙটি ব্যবহার করার সিদ্ধান্ত নিয়েছি তা পুনরুদ্ধার করে এবং এটি একটি পূর্ণসংখ্যা হিসাবে ফেরত দেয়:

/**
 * 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 ট্যাগ ম্যানেজার ওয়েব ইন্টারফেসে কী এবং মান নির্ধারণ করেছেন।

5. ডেটা লেয়ারে ইভেন্ট এবং মান পুশ করা

Google ট্যাগ ম্যানেজার একটি dataLayer প্রদান করে, যেখানে আপনি আপনার অ্যাপ্লিকেশন সম্পর্কে তথ্য পুশ করতে পারেন যা আপনার অ্যাপ্লিকেশনের অন্যান্য অংশে পড়া যেতে পারে বা Google ট্যাগ ম্যানেজার ওয়েব ইন্টারফেসে আপনার কনফিগার করা ট্যাগগুলি ফায়ার করতে ব্যবহৃত হয়৷

ডেটা লেয়ারে মানগুলি পুশ করা

dataLayer অধ্যবসায়ের একটি স্তর প্রদান করে যা আপনি কী-মান জোড়া সংরক্ষণ করতে ব্যবহার করতে পারেন যা আপনি আপনার অ্যাপ্লিকেশনের অন্যান্য অংশে বা Google ট্যাগ ম্যানেজার ট্যাগের ইনপুট হিসাবে ব্যবহার করতে চান।

dataLayer একটি মান পুশ করতে, এই প্যাটার্নটি অনুসরণ করুন:

  1. DataLayer singleton পান:
    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 ইভেন্টগুলি পুশ করা আপনাকে ট্যাগগুলি থেকে আপনার অ্যাপ্লিকেশন কোড আলাদা করতে দেয় যা আপনি সেই ইভেন্টগুলির প্রতিক্রিয়া হিসাবে ফায়ার করতে চান৷

উদাহরণস্বরূপ, আপনার অ্যাপ্লিকেশনে হার্ড-কোডিং Google Analytics স্ক্রিনভিউ ট্র্যাকিং কলগুলির পরিবর্তে, আপনি স্ক্রীন ইভেন্টগুলিকে dataLayer লেয়ারে পুশ করতে পারেন এবং Google ট্যাগ ম্যানেজার ওয়েব ইন্টারফেসের মাধ্যমে আপনার ট্র্যাকিং ট্যাগগুলি সংজ্ঞায়িত করতে পারেন৷ এটি আপনাকে সেই ট্যাগটি সংশোধন করার নমনীয়তা দেয়, বা আপনার অ্যাপ্লিকেশন কোড আপডেট না করেই স্ক্রিন ইভেন্টগুলিতে প্রতিক্রিয়া জানায় এমন অতিরিক্ত ট্যাগ যুক্ত করে৷

dataLayer একটি ইভেন্ট পুশ করতে, এই প্যাটার্নটি অনুসরণ করুন:

  1. DataLayer singleton পান:
    DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
    
  2. DataLayer.pushEvent() :
    dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
    
    ব্যবহার করে ইভেন্টটি পুশ করুন

    DataLayer.mapOf() হল একটি ইউটিলিটি পদ্ধতি যা আপনি সহজেই কী-মানের জোড়ার একটি মানচিত্র তৈরি করতে ব্যবহার করতে পারেন যা ইভেন্টটি পুশ করার সাথে সাথে dataLayer আপডেট করবে।

6. পূর্বরূপ দেখা, ডিবাগিং, এবং প্রকাশনা

আপনার কন্টেইনারের একটি সংস্করণ প্রকাশ করার আগে, আপনি এটির পূর্বরূপ দেখতে চাইবেন যাতে এটি উদ্দেশ্য অনুযায়ী কাজ করে। Google ট্যাগ ম্যানেজার আপনাকে ওয়েব ইন্টারফেসে লিঙ্ক এবং QR কোড তৈরি করে এবং আপনার অ্যাপ্লিকেশন খুলতে ব্যবহার করে আপনার কন্টেইনারের সংস্করণগুলির পূর্বরূপ দেখার ক্ষমতা দেয়৷ আপনি কোনো অপ্রত্যাশিত আচরণ ডিবাগ করতে একটি ভার্বোস লগিং মোড সক্ষম করতে পারেন।

প্রিভিউ করা হচ্ছে

আপনার ধারকটির একটি সংস্করণের পূর্বরূপ দেখতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার 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" />
    
  2. Google ট্যাগ ম্যানেজার ওয়েব ইন্টারফেসে একটি পূর্বরূপ লিঙ্ক তৈরি করুন
    1. গুগল ট্যাগ ম্যানেজারে সাইন ইন করুন
    2. পূর্বরূপ দেখতে ধারক সংস্করণ নির্বাচন করুন
    3. প্রিভিউ বোতামে ক্লিক করুন
    4. আপনার অ্যাপ্লিকেশনের প্যাকেজের নাম লিখুন এবং জেনারেট প্রাকদর্শন শুরু করুন লিঙ্কে ক্লিক করুন
  3. আপনার অ্যাপ্লিকেশন চালু করতে জেনারেট করা লিঙ্ক বা QR কোড ব্যবহার করুন
  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 ট্যাগ ম্যানেজার বাস্তবায়নকে আরও কাস্টমাইজ করতে ব্যবহার করতে চান৷

কন্টেইনার রিফ্রেশ করা হচ্ছে

ডিফল্টরূপে, আপনার ধারক প্রতি 12 ঘন্টা রিফ্রেশ করার যোগ্য হয়ে ওঠে। ম্যানুয়ালি কন্টেইনার রিফ্রেশ করতে, ContainerHolder.refresh() ব্যবহার করুন :

ContainerHolderSingleton.getContainerHolder().refresh();

এটি একটি অ্যাসিঙ্ক্রোনাস কল যা অবিলম্বে ফিরে আসবে না। নেটওয়ার্ক ট্রাফিক কমাতে, refresh() প্রতি 15 মিনিটে একবার কল করা যেতে পারে, অন্যথায় এটি একটি নো-অপ হবে।