Google กำลังสร้างแพลตฟอร์มในอุปกรณ์เพื่อจัดระเบียบ แอปแยกตามประเภทธุรกิจ และมอบประสบการณ์ดื่มด่ำกับประสบการณ์ใหม่ สำหรับการบริโภคเนื้อหาแอปที่ปรับเปลี่ยนในแบบของคุณ และการค้นพบ ประสบการณ์แบบเต็มหน้าจอนี้มอบ โอกาสในการแสดงเนื้อหาจำนวนมากที่ดีที่สุดของพวกเขาในช่องเฉพาะภายนอก ของแอปนั้นๆ โดยคู่มือนี้ประกอบด้วยวิธีการสำหรับพาร์ทเนอร์นักพัฒนาซอฟต์แวร์ ผสานรวมคอนเทนต์หาคู่ โดยใช้ Engage SDK ในการสร้าง พื้นที่ผิว
รายละเอียดการผสานรวม
คำศัพท์
การผสานรวมนี้มีคลัสเตอร์ 3 ประเภท ได้แก่ คำแนะนำ, วิดีโอเด่นและความต่อเนื่อง
กลุ่มคำแนะนำแสดงคำแนะนำในการออกเดทที่ปรับเปลี่ยนในแบบของคุณ จากพาร์ทเนอร์นักพัฒนาแต่ละราย คำแนะนำเหล่านี้สามารถ ที่ปรับให้เหมาะกับผู้ใช้แต่ละคน
- คลัสเตอร์คำแนะนำมี
ArticleEntity
,PersonEntity
, หรือEventEntity
แต่ไม่ใช่เอนทิตีประเภทต่างๆ ผสมกัน
คำแนะนำจะมีโครงสร้างต่อไปนี้
คลัสเตอร์คำแนะนำ: มุมมอง UI ที่มีกลุ่มของ คำแนะนำจากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์รายเดียวกัน
เอนทิตี: ออบเจ็กต์ที่แทนรายการเดียวในคลัสเตอร์ ช่วงเวลานี้ การผสานรวมจะมีเอนทิตีบางรายการที่จะแสดงโดยใช้ คลัสเตอร์คำแนะนำ:
ArticleEntity: ArticleEntity แสดงคำแนะนำสำหรับ โดยใช้เนื้อหาแบบข้อความที่เกี่ยวข้องกับการหาคู่ รายการ ArticleEntity ช่วยให้นักพัฒนาแอปแสดงเนื้อหาข้อความและรูปภาพที่หลากหลาย มีข้อมูลเมตามากขึ้นในการให้ข้อมูลแก่ผู้ใช้
PersonEntity: PersonEntity แสดงถึงบุคคล แนะนำให้ไฮไลต์คนที่กำลังออกเดท ผู้มีโอกาสเป็นลูกค้า
EventEntity: EventEntity แสดงถึงเหตุการณ์ที่เกิดขึ้นใน ในอนาคต เวลาเริ่มต้นของกิจกรรมเป็นข้อมูลสำคัญที่ จะต้องแสดงต่อผู้ใช้
- คลัสเตอร์คำแนะนำมี
คลัสเตอร์ความต่อเนื่องจะแสดงเนื้อหาที่เพิ่งมีส่วนร่วมจากผู้ใช้จาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายในกลุ่ม UI เดียว พาร์ทเนอร์นักพัฒนาแอปแต่ละราย จะได้รับอนุญาตให้เผยแพร่รายการในเวอร์ชันต่อเนื่องได้สูงสุด 10 รายการ คลัสเตอร์
คอนเทนต์ต่อเนื่องจะมีโครงสร้างต่อไปนี้
ArticleEntity: ArticleEntity แสดงคำแนะนำสำหรับ โดยใช้เนื้อหาแบบข้อความที่เกี่ยวข้องกับการหาคู่ เอนทิตีนี้ใช้เพื่อ หมายถึงบทความข่าวที่ยังทำไม่เสร็จ หรือเนื้อหาอื่นๆ ที่ผู้ใช้ ต้องการบริโภคสินค้าต่อไปจากที่ค้างไว้
EventReservationEntity: EventReservationEntity เป็นตัวแทนของ การจองกิจกรรมและช่วยให้ผู้ใช้ติดตามกิจกรรมที่กำลังจะมีขึ้นหรือที่กำลังดำเนินอยู่ การจองนัดพบและนัดพบ
คลัสเตอร์แนะนำคือมุมมอง UI ที่แสดง Hero ที่เลือก
GenericFeaturedEntity
จากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายในกลุ่ม UI เดียว มีคลัสเตอร์ "แนะนำ" เดียวที่แสดงอยู่ใกล้ส่วนบนสุดของ UI ที่มีตำแหน่งลำดับความสำคัญเหนือคลัสเตอร์คำแนะนำทั้งหมด ชิ้น พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ได้รับอนุญาตให้เผยแพร่เอนทิตีเดียวที่ได้รับการสนับสนุน พิมพ์ "แนะนำ" โดยมีเอนทิตีจำนวนมาก (ซึ่งอาจเป็นประเภทที่ต่างกัน) จาก นักพัฒนาแอปหลายคนในคลัสเตอร์ "แนะนำ"GeneralFeaturedEntity: genericFeaturedEntity แตกต่างจาก ควรใช้รายการแนะนำในรายการ "แนะนำ" สำหรับ เนื้อหายอดนิยมจากนักพัฒนาซอฟต์แวร์ และควรเป็นหัวข้อ เนื้อหาสำคัญที่น่าสนใจและเกี่ยวข้องกับผู้ใช้
งานก่อนเริ่มเวิร์กช็อป
ระดับ API ขั้นต่ำ: 19
เพิ่มไลบรารี com.google.android.engage:engage-core
ลงในแอปโดยทำดังนี้
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.5.2'
}
สรุป
การออกแบบนี้อิงจากการใช้ บริการที่มีผลผูกพัน
ข้อมูลที่ไคลเอ็นต์เผยแพร่ได้จะขึ้นอยู่กับขีดจำกัดต่อไปนี้สำหรับ ประเภทคลัสเตอร์
ประเภทคลัสเตอร์ | ขีดจำกัดของคลัสเตอร์ | ขีดจำกัดเอนทิตีขั้นต่ำในคลัสเตอร์ | ขีดจำกัดเอนทิตีสูงสุดในคลัสเตอร์ |
---|---|---|---|
คลัสเตอร์คำแนะนำ | สูงสุด 5 รายการ | อย่างน้อย 5 รายการ | สูงสุด 25 (ArticleEntity , PersonEntity หรือ
EventEntity ) |
คลัสเตอร์ความต่อเนื่อง | มากที่สุด 1 | อย่างน้อย 1 | สูงสุด 10 (ArticleEntity หรือ
EventReservationEntity ) |
คลัสเตอร์แนะนำ | มากที่สุด 1 | อย่างน้อย 1 | สูงสุด 10 (GenericFeaturedEntity ) |
ขั้นตอนที่ 1: ระบุข้อมูลเอนทิตี
SDK ได้กำหนดเอนทิตีที่แตกต่างกันเพื่อแสดงรายการแต่ละประเภท เราสนับสนุน สำหรับหมวดหมู่การหาคู่มีดังนี้
GenericFeaturedEntity
ArticleEntity
PersonEntity
EventEntity
EventReservationEntity
แผนภูมิด้านล่างแสดงแอตทริบิวต์และข้อกำหนดสำหรับแต่ละประเภท
GenericFeaturedEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
การดำเนินการ Uri | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปผู้ให้บริการ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ภาพโปสเตอร์ | ต้องระบุ | เราจะแสดงเพียง 1 ภาพหากมีหลายภาพ สัดส่วนภาพที่แนะนำคือ 16:9 หมายเหตุ: หากมีป้าย ให้เตรียมพื้นที่ที่ปลอดภัยให้มีอักขระ 24 ป้าย dps ทั้งด้านบนและด้านล่างของรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ชื่อ | ไม่บังคับ | ชื่อรายการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: 50 อักขระ |
คำอธิบาย | ไม่บังคับ | ย่อหน้าข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
ป้าย | ไม่บังคับ | แต่ละป้ายจะเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก ใช้ UX พิเศษที่ด้านบนของรูปภาพ/วิดีโอ เช่น เป็นป้าย วางซ้อนบนรูปภาพ
|
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - ภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การจัดการ UX แบบพิเศษ เช่น การซ้อนทับป้ายบนรูปภาพ/วิดีโอ หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ดูส่วนหมวดหมู่เนื้อหา เพื่อเป็นแนวทาง |
ArticleEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
การดำเนินการ Uri | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปผู้ให้บริการ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ชื่อ | ต้องระบุ | ชื่อรายการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 50 อักขระ |
ภาพโปสเตอร์ | ไม่บังคับ | เราจะแสดงเพียง 1 ภาพหากมีหลายภาพ สัดส่วนภาพที่แนะนำคือ 16:9 หมายเหตุ: ขอแนะนำอย่างยิ่งให้เพิ่มรูปภาพ หากป้ายคือ จัดเตรียมไว้ให้ โดยตรวจสอบว่ามีพื้นที่ว่างไม่เกิน 24 dps ทั้งด้านบนและด้านล่างของ ภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
แหล่งที่มา - ชื่อ | ไม่บังคับ | ชื่อผู้เขียน องค์กร หรือผู้รายงาน | ข้อความอิสระ ขนาดข้อความที่แนะนำ: น้อยกว่า 25 อักขระ |
แหล่งที่มา - รูปภาพ | ไม่บังคับ | รูปภาพแหล่งที่มา เช่น ผู้เขียน องค์กร ผู้รายงาน | โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
คำอธิบาย | ไม่บังคับ | ย่อหน้าข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
ป้าย | ไม่บังคับ | แต่ละป้ายจะเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก ใช้ UX พิเศษที่ด้านบนของรูปภาพ/วิดีโอ เช่น เป็นป้าย วางซ้อนบนรูปภาพ
|
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - ภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การจัดการ UX แบบพิเศษ เช่น การซ้อนทับป้ายบนรูปภาพ/วิดีโอ หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
เวลาเผยแพร่เนื้อหา | ไม่บังคับ | นี่คือการประทับเวลา Epoch ในหน่วยมิลลิวินาทีเมื่อเนื้อหา เผยแพร่ / อัปเดตในแอปแล้ว | การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
เวลาในการมีส่วนร่วมสุดท้าย | ต้องระบุแบบมีเงื่อนไข | การประทับเวลา Epoch ในหน่วยมิลลิวินาทีเมื่อผู้ใช้โต้ตอบกับ เอนทิตีนี้เป็นครั้งสุดท้าย หมายเหตุ: ต้องระบุข้อมูลในช่องนี้หากเอนทิตีนี้เป็นส่วนหนึ่งของ คลัสเตอร์แบบต่อเนื่อง |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
เปอร์เซ็นต์ความคืบหน้า | ต้องระบุแบบมีเงื่อนไข | เปอร์เซ็นต์ของเนื้อหาทั้งหมดที่ผู้ใช้รับชมจนถึงปัจจุบัน หมายเหตุ: ต้องระบุข้อมูลในช่องนี้หากเอนทิตีนี้เป็นส่วนหนึ่งของ คลัสเตอร์แบบต่อเนื่อง |
ค่า int ระหว่าง 0~100 (รวมค่าแรกและค่าสุดท้าย) |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ดูส่วนหมวดหมู่เนื้อหา เพื่อเป็นแนวทาง |
PersonEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
การดำเนินการ Uri | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปผู้ให้บริการ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
โปรไฟล์ - ชื่อ | ต้องระบุ | ชื่อหรือแฮนเดิลโปรไฟล์ เช่น "John Doe", "@TeamPixel" ฯลฯ | สตริง ขนาดข้อความที่แนะนำ: สูงสุด 50 อักขระ |
โปรไฟล์ - รูปโปรไฟล์ | ต้องระบุ |
รูปโปรไฟล์หรือรูปโปรไฟล์ของผู้ใช้ หมายเหตุ: ต้องเป็นรูปภาพสี่เหลี่ยมจัตุรัส 1:1 |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
โปรไฟล์ - ข้อความเพิ่มเติม | ไม่บังคับ | ข้อความอิสระ เช่น แฮนเดิลโปรไฟล์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
โปรไฟล์ - รูปภาพเพิ่มเติม | ไม่บังคับ | รูปภาพขนาดเล็ก เช่น ป้ายที่ผ่านการยืนยันแล้ว | โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
รูปภาพส่วนหัว | ไม่บังคับ |
แสดงรูปภาพส่วนหัว ควรแตกต่างจากรูปโปรไฟล์ สามารถใช้ในกรณีที่มีรูปภาพเพิ่มเติมเพื่อช่วยไฮไลต์ ชอบงานของตัวเอง หมายเหตุ: ต้องเป็นรูปภาพ 16:9 หากมีป้าย ตรวจสอบว่ามีพื้นที่ว่าง 24 dps ทั้งด้านบนและด้านล่างของรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ความนิยม - จำนวน | ไม่บังคับ |
ระบุจำนวนผู้ติดตามหรือค่าความนิยม เช่น "3.7 M." หมายเหตุ: หากมีทั้งค่าการนับและค่าการนับ ระบบจะใช้จำนวน |
สตริง ขนาดข้อความที่แนะนำ: สูงสุด 20 อักขระสำหรับจำนวน + ป้ายกำกับ รวมกัน |
ความนิยม - ค่าของจำนวน | ไม่บังคับ | จำนวนผู้ติดตามหรือค่าความนิยม หมายเหตุ: ระบุค่าการนับถ้าแอปของคุณไม่ต้องการ ในการจัดการตรรกะที่ควรจะเพิ่มประสิทธิภาพจำนวนมาก ที่แสดงแตกต่างกัน หากมีทั้งค่าการนับและค่าการนับ จำนวนจะปรากฏต่อผู้ใช้ |
ยาว |
ความนิยม - ป้ายกำกับ | ไม่บังคับ | ระบุป้ายกำกับความนิยม เช่น "ชอบ" | สตริง ขนาดข้อความที่แนะนำ: สูงสุด 20 อักขระสำหรับจำนวน + ป้ายกำกับ รวมกัน |
ความนิยม - ภาพ | ไม่บังคับ |
ระบุว่าการโต้ตอบนี้มีไว้เพื่ออะไร ตัวอย่างเช่น - รูปภาพที่แสดง ไอคอนชอบ อีโมจิ ใส่รูปภาพได้มากกว่า 1 รูป แต่อาจไม่แสดงในบางรูป รูปแบบของอุปกรณ์ หมายเหตุ: ต้องเป็นรูปภาพสี่เหลี่ยมจัตุรัส 1:1 |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
การให้คะแนน - ค่าสูงสุด | ต้องระบุ | ค่าสูงสุดของสเกลการให้คะแนน ต้องระบุหากค่าปัจจุบันของคะแนนรวมอยู่ ไว้ให้ |
จำนวน >= 0.0 |
การจัดประเภท - ค่าปัจจุบัน | ต้องระบุ | ค่าปัจจุบันของสเกลการให้คะแนน ต้องระบุหากมีค่าสูงสุดของคะแนนด้วย ไว้ให้ |
จำนวน >= 0.0 |
คะแนน - จำนวน | ไม่บังคับ | จำนวนการให้คะแนนสำหรับเอนทิตี หมายเหตุ: กรอกข้อมูลในช่องนี้หากแอปของคุณต้องการ ควบคุมวิธีแสดงโฆษณานี้แก่ผู้ใช้ ระบุสตริงที่สั้นกระชับ ที่แสดงต่อผู้ใช้ได้ ตัวอย่างเช่น หากจำนวนนับคือ 1,000,000 คน ลองใช้ตัวย่อ เช่น 1M เพื่อไม่ให้เป็น ถูกตัดบนหน้าจอขนาดเล็ก |
สตริง |
คะแนน - ค่าของจำนวน | ไม่บังคับ | จำนวนการให้คะแนนสำหรับเอนทิตี หมายเหตุ: โปรดป้อนช่องนี้หากไม่ต้องการจัดการ ตรรกะตัวย่อการแสดงผล ด้วยตัวคุณเอง ถ้ามีทั้งค่า "นับ" และ "ค่าการนับ" เราจะใช้ "จำนวน" เพื่อแสดงต่อผู้ใช้ |
ยาว |
สถานที่ - ประเทศ | ไม่บังคับ | ประเทศที่บุคคลดังกล่าวอาศัยอยู่หรือให้บริการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - เมือง | ไม่บังคับ | เมืองที่บุคคลนั้นอาศัยอยู่หรือให้บริการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - ที่อยู่ที่แสดง | ไม่บังคับ | ที่อยู่ที่บุคคลนั้นตั้งอยู่หรือให้บริการจะแสดงต่อ ผู้ใช้รายนั้น | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ตำแหน่ง - ที่อยู่ | ไม่บังคับ | ที่อยู่ (หากมี) ที่ที่บุคคลดังกล่าวอาศัยอยู่ หรือ แบบต้นทางถึงปลายทาง | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - รัฐ | ไม่บังคับ | รัฐ (หากมี) ที่บุคคลนั้นอาศัยอยู่หรือให้บริการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ตั้ง - รหัสไปรษณีย์ | ไม่บังคับ | รหัสไปรษณีย์ (หากมี) ที่บุคคลนั้นอยู่หรือให้บริการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ตำแหน่ง - ย่านใกล้เคียง | ไม่บังคับ | ละแวกใกล้เคียง (หากมี) ที่บุคคลดังกล่าวอาศัยอยู่หรือให้บริการ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ป้าย | ไม่บังคับ |
แต่ละป้ายจะเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก |
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - ภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การจัดการ UX แบบพิเศษ เช่น การซ้อนทับป้ายบนรูปภาพ/วิดีโอ หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
คำอธิบาย | ไม่บังคับ | ย่อหน้าข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ที่มีสิทธิ์
ดูส่วนหมวดหมู่เนื้อหา เพื่อเป็นแนวทาง |
EventEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
การดำเนินการ Uri | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปผู้ให้บริการ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ชื่อ | ต้องระบุ | ชื่อรายการ | สตริง ขนาดข้อความที่แนะนำ: สูงสุด 50 อักขระ |
เวลาเริ่มต้น | ต้องระบุ |
การประทับเวลา Epoch เมื่อระบบคาดว่าเหตุการณ์จะเริ่มต้น หมายเหตุ: ค่านี้จะแสดงเป็นมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
โหมดเหตุการณ์ | ต้องระบุ | ช่องสำหรับระบุว่ากิจกรรมจะเป็นแบบออนไลน์ แบบเข้าร่วมด้วยตนเอง หรือ ทั้ง 2 อย่าง |
Enum: VIRTUAL, IN_PERSON หรือ HYBRID |
ภาพโปสเตอร์ | ต้องระบุ | เราจะแสดงเพียง 1 ภาพหากมีหลายภาพ สัดส่วนภาพที่แนะนำคือ 16:9 หมายเหตุ: ขอแนะนำอย่างยิ่งให้เพิ่มรูปภาพ หากป้ายคือ จัดเตรียมไว้ให้ โดยตรวจสอบว่ามีพื้นที่ว่างไม่เกิน 24 dps ทั้งด้านบนและด้านล่างของ ภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
สถานที่ - ประเทศ | ต้องระบุแบบมีเงื่อนไข | ประเทศที่กิจกรรมจะเกิดขึ้น หมายเหตุ: ต้องระบุสำหรับเหตุการณ์ที่เป็น IN_PERSON หรือ ผสม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - เมือง | ต้องระบุแบบมีเงื่อนไข | เมืองที่กิจกรรมจะเกิดขึ้น หมายเหตุ: ต้องระบุสำหรับเหตุการณ์ที่เป็น IN_PERSON หรือ ผสม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - ที่อยู่ที่แสดง | ต้องระบุแบบมีเงื่อนไข | ที่อยู่หรือชื่อสถานที่ที่จัดกิจกรรมซึ่งควร ที่จะแสดงต่อผู้ใช้ หมายเหตุ: ต้องระบุสำหรับเหตุการณ์ที่เป็น IN_PERSON หรือ ผสม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ตำแหน่ง - ที่อยู่ | ไม่บังคับ | ที่อยู่ (หากมี) ของสถานที่จัดกิจกรรม กำลังโฮสต์อยู่ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - รัฐ | ไม่บังคับ | รัฐหรือจังหวัด (หากมี) ที่จัดกิจกรรม ที่โฮสต์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ตั้ง - รหัสไปรษณีย์ | ไม่บังคับ | รหัสไปรษณีย์ (หากมี) ของสถานที่จัดกิจกรรม ที่โฮสต์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ตำแหน่ง - ย่านใกล้เคียง | ไม่บังคับ | พื้นที่ใกล้เคียง (หากมี) ที่จัดกิจกรรมนั้น | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
เวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch เมื่อคาดว่าเหตุการณ์จะสิ้นสุด หมายเหตุ: ค่านี้จะแสดงเป็นมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
คำอธิบาย | ไม่บังคับ | ย่อหน้าข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
ป้าย | ไม่บังคับ |
แต่ละป้ายจะเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก |
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - ภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การจัดการ UX แบบพิเศษ เช่น การซ้อนทับป้ายบนรูปภาพ/วิดีโอ หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ราคา - ราคาปัจจุบัน | ต้องระบุแบบมีเงื่อนไข |
ราคาปัจจุบันของตั๋ว/บัตรสำหรับงาน ต้องระบุหากมีการระบุราคาที่มีขีดทับ |
ข้อความอิสระ |
ราคา - ขีดทับราคา | ไม่บังคับ | ราคาเดิมของตั๋ว/บัตรผ่านสำหรับงาน | ข้อความอิสระ |
ข้อความไฮไลต์ราคา | ไม่บังคับ | ข้อความไฮไลต์สำหรับแสดงโปรโมชัน กิจกรรม และส่วนลดสำหรับสมาชิก หากมี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความยาวเกินไป อาจแสดงจุดไข่ปลา) |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ที่มีสิทธิ์
ดูส่วนหมวดหมู่เนื้อหา เพื่อเป็นแนวทาง |
EventReservationEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
การดำเนินการ Uri | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปผู้ให้บริการ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ชื่อ | ต้องระบุ | ชื่อรายการ | สตริง ขนาดข้อความที่แนะนำ: สูงสุด 50 อักขระ |
เวลาเริ่มต้น | ต้องระบุ |
การประทับเวลา Epoch เมื่อระบบคาดว่าเหตุการณ์จะเริ่มต้น หมายเหตุ: ค่านี้จะแสดงเป็นมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
โหมดเหตุการณ์ | ต้องระบุ | ช่องสำหรับระบุว่ากิจกรรมจะเป็นแบบออนไลน์ แบบเข้าร่วมด้วยตนเอง หรือ ทั้ง 2 อย่าง |
Enum: VIRTUAL, IN_PERSON หรือ HYBRID |
สถานที่ - ประเทศ | ต้องระบุแบบมีเงื่อนไข | ประเทศที่กิจกรรมจะเกิดขึ้น หมายเหตุ: ต้องระบุสำหรับเหตุการณ์ที่เป็น IN_PERSON หรือ ผสม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - เมือง | ต้องระบุแบบมีเงื่อนไข | เมืองที่กิจกรรมจะเกิดขึ้น หมายเหตุ: ต้องระบุสำหรับเหตุการณ์ที่เป็น IN_PERSON หรือ ผสม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - ที่อยู่ที่แสดง | ต้องระบุแบบมีเงื่อนไข | ที่อยู่หรือชื่อสถานที่ที่จัดกิจกรรมซึ่งควร ที่จะแสดงต่อผู้ใช้ หมายเหตุ: ต้องระบุสำหรับเหตุการณ์ที่เป็น IN_PERSON หรือ ผสม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ตำแหน่ง - ที่อยู่ | ไม่บังคับ | ที่อยู่ (หากมี) ของสถานที่จัดกิจกรรม กำลังโฮสต์อยู่ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ - รัฐ | ไม่บังคับ | รัฐหรือจังหวัด (หากมี) ที่จัดกิจกรรม ที่โฮสต์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
สถานที่ตั้ง - รหัสไปรษณีย์ | ไม่บังคับ | รหัสไปรษณีย์ (หากมี) ของสถานที่จัดกิจกรรม ที่โฮสต์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ตำแหน่ง - ย่านใกล้เคียง | ไม่บังคับ | พื้นที่ใกล้เคียง (หากมี) ที่จัดกิจกรรมนั้น | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด ~20 อักขระ |
ภาพโปสเตอร์ | ไม่บังคับ | เราจะแสดงเพียง 1 ภาพหากมีหลายภาพ สัดส่วนภาพที่แนะนำคือ 16:9 หมายเหตุ: ขอแนะนำอย่างยิ่งให้เพิ่มรูปภาพ หากป้ายคือ จัดเตรียมไว้ให้ โดยตรวจสอบว่ามีพื้นที่ว่างไม่เกิน 24 dps ทั้งด้านบนและด้านล่างของ ภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
เวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch เมื่อคาดว่าเหตุการณ์จะสิ้นสุด หมายเหตุ: ค่านี้จะแสดงเป็นมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
ผู้ให้บริการ - ชื่อ | ไม่บังคับ |
ชื่อผู้ให้บริการ หมายเหตุ: ต้องมีข้อความหรือรูปภาพอย่างใดอย่างหนึ่งสำหรับบริการ |
ข้อความอิสระ เช่น ชื่อผู้จัดกิจกรรม/ทัวร์ชม |
ผู้ให้บริการ - รูปภาพ | ไม่บังคับ |
โลโก้/รูปภาพของผู้ให้บริการ หมายเหตุ: ต้องมีข้อความหรือรูปภาพอย่างใดอย่างหนึ่งสำหรับบริการ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
คำอธิบาย | ไม่บังคับ | ย่อหน้าข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
ป้าย | ไม่บังคับ |
แต่ละป้ายจะเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก |
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - ภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การจัดการ UX แบบพิเศษ เช่น การซ้อนทับป้ายบนรูปภาพ/วิดีโอ หมายเหตุ: ป้ายต้องมีข้อความหรือรูปภาพ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
รหัสการจอง | ไม่บังคับ | รหัสการจองสำหรับการจองกิจกรรม | ข้อความอิสระ |
ราคา - ราคาปัจจุบัน | ต้องระบุแบบมีเงื่อนไข |
ราคาปัจจุบันของตั๋ว/บัตรสำหรับงาน ต้องระบุหากมีการระบุราคาที่มีขีดทับ |
ข้อความอิสระ |
ราคา - ขีดทับราคา | ไม่บังคับ | ราคาเดิมของตั๋ว/บัตรผ่านสำหรับงาน | ข้อความอิสระ |
ข้อความไฮไลต์ราคา | ไม่บังคับ | ข้อความไฮไลต์สำหรับแสดงโปรโมชัน กิจกรรม และส่วนลดสำหรับสมาชิก หากมี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความยาวเกินไป อาจแสดงจุดไข่ปลา) |
การให้คะแนน - ค่าสูงสุด | ไม่บังคับ | ค่าสูงสุดของสเกลการให้คะแนน ต้องระบุหากค่าปัจจุบันของคะแนนรวมอยู่ ไว้ให้ |
จำนวน >= 0.0 |
การจัดประเภท - ค่าปัจจุบัน | ไม่บังคับ | ค่าปัจจุบันของสเกลการให้คะแนน ต้องระบุหากมีค่าสูงสุดของคะแนนด้วย ไว้ให้ |
จำนวน >= 0.0 |
คะแนน - จำนวน | ไม่บังคับ | จำนวนการให้คะแนนกิจกรรม หมายเหตุ: กรอกข้อมูลในช่องนี้หากแอปของคุณต้องการ ควบคุมวิธีแสดงโฆษณานี้แก่ผู้ใช้ ระบุสตริงที่สั้นกระชับ ที่แสดงต่อผู้ใช้ได้ ตัวอย่างเช่น หากจำนวนนับคือ 1,000,000 คน ลองใช้ตัวย่อ เช่น 1M เพื่อไม่ให้เป็น ถูกตัดบนหน้าจอขนาดเล็ก |
สตริง |
คะแนน - ค่าของจำนวน | ไม่บังคับ | จำนวนการให้คะแนนกิจกรรม หมายเหตุ: กรอกข้อมูลในช่องนี้หากไม่ต้องการจัดการ ตรรกะตัวย่อการแสดงผล ด้วยตัวคุณเอง ถ้ามีทั้งค่า "นับ" และ "ค่าการนับ" เราจะใช้ "จำนวน" เพื่อแสดงต่อผู้ใช้ |
ยาว |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ที่มีสิทธิ์
ดูส่วนหมวดหมู่เนื้อหา เพื่อเป็นแนวทาง |
ข้อกำหนดเกี่ยวกับรูปภาพ
ข้อกำหนดที่จำเป็นสำหรับชิ้นงานรูปภาพแสดงในตารางนี้
สัดส่วนภาพ | พิกเซลขั้นต่ำ | พิกเซลแนะนํา |
---|---|---|
สี่เหลี่ยมจัตุรัส (1x1) แนะนำ |
300x300 | 1200x1200 |
แนวนอน (1.91x1) | 600x314 | 1200x628 |
แนวตั้ง (4x5) | 480x600 | 960x1200 |
รูปภาพต้องโฮสต์บน CDN สาธารณะเพื่อให้ Google เข้าถึงได้ ให้พวกเขา
รูปแบบไฟล์
PNG, JPG, GIF แบบภาพนิ่ง, WebP
ขนาดไฟล์สูงสุด
5,120 KB
คำแนะนำเพิ่มเติม
- พื้นที่ปลอดภัยของรูปภาพ: ใส่เนื้อหาสําคัญไว้ตรงกลาง 80% ของ รูปภาพ
- ใช้พื้นหลังโปร่งใสเพื่อให้แสดงภาพได้อย่างถูกต้องใน การตั้งค่าธีมมืดและสว่าง
หมวดหมู่เนื้อหา
หมวดหมู่เนื้อหาช่วยให้แอปสามารถเผยแพร่เนื้อหาที่เป็นของ หมวดหมู่ต่างๆ การจับคู่เนื้อหากับหมวดหมู่ที่กำหนดไว้ล่วงหน้าบางส่วน ได้แก่
TYPE_EDUCATION
TYPE_SPORTS
TYPE_MOVIES_AND_TV_SHOWS
TYPE_BOOKS
TYPE_AUDIOBOOKS
TYPE_MUSIC
TYPE_DIGITAL_GAMES
TYPE_TRAVEL_AND_LOCAL
TYPE_HOME_AND_AUTO
TYPE_BUSINESS
TYPE_NEWS
TYPE_FOOD_AND_DRINK
TYPE_SHOPPING
TYPE_HEALTH_AND_FITENESS
TYPE_MEDICAL
TYPE_PARENTING
TYPE_DATING
รูปภาพต้องโฮสต์บน CDN สาธารณะเพื่อให้ Google เข้าถึงได้ ให้พวกเขา
หลักเกณฑ์การใช้หมวดหมู่เนื้อหา
- เอนทิตีบางรายการ เช่น ArticleEntity และ genericFeaturedEntity มี สามารถใช้หมวดหมู่เนื้อหาใดๆ ได้ สำหรับหน่วยงานอื่นๆ เช่น EventEntity, EventReservationEntity, PersonEntity, เฉพาะบางส่วน ในหมวดหมู่เหล่านี้มีสิทธิ์ ตรวจสอบรายการหมวดหมู่ที่มีสิทธิ์สำหรับ ประเภทเอนทิตีก่อนป้อนข้อมูลในรายการ
ใช้ประเภทเอนทิตีเฉพาะสำหรับหมวดหมู่เนื้อหาบางหมวดหมู่ผ่านชุดค่าผสม ของเอนทิตีทั่วไปและประเภทเนื้อหา
- TYPE_MOVIES_AND_TV_SHOWS - ดูรายการต่างๆ จาก คู่มือการผสานรวมสมาร์ทวอทช์ก่อนใช้ เอนทิตีทั่วไป
- TYPE_BOOKS - ดูที่ EbookEntity ก่อนใช้ เอนทิตีทั่วไป
- TYPE_AUDIOBOOKS - ดู AudiobookEntity ก่อนหน้า โดยใช้เอนทิตีทั่วไป
- TYPE_SHOPPING - ชำระเงิน ShoppingEntity ก่อน โดยใช้เอนทิตีทั่วไป
- TYPE_FOOD_AND_DRINK - ตรวจสอบเอนทิตีจาก คู่มือการบูรณาการอาหารก่อนใช้ เอนทิตีทั่วไป
ฟิลด์ ContentCategory เป็นฟิลด์ที่ไม่บังคับ และควรเว้นว่างไว้หาก เนื้อหาไม่อยู่ในหมวดหมู่ใดๆ ที่ได้กล่าวถึงก่อนหน้านี้
ในกรณีที่มีหมวดหมู่เนื้อหาหลายหมวดหมู่ ให้ระบุตามลำดับ ความเกี่ยวข้องกับเนื้อหาโดยมีหมวดหมู่เนื้อหาที่มีความเกี่ยวข้องมากที่สุด เป็นลำดับแรกในรายการ
ขั้นตอนที่ 2: ระบุข้อมูลคลัสเตอร์
ขอแนะนำให้ดำเนินการเผยแพร่เนื้อหาในเบื้องหลัง (เช่น ใช้ WorkManager) เป็นประจำหรือตามเหตุการณ์ (เช่น ทุกครั้ง ผู้ใช้เปิดแอปหรือเมื่อผู้ใช้เพิ่งเพิ่มสินค้าลงในรถเข็น)
AppEngagePublishClient
มีหน้าที่รับผิดชอบในการเผยแพร่คลัสเตอร์
การเผยแพร่คลัสเตอร์ในไคลเอ็นต์มี API ต่อไปนี้
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
API นี้ใช้เพื่อตรวจสอบว่าบริการพร้อมผสานรวมหรือไม่ และ สามารถนำเสนอเนื้อหาบนอุปกรณ์ได้ไหม
Kotlin
client.isServiceAvailable.addOnCompleteListener { task -> if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
Java
client.isServiceAvailable().addOnCompleteListener(task - > { if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
API นี้ใช้เพื่อเผยแพร่รายการออบเจ็กต์ RecommendationCluster
รายการ
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
RecommendationCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในคำแนะนำที่อัปเดต คลัสเตอร์
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ บำรุง
publishFeaturedCluster
API นี้ใช้เพื่อเผยแพร่รายการออบเจ็กต์ FeaturedCluster
รายการ
Kotlin
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishFeaturedCluster( new PublishFeaturedClustersRequest.Builder() .addFeaturedCluster( new FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
FeaturedCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในคลัสเตอร์เด่นที่มีการอัปเดต
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ บำรุง
publishContinuationCluster
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ ContinuationCluster
Kotlin
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishContinuationCluster( new PublishContinuationClusterRequest.Builder() .setContinuationCluster( new ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
ContinuationCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในความต่อเนื่องที่อัปเดตแล้ว คลัสเตอร์
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ บำรุง
publishUserAccountManagementRequest
API นี้ใช้เพื่อเผยแพร่การ์ดการลงชื่อเข้าใช้ การดำเนินการลงชื่อเข้าใช้จะนำผู้ใช้ไปยัง หน้าลงชื่อเข้าใช้ของแอปเพื่อให้แอปสามารถเผยแพร่เนื้อหา (หรือให้ เนื้อหาที่ปรับเปลี่ยนในแบบของคุณ)
ข้อมูลเมตาต่อไปนี้เป็นส่วนหนึ่งของการ์ดลงชื่อเข้าใช้ -
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย |
---|---|---|
การดำเนินการ Uri | ต้องระบุ | Deep Link ไปยังการดำเนินการ (เช่น ไปที่หน้าลงชื่อเข้าใช้แอป) |
รูปภาพ | ไม่บังคับ - หากไม่ได้ระบุ คุณต้องระบุชื่อ |
รูปภาพที่แสดงในการ์ด รูปภาพอัตราส่วน 16x9 ที่มีความละเอียด 1264x712 |
ชื่อ | ไม่บังคับ - หากไม่ได้ให้ไว้ ต้องระบุรูปภาพ | ชื่อบนการ์ด |
ข้อความดำเนินการ | ไม่บังคับ | ข้อความที่แสดงใน CTA (เช่น ลงชื่อเข้าใช้) |
ชื่อรอง | ไม่บังคับ | คำบรรยายเสริมบนการ์ด |
Kotlin
var SIGN_IN_CARD_ENTITY = SignInCardEntity.Builder() .addPosterImage( Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build() client.publishUserAccountManagementRequest( PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
Java
SignInCardEntity SIGN_IN_CARD_ENTITY = new SignInCardEntity.Builder() .addPosterImage( new Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build(); client.publishUserAccountManagementRequest( new PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ข้อมูล
UserAccountManagementCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปคือ ลบแล้ว - ข้อมูลจากคำขอจะได้รับการแยกวิเคราะห์และจัดเก็บไว้ใน คลัสเตอร์ UserAccountManagementCluster
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ บำรุง
updatePublishStatus
หากภายในเหตุผลทางธุรกิจ หากไม่มีการเผยแพร่คลัสเตอร์ใด เราจะ ขอแนะนำอย่างยิ่งให้อัปเดตสถานะการเผยแพร่โดยใช้ updatePublishStatus API ซึ่งเป็นสิ่งสำคัญเนื่องจาก :
- การแจ้งสถานะในทุกสถานการณ์ แม้ว่าจะมีการเผยแพร่เนื้อหาแล้วก็ตาม (STATUS == PUBLISHED) เป็นส่วนสำคัญในการสร้างหน้าแดชบอร์ดที่ใช้ สถานะที่ชัดเจนเพื่อแสดงข้อมูลเกี่ยวกับสุขภาพและเมตริกอื่นๆ ของการผสานรวม
- หากไม่ได้เผยแพร่เนื้อหาแต่สถานะการผสานรวมยังไม่เสียหาย (STATUS == NOT_PUBLISHED) Google สามารถหลีกเลี่ยงการทริกเกอร์การแจ้งเตือนในแอปได้ แดชบอร์ดประสิทธิภาพการทำงาน เป็นการยืนยันว่าเนื้อหาไม่ถูกเผยแพร่เนื่องจาก สถานการณ์ที่คาดหวังจากมุมมองของผู้ให้บริการ
- ช่วยให้นักพัฒนาซอฟต์แวร์ให้ข้อมูลเชิงลึกเกี่ยวกับเวลาที่เผยแพร่ข้อมูล ไม่ได้
- Google อาจใช้รหัสสถานะเพื่อกระตุ้นให้ผู้ใช้ดำเนินการบางอย่าง เพื่อให้พวกเขาเห็นเนื้อหาของแอปหรือจะเอาชนะเนื้อหานั้นได้
รายการรหัสสถานะการเผยแพร่ที่มีสิทธิ์มีดังนี้
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
หากไม่มีการเผยแพร่เนื้อหาเนื่องจากผู้ใช้ไม่ได้เข้าสู่ระบบ Google จะ ขอแนะนำให้เผยแพร่การ์ดลงชื่อเข้าใช้ หากผู้ให้บริการไม่สามารถ เพื่อเผยแพร่การ์ดลงชื่อเข้าใช้ เราขอแนะนำให้เรียก updatePublishStatus API ที่มีรหัสสถานะ ไม่เผยแพร่
Kotlin
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
Java
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์คำแนะนำ
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์คำแนะนำ ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและ สถานะเดิมจะยังคงอยู่
deleteFeaturedCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ที่แนะนำ
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์แนะนำ ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธ สถานะเดิมจะยังคงอยู่
deleteContinuationCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ Continuation
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์ความต่อเนื่อง ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและ สถานะเดิมจะยังคงอยู่
deleteUserManagementCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ UserAccountManagement
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์ UserAccountManagement ในกรณีที่มีข้อผิดพลาด คำขอทั้งหมดจะ ถูกปฏิเสธและคงสถานะเดิมไว้
deleteClusters
API นี้ใช้เพื่อลบเนื้อหาของประเภทคลัสเตอร์ที่ระบุ
Kotlin
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build());
เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์ที่ตรงกับประเภทคลัสเตอร์ที่ระบุ ลูกค้าเลือกได้ว่าจะให้ผ่าน หลายๆ ประเภท ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธ สถานะเดิมจะยังคงอยู่
การจัดการข้อผิดพลาด
ขอแนะนำให้ฟังผลลัพธ์ของงานจาก API การเผยแพร่ เช่น การดำเนินการติดตามผลสามารถทำได้เพื่อกู้คืนและส่งงานที่สำเร็จอีกครั้ง
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(..) .build()) .addOnCompleteListener { task -> if (task.isSuccessful) { // do something } else { val exception = task.exception if (exception is AppEngageException) { @AppEngageErrorCode val errorCode = exception.errorCode if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } }
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(...) .build()) .addOnCompleteListener( task -> { if (task.isSuccessful()) { // do something } else { Exception exception = task.getException(); if (exception instanceof AppEngageException) { @AppEngageErrorCode int errorCode = ((AppEngageException) exception).getErrorCode(); if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } });
ข้อผิดพลาดจะแสดงผลเป็น AppEngageException
พร้อมระบุสาเหตุเป็น
รหัสข้อผิดพลาด
รหัสข้อผิดพลาด | โน้ต |
---|---|
SERVICE_NOT_FOUND |
บริการไม่พร้อมใช้งานในอุปกรณ์ที่ระบุ |
SERVICE_NOT_AVAILABLE |
บริการพร้อมใช้งานในอุปกรณ์ที่ระบุ แต่ไม่พร้อมใช้งาน ณ เวลาที่โทร (เช่น ปิดใช้งานอย่างชัดแจ้ง) |
SERVICE_CALL_EXECUTION_FAILURE |
การดำเนินงานล้มเหลวเนื่องจากปัญหาเกี่ยวกับการแยกชุดข้อความ ในกรณีนี้ ลองอีกครั้งได้ |
SERVICE_CALL_PERMISSION_DENIED |
ผู้โทรไม่ได้รับอนุญาตให้เรียกใช้บริการ |
SERVICE_CALL_INVALID_ARGUMENT |
คำขอนี้มีข้อมูลที่ไม่ถูกต้อง (ตัวอย่างเช่น มากกว่าที่อนุญาต จำนวนคลัสเตอร์) |
SERVICE_CALL_INTERNAL |
เกิดข้อผิดพลาดที่ฝั่งบริการ |
SERVICE_CALL_RESOURCE_EXHAUSTED |
มีการเรียกใช้บริการบ่อยเกินไป |
ขั้นตอนที่ 3: จัดการการออกอากาศ Intent
นอกจากการเผยแพร่การเรียก Content API ผ่านงานแล้ว
ที่จำเป็นต่อการตั้งค่า
BroadcastReceiver
เพื่อรับ
คำขอสำหรับการเผยแพร่เนื้อหา
เป้าหมายของการออกอากาศเพื่อการเผยแพร่นั้นหลักๆ แล้วคือการเปิดใช้แอปอีกครั้งและการบังคับให้ใช้ข้อมูล การซิงค์ ความตั้งใจในการออกอากาศไม่ได้ออกแบบมาให้ส่งบ่อยครั้ง แต่เป็นเพียง ทริกเกอร์เมื่อบริการ Engage ระบุว่าเนื้อหาอาจไม่มีอัปเดต (สำหรับ เช่น 1 สัปดาห์) วิธีนี้จะเพิ่มความมั่นใจให้ผู้ใช้ ประสบการณ์การใช้งานเนื้อหาแบบใหม่ แม้ว่าแอปพลิเคชันจะไม่มีการเรียกใช้เพื่อ เป็นเวลานาน
ต้องตั้งค่า BroadcastReceiver
ด้วย 2 วิธีต่อไปนี้
- ลงทะเบียนอินสแตนซ์ของคลาส
BroadcastReceiver
แบบไดนามิกโดยใช้Context.registerReceiver()
การดำเนินการนี้จะทำให้แอปพลิเคชันสามารถสื่อสารกันได้ ที่ยังหลงเหลืออยู่ในความทรงจำ
Kotlin
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_FEATURED)) // Register Continuation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION)) }
Java
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continuation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION)); }
- ประกาศการติดตั้งใช้งานที่มีแท็ก
<receiver>
แบบคงที่ในบัญชีAndroidManifest.xml
วิธีนี้ช่วยให้แอปพลิเคชันสามารถรับการออกอากาศ เมื่อไม่ได้ทำงานอยู่ และอนุญาตให้แอปพลิเคชันสามารถเผยแพร่ เนื้อหานั้น
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
ความตั้งใจต่อไปนี้จะส่งโดย บริการ:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
แนะนำ เพื่อเริ่มการโทรpublishRecommendationClusters
เมื่อได้รับ Intent นี้com.google.android.engage.action.PUBLISH_FEATURED
ขอแนะนำให้ เริ่มการโทรpublishFeaturedCluster
เมื่อได้รับ Intent นี้com.google.android.engage.action.PUBLISH_CONTINUATION
ขอแนะนำให้ เริ่มการโทรpublishContinuationCluster
เมื่อได้รับ Intent นี้
เวิร์กโฟลว์การผสานรวม
ดูคำแนะนำทีละขั้นตอนเกี่ยวกับการยืนยันการผสานรวมหลังจากที่เสร็จสมบูรณ์ได้ที่ มีส่วนร่วมกับเวิร์กโฟลว์การผสานรวมของนักพัฒนาซอฟต์แวร์
คำถามที่พบบ่อย
ดูคำถามที่พบบ่อยเกี่ยวกับ Engage SDK สำหรับ คำถามที่พบบ่อย
รายชื่อติดต่อ
ข้อมูลติดต่อ Engage-developers@google.com หากมี คำถามใดๆ ระหว่างขั้นตอนการผสานรวม
ขั้นตอนถัดไป
หลังจากผสานรวมเสร็จแล้ว ขั้นตอนถัดไปของคุณมีดังนี้
- ส่งอีเมลถึง Engage-developers@google.com และ แนบ APK ที่ผสานรวมซึ่งพร้อมสำหรับการทดสอบโดย Google
- Google จะดำเนินการยืนยันและตรวจสอบเป็นการภายใน ทำงานตามที่คาดไว้ หากจำเป็น Google จะติดต่อคุณ พร้อมรายละเอียดที่จำเป็น
- เมื่อการทดสอบเสร็จสิ้นและไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ Google จะติดต่อหาคุณ จะแจ้งให้คุณทราบว่าคุณสามารถเริ่มเผยแพร่ APK ที่อัปเดตแล้วและผสานรวมได้ Play Store
- หลังจากที่ Google ยืนยันว่า APK ที่อัปเดตแล้วของคุณได้รับการเผยแพร่ไปยัง Play Store, คำแนะนำ, เกมแนะนำ และความต่อเนื่อง อาจมีการเผยแพร่คลัสเตอร์และผู้ใช้มองเห็น