TagManager

คลาสสาธารณะ TagManager

นี่คือการใช้งาน Google Tag Manager (GTM) บนอุปกรณ์เคลื่อนที่ ตัวอย่างการใช้งาน:

 Container container = TagManager.getInstance(context).openContainer(myContainerId);
 String value = container.getString("myKey");

 DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
 dataLayer.push(DataLayer.mapOf("event", "openScreen", "screenName", "Main Page"));
คอนเทนเนอร์คือคอลเล็กชันของมาโคร แท็ก และกฎ ซึ่งจะสร้างขึ้นภายใน แอปพลิเคชัน GTM และมีการกำหนดรหัสคอนเทนเนอร์ รหัสคอนเทนเนอร์นี้คือรหัสที่ใช้ภายใน API นี้

คลาส Container มีวิธีเรียกค่าตามคีย์ กิจวัตร getBoolean(String), getDouble(String), getLong(String), getString(String) จะแสดงผลค่าปัจจุบันสำหรับคีย์ของมาโครคอลเล็กชันค่า โดยขึ้นอยู่กับกฎที่เชื่อมโยงกับคอนเทนเนอร์

ตัวอย่างเช่น หากคอนเทนเนอร์มีมาโครคอลเล็กชันค่าที่มีคีย์ speed ซึ่งมีค่าเป็น 32 และกฎที่เปิดใช้คือ Language คือ "en" และอีกมาโครเก็บค่าที่มีคีย์ speed ที่มีค่าคือ 45 และกฎที่เปิดใช้คือ Language ไม่ใช่ "en" การเรียกต่อไปนี้คือ

 container.getLong("speed")
จะแสดงผล 32 หากภาษาปัจจุบันของอุปกรณ์เป็นภาษาอังกฤษ หรือ 45 ในกรณีอื่นๆ

ชั้นข้อมูลเป็นแผนที่ที่มีข้อมูลทั่วไปเกี่ยวกับแอปพลิเคชัน คลาส DataLayer แสดงวิธีพุชและดึงข้อมูลจากชั้นข้อมูล การพุชคีย์ event ไปยังชั้นข้อมูลจะทำให้แท็กที่ตรงกับเหตุการณ์นี้เริ่มทํางาน

คอนเทนเนอร์เวอร์ชันเริ่มต้นมาพร้อมกับแอปพลิเคชัน ควรวางเป็นเนื้อหาที่มีชื่อ tagmanager/containerId โดย containerId เป็นรหัสคอนเทนเนอร์เดียวกันกับที่จะใช้ภายใน API นี้ เมื่อคุณเรียกใช้ openContainer(String, Container.Callback) ระบบจะแสดงผลคอนเทนเนอร์พร้อมกับกฎ/มาโครที่รวมกลุ่มเหล่านั้นไว้ คุณจะสร้างคอนเทนเนอร์ใน UI และใช้ปุ่มดาวน์โหลดเพื่อดาวน์โหลด

คุณสามารถแก้ไขคอนเทนเนอร์ใน UI และเผยแพร่เวอร์ชันใหม่ได้ ในกรณีดังกล่าว แอปบนอุปกรณ์เคลื่อนที่รีเฟรชคอนเทนเนอร์จากเครือข่ายในครั้งถัดไป (ปัจจุบันเปิดทุกๆ 12 ชั่วโมง) ก็จะได้รับการอัปเดตเวอร์ชันใหม่ดังกล่าว เมื่อคุณเรียกใช้กิจวัตร get... ระบบจะคำนวณค่าโดยใช้กฎล่าสุด

คอนเทนเนอร์ที่ดาวน์โหลดจะได้รับการบันทึกไว้ในเครื่อง เมื่อคุณเรียกใช้ openContainer(String, Container.Callback) คอนเทนเนอร์จะโหลดคอนเทนเนอร์เริ่มต้นก่อน แล้วจึงโหลดคอนเทนเนอร์ที่บันทึกไว้แบบไม่พร้อมกัน หากไม่พบเลยหรือหากเก่ากว่า 12 ชั่วโมง ระบบจะพยายามเรียกข้อมูลเวอร์ชันที่ใหม่กว่าจากเครือข่าย คุณดูสถานะของการโหลดแบบไม่พร้อมกันดังกล่าวได้โดยการส่ง Container.Callback ไปยัง openContainer(String, Container.Callback)

บางครั้งคุณอาจต้องการบล็อกจนกว่าคอนเทนเนอร์ที่ไม่ใช่ค่าเริ่มต้นจะพร้อมใช้งาน หรือจนกว่าคอนเทนเนอร์ใหม่ล่าสุดจะพร้อมใช้งาน ContainerOpener เป็นคลาสยูทิลิตีที่ช่วยคุณได้

เมื่อสร้างคอนเทนเนอร์เสร็จแล้ว ให้เรียก close()

สรุปข้อมูลชั้นเรียนที่ซ้อนกัน

ที่ปรับปรุงใหม่ TagManager.Logger อินเทอร์เฟซที่เรียบง่ายสําหรับการบันทึกข้อผิดพลาด/คําเตือน/ข้อมูล/การแก้ไขข้อบกพร่อง/การบันทึกแบบละเอียด
enum TagManager.RefreshMode โหมดรีเฟรชคอนเทนเนอร์

สรุปวิธีการสาธารณะ

คอนเทนเนอร์
getContainer(สตริง containerId)
บริบท
DataLayer
static TagManager
getInstance(บริบทบริบท)
ตัวบันทึก
TagManager.RefreshMode
คอนเทนเนอร์
openContainer(สตริง containerId, Container.Callback containerId)
void
void

วิธีการสาธารณะ

สาธารณะ คอนเทนเนอร์ getContainer (สตริง containerId)

แสดงผลคอนเทนเนอร์ที่เปิดอยู่ซึ่งเชื่อมโยงกับ containerId และแสดงผล null หากคอนเทนเนอร์ยังไม่เปิดอยู่

สาธารณะ บริบท getContext ()

แสดงผลบริบทที่บันทึกไว้ซึ่งเชื่อมโยงกับวัตถุนี้

สาธารณะ DataLayer getDataLayer ()

แสดงผลออบเจ็กต์ชั้นข้อมูลที่เครื่องจัดการแท็กใช้

สาธารณะ static TagManager getInstance (บริบท)

รับอินสแตนซ์ Singleton ของคลาส TagManager ซึ่งสร้างหากจำเป็น

สาธารณะ ตัวบันทึก getLogger ()

แสดงผลตัวบันทึกที่ Tag Manager ใช้อยู่

สาธารณะ TagManager.RefreshMode getRefreshMode ()

แสดงผลโหมดรีเฟรชที่ใช้สำหรับคอนเทนเนอร์ทั้งหมด

สาธารณะ คอนเทนเนอร์ openContainer (สตริง containerId, Container.Callback containerId)

แสดงผลคอนเทนเนอร์ ระบบจะเรียกโค้ดเรียกกลับเนื่องจากมีสิ่งต่างๆ เกิดขึ้นสำหรับคอนเทนเนอร์ อย่างน้อยที่สุด openContainer จะพยายามโหลดเวอร์ชันที่บันทึกไว้ของคอนเทนเนอร์ หากไม่มีเวอร์ชันที่บันทึกไว้ หรือหากเวอร์ชันที่บันทึกไว้ไม่ใช่เวอร์ชันล่าสุด จะพยายามโหลดจากเครือข่าย

โดยปกติแล้ว คอนเทนเนอร์ที่ส่งกลับจะว่างเปล่า แต่การโหลดจะเกิดขึ้นในเทรดแยกต่างหาก ดังนั้นอาจมีการรีเฟรชคอนเทนเนอร์ที่ส่งกลับมาก่อนที่จะส่งคืน หลังจากที่มีการส่งคืน หรืออาจไม่มีการรีเฟรชเลย (เช่น หากไม่มีการเชื่อมต่อเครือข่ายในระหว่างอายุการใช้งานของคอนเทนเนอร์)

หากคุณเรียกใช้ openContainer เป็นครั้งที่ 2 สำหรับ containerId ที่ระบุ ระบบจะส่งข้อยกเว้น

พารามิเตอร์
containerId รหัสของคอนเทนเนอร์ที่จะเปิด
โค้ดเรียกกลับ ออบเจ็กต์ที่จะมีการเรียกใช้เมธอดต่างๆ ระหว่างกระบวนการโหลด โปรดทราบว่าระบบอาจเรียกเมธอดจากเทรดที่แตกต่างกัน นอกจากนี้ อาจมีการโทรออกก่อนที่ openContainer จะกลับมา

สาธารณะ void setLogger (เครื่องมือบันทึก logger)

แทนที่ตัวบันทึกที่มีอยู่ที่ Tag Manager ใช้

สาธารณะ void setRefreshMode (TagManager.RefreshMode โหมด)

ตั้งค่าโหมดรีเฟรชที่ใช้สำหรับคอนเทนเนอร์ทั้งหมด