นี่คือการใช้งาน 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 | |
คอนเทนเนอร์ | |
void |
setLogger(เครื่องมือบันทึก logger)
|
void |
วิธีการสาธารณะ
สาธารณะ คอนเทนเนอร์ getContainer (สตริง containerId)
แสดงผลคอนเทนเนอร์ที่เปิดอยู่ซึ่งเชื่อมโยงกับ containerId
และแสดงผล null
หากคอนเทนเนอร์ยังไม่เปิดอยู่
สาธารณะ บริบท getContext ()
แสดงผลบริบทที่บันทึกไว้ซึ่งเชื่อมโยงกับวัตถุนี้
สาธารณะ static TagManager getInstance (บริบท)
รับอินสแตนซ์ Singleton ของคลาส TagManager
ซึ่งสร้างหากจำเป็น
สาธารณะ คอนเทนเนอร์ openContainer (สตริง containerId, Container.Callback containerId)
แสดงผลคอนเทนเนอร์ ระบบจะเรียกโค้ดเรียกกลับเนื่องจากมีสิ่งต่างๆ เกิดขึ้นสำหรับคอนเทนเนอร์ อย่างน้อยที่สุด openContainer จะพยายามโหลดเวอร์ชันที่บันทึกไว้ของคอนเทนเนอร์ หากไม่มีเวอร์ชันที่บันทึกไว้ หรือหากเวอร์ชันที่บันทึกไว้ไม่ใช่เวอร์ชันล่าสุด จะพยายามโหลดจากเครือข่าย
โดยปกติแล้ว คอนเทนเนอร์ที่ส่งกลับจะว่างเปล่า แต่การโหลดจะเกิดขึ้นในเทรดแยกต่างหาก ดังนั้นอาจมีการรีเฟรชคอนเทนเนอร์ที่ส่งกลับมาก่อนที่จะส่งคืน หลังจากที่มีการส่งคืน หรืออาจไม่มีการรีเฟรชเลย (เช่น หากไม่มีการเชื่อมต่อเครือข่ายในระหว่างอายุการใช้งานของคอนเทนเนอร์)
หากคุณเรียกใช้ openContainer
เป็นครั้งที่ 2 สำหรับ containerId
ที่ระบุ ระบบจะส่งข้อยกเว้น
พารามิเตอร์
containerId | รหัสของคอนเทนเนอร์ที่จะเปิด |
โค้ดเรียกกลับ | ออบเจ็กต์ที่จะมีการเรียกใช้เมธอดต่างๆ ระหว่างกระบวนการโหลด โปรดทราบว่าระบบอาจเรียกเมธอดจากเทรดที่แตกต่างกัน นอกจากนี้ อาจมีการโทรออกก่อนที่ openContainer จะกลับมา
|
สาธารณะ void setRefreshMode (TagManager.RefreshMode โหมด)
ตั้งค่าโหมดรีเฟรชที่ใช้สำหรับคอนเทนเนอร์ทั้งหมด