บทนำ
Google Tag Manager ช่วยให้นักพัฒนาซอฟต์แวร์เปลี่ยนการกำหนดค่าในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ได้ ใช้อินเทอร์เฟซ Google Tag Manager ได้โดยไม่ต้องสร้างและส่งไฟล์ไบนารีของแอปพลิเคชันอีกครั้ง ในตลาดแอป
ซึ่งจะมีประโยชน์ในการจัดการค่าของการกำหนดค่าหรือแฟล็กในแอปพลิเคชันที่คุณอาจต้องใช้ เปลี่ยนแปลงได้ในอนาคต ซึ่งรวมถึง
- การตั้งค่า UI ต่างๆ และสตริงที่แสดง
- ขนาด สถานที่ตั้ง หรือประเภทของโฆษณาที่แสดงในแอปพลิเคชันของคุณ
- การตั้งค่าเกมต่างๆ
หรืออาจประเมินค่าการกําหนดค่าขณะรันไทม์โดยใช้กฎ เพื่อเปิดใช้แบบไดนามิก การกำหนดค่า เช่น
- การใช้ขนาดหน้าจอเพื่อกำหนดขนาดของแบนเนอร์โฆษณา
- การใช้ภาษาและตำแหน่งเพื่อกำหนดค่าองค์ประกอบ UI
Google TagManager ยังเปิดใช้งานการติดตั้งใช้งานแท็กและพิกเซลการติดตามแบบไดนามิกใน แอปพลิเคชัน นักพัฒนาซอฟต์แวร์สามารถพุชเหตุการณ์สำคัญเข้าไปในชั้นข้อมูลและตัดสินใจในภายหลังว่าเหตุการณ์ใด แท็กหรือพิกเซลการติดตามควรเริ่มทำงาน
ก่อนที่คุณจะเริ่ม
ทำตามขั้นตอนต่อไปนี้ก่อนเริ่มคู่มือเริ่มต้นใช้งาน
- ติดตั้ง Android SDK
- ดาวน์โหลด SDK บริการ Google Play
- สร้างบัญชี Google Tag Manager
- กำหนดค่าคอนเทนเนอร์ Google Tag Manager
เมื่อคุณทำตามขั้นตอนเหล่านี้เสร็จแล้ว ส่วนที่เหลือของคู่มือนี้จะอธิบายวิธีการ กำหนดค่าและใช้ Google Tag Manager ภายในแอปพลิเคชัน Android
เริ่มต้นใช้งาน
หลังจากทำตามคู่มือเริ่มต้นใช้งานนี้ คุณจะเข้าใจวิธีการ
- เพิ่ม Google Tag Manager ลงในโปรเจ็กต์
- เริ่มต้น Tag Manager ในแอปพลิเคชัน
- รับการกําหนดค่าจากคอนเทนเนอร์ Tag Manager
- พุชค่าและเหตุการณ์ลงใน
dataLayer
- แสดงตัวอย่าง แก้ไขข้อบกพร่อง และนำคอนเทนเนอร์ไปใช้จริง
คู่มือนี้ใช้ข้อมูลโค้ดจาก Cute Animals
แอปพลิเคชันตัวอย่างที่รวมอยู่ใน
SDK บริการ Google Play
แหล่งที่มาที่สมบูรณ์ของโปรเจ็กต์นี้มีอยู่ใน: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
1. การเพิ่ม Google Tag Manager ลงในโปรเจ็กต์
วิธีเพิ่ม Google Tag Manager ในโปรเจ็กต์
- ตั้งค่า SDK บริการ Google Play
- หากคุณใช้ IDE อื่นที่ไม่ใช่
Android Studio ให้เพิ่มสิทธิ์ต่อไปนี้ลงใน
AndroidManifest.xml
ไฟล์:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- เมื่อต้องการเปิดใช้งาน
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 ใช้คอนเทนเนอร์เริ่มต้นในการเรียกใช้แอปพลิเคชันครั้งแรก ค่าเริ่มต้น คอนเทนเนอร์จะหยุดทำงานทันทีที่แอปสามารถดึงข้อมูลคอนเทนเนอร์ใหม่ผ่าน เครือข่าย
วิธีดาวน์โหลดและเพิ่มไบนารีของคอนเทนเนอร์เริ่มต้นลงในแอปพลิเคชัน
- ลงชื่อเข้าใช้อินเทอร์เฟซเว็บของ 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);
การสร้าง Singleton สำหรับคอนเทนเนอร์
คุณควรเก็บ
ContainerHolder
เพียง 1 อินสแตนซ์ต่อการเรียกใช้ แอปพลิเคชัน นั่นคือสาเหตุที่ตัวอย่างด้านบนใช้คลาสยูทิลิตี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 ตัวอย่างเช่น วิธีการต่อไปนี้
จะดึงสีล่าสุดที่เราตัดสินใจว่าจะใช้ในองค์ประกอบ UI ใดและแสดงเป็น
จำนวนเต็ม:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
โค้ดนี้ทำหน้าที่ 2 อย่างเพื่อดึงชื่อสีจากคอนเทนเนอร์
- รับ
Container
จากContainerHolder
โดยใช้ContainerHolder.getContainer()
- รับค่าสีโดยใช้
Container.getString(key)
ซึ่งมี กำหนดคีย์และค่าในอินเทอร์เฟซเว็บ Google เครื่องจัดการแท็กแล้ว
5. การพุชเหตุการณ์และค่าไปยัง dataLayer
นอกจากนี้ Google Tag Manager ยังมี dataLayer
ไว้อีกด้วย ซึ่งคุณสามารถพุชข้อมูลได้
เกี่ยวกับแอปพลิเคชันที่สามารถอ่านในส่วนอื่นๆ ของแอปพลิเคชันหรือใช้เพื่อเริ่มการทำงานของแท็ก
ที่คุณได้กำหนดค่าในอินเทอร์เฟซเว็บของ Google Tag Manager
การพุชค่าไปยังชั้นข้อมูล
dataLayer
จะช่วยเพิ่มความต่อเนื่องให้คุณได้ลองใช้
ในการจัดเก็บคู่คีย์-ค่าที่คุณอาจต้องการใช้ในส่วนอื่นๆ ของแอปพลิเคชัน หรือ
เป็นอินพุตสำหรับแท็ก Google Tag Manager
หากต้องการพุชค่าไปยัง 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
การพุชเหตุการณ์ไปยัง 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 ช่วยให้คุณดูตัวอย่างคอนเทนเนอร์เวอร์ชันต่างๆ ได้ โดยการสร้างลิงก์และโค้ด QR ในเว็บอินเทอร์เฟซและใช้ลิงก์เพื่อเปิดแอปพลิเคชันของคุณ คุณยังสามารถเปิดใช้โหมดการบันทึกที่มีข้อมูลขนาดใหญ่เพื่อแก้ไขข้อบกพร่องของการทำงานที่ไม่คาดคิดได้อีกด้วย
กำลังแสดงตัวอย่าง
หากต้องการดูตัวอย่างเวอร์ชันคอนเทนเนอร์ ให้ทำตามขั้นตอนต่อไปนี้
- กำลังเพิ่มหน้าตัวอย่าง
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" />
- สร้างลิงก์แสดงตัวอย่างในอินเทอร์เฟซเว็บของ Google เครื่องจัดการแท็ก
- ลงชื่อเข้าใช้ 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);
การเผยแพร่
หลังจากที่คุณได้ดูตัวอย่างคอนเทนเนอร์ และยืนยันว่าคอนเทนเนอร์ทำงานได้ตามที่ต้องการแล้ว คุณสามารถทำสิ่งต่อไปนี้ นำคอนเทนเนอร์ไปใช้จริง บัญชี ค่าของการกำหนดค่าคอนเทนเนอร์ แท็ก และเหตุการณ์จึงจะพร้อมใช้งานสำหรับผู้ใช้ในครั้งถัดไป มีการรีเฟรชคอนเทนเนอร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการรีเฟรชคอนเทนเนอร์
การกำหนดค่าขั้นสูง
ส่วนต่อไปนี้จะอธิบายตัวเลือกการกำหนดค่าขั้นสูงที่คุณต้องการใช้ในการกำหนดค่า การใช้ Google Tag Manager
การรีเฟรชคอนเทนเนอร์
โดยค่าเริ่มต้น คอนเทนเนอร์ของคุณจะมีสิทธิ์รีเฟรชทุก 12 ชั่วโมง วิธีรีเฟรชด้วยตนเอง
คอนเทนเนอร์ ให้ใช้
ContainerHolder.refresh()
ContainerHolderSingleton.getContainerHolder().refresh();
การโทรนี้เป็นแบบไม่พร้อมกันซึ่งจะไม่ส่งคืนทันที เพื่อลดการจราจรของข้อมูลในเครือข่าย refresh()
อาจ
ถูกเรียกเพียง 1 ครั้งในทุกๆ 15 นาที ไม่เช่นนั้นจะไม่มีการใช้งาน