กระตุ้นการมีส่วนร่วมในแอปด้วยการเข้าถึงผู้ใช้ในที่ที่ผู้ใช้อยู่ ผสานรวม Engage SDK เพื่อส่งคำแนะนำที่ปรับเปลี่ยนตามการใช้งานของผู้ใช้และเนื้อหาต่อเนื่องไปยัง ผู้ใช้โดยตรงในแพลตฟอร์มต่างๆ ในอุปกรณ์ เช่น คอลเล็กชัน, Entertainment Space และ Google Play Store การผสานรวมจะเพิ่มขนาด APK โดยเฉลี่ยไม่ถึง 50 KB (บีบอัด) และใช้เวลาของนักพัฒนาแอปประมาณ 1 สัปดาห์สำหรับแอปส่วนใหญ่ ดูข้อมูลเพิ่มเติมได้ที่เว็บไซต์ ธุรกิจ
คู่มือนี้มีวิธีการสำหรับพาร์ทเนอร์นักพัฒนาแอปในการส่งเนื้อหาด้านสุขภาพและฟิตเนสไปยังแพลตฟอร์มเนื้อหา Engage
รายละเอียดการผสานรวม
คำศัพท์
การผสานรวมนี้มีคลัสเตอร์ 3 ประเภท ได้แก่ คำแนะนำ แนะนำ และดูต่อ
คลัสเตอร์คำแนะนำจะแสดงคำแนะนำด้านสุขภาพและการออกกำลังกายที่ปรับเปลี่ยนในแบบของคุณ จากพาร์ทเนอร์นักพัฒนาแอปแต่ละราย คำแนะนำเหล่านี้อาจเป็น แบบเฉพาะบุคคลสำหรับผู้ใช้หรือแบบทั่วไป (เช่น การออกกำลังกายและ สุขภาพที่กำลังมาแรง) ใช้เพื่อแสดงบทความหรือผู้ที่เกี่ยวข้องกับสุขภาพและฟิตเนส
- คลัสเตอร์คำแนะนำอาจประกอบด้วย
ArticleEntity
,PersonEntity
หรือEventEntity
แต่จะผสมประเภทเอนทิตีต่างๆ ไม่ได้
คำแนะนำจะมีโครงสร้างดังนี้
คลัสเตอร์คำแนะนำ: มุมมอง UI ที่มีกลุ่มคำแนะนำจากพาร์ทเนอร์นักพัฒนาแอปรายเดียวกัน
เอนทิตี: ออบเจ็กต์ที่แสดงรายการเดียวในคลัสเตอร์ การผสานรวมนี้มีเอนทิตีบางอย่างที่จะแสดงโดยใช้ คลัสเตอร์คำแนะนำ ดังนี้
ArticleEntity: ArticleEntity แสดงถึงคำแนะนำสำหรับ เนื้อหาที่เป็นข้อความซึ่งเกี่ยวข้องกับสุขภาพและการออกกำลังกาย โดยสามารถใช้กับบทความ บล็อกโพสต์ เนื้อหาทางการตลาด ข่าวสารย่อ ฯลฯ
รูปที่ 1: UI ที่แสดง ArticleEntity รายการเดียวภายในคลัสเตอร์คำแนะนำ PersonEntity: PersonEntity แสดงถึงบุคคล คำแนะนำอาจเป็นการไฮไลต์โค้ชหรือบุคคลใดก็ตามที่เกี่ยวข้อง กับสุขภาพและการออกกำลังกาย เป็นต้น
รูปที่ 2: UI แสดง PersonEntity รายการเดียวภายใน คลัสเตอร์คำแนะนำ EventEntity: EventEntity แสดงถึงกิจกรรมที่จะเกิดขึ้นในอนาคต เวลาเริ่มต้นของกิจกรรมเป็นข้อมูลสําคัญที่ต้องแจ้งให้ผู้ใช้ทราบ เอนทิตีนี้อาจใช้เพื่อแสดงกิจกรรมต่างๆ เช่น ค่ายบริจาคเลือด เซสชันการฝึกอบรม คลาสยิมหรือโยคะ ฯลฯ ที่เกี่ยวข้องกับสุขภาพและการออกกําลังกาย
รูปที่ 3: UI ที่แสดง EventEntity เดียว ภายในคลัสเตอร์คำแนะนำ
- คลัสเตอร์คำแนะนำอาจประกอบด้วย
คลัสเตอร์ความต่อเนื่องจะแสดงเนื้อหาที่ผู้ใช้มีส่วนร่วมด้วยล่าสุดจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการจัดกลุ่ม UI เดียว พาร์ทเนอร์นักพัฒนาแอปแต่ละราย จะได้รับอนุญาตให้เผยแพร่เอนทิตีได้สูงสุด 10 รายการในคลัสเตอร์ "ดูต่อ"
เนื้อหาต่อเนื่องของคุณอาจมีโครงสร้างต่อไปนี้
ArticleEntity: ArticleEntity แสดงถึงคำแนะนำสำหรับ เนื้อหาที่เป็นข้อความซึ่งเกี่ยวข้องกับสุขภาพและการออกกำลังกาย เอนทิตีนี้สามารถ ใช้เพื่อแสดงบทความข่าวหรือเนื้อหาอื่นๆ ที่ยังไม่เสร็จ ซึ่งผู้ใช้ต้องการอ่านต่อจากที่ค้างไว้ ตัวอย่างเช่น ข่าว ข้อมูลโค้ด ข้อมูลโค้ดบล็อกโพสต์เกี่ยวกับหัวข้อที่เกี่ยวข้องกับสุขภาพหรือฟิตเนส
รูปที่ 6 UI แสดง ArticleEntity รายการเดียวภายใน คลัสเตอร์ต่อเนื่อง EventReservationEntity: EventReservationEntity แสดงถึง การจองกิจกรรม และช่วยให้ผู้ใช้ติดตามการจองกิจกรรมฟิตเนสและสุขภาพที่กำลังจะเกิดขึ้นหรือกำลังดำเนินอยู่ เช่น เซสชันการฝึกอบรม
รูปที่ 8 UI ที่แสดง EventReservationEntity รายการเดียว ภายในคลัสเตอร์การติดตาม
คลัสเตอร์แนะนำจะแสดงตัวเลือกเอนทิตีจากพาร์ทเนอร์นักพัฒนาแอปหลายราย ในการจัดกลุ่ม UI เดียว โดยจะมีคลัสเตอร์ "แนะนำ" เพียงคลัสเตอร์เดียว ซึ่งจะแสดงที่ด้านบนของ UI พร้อมการจัดวางที่มีลำดับความสำคัญสูงกว่าคลัสเตอร์คำแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายจะได้รับอนุญาตให้ ออกอากาศเอนทิตีได้สูงสุด 10 รายการในคลัสเตอร์แนะนำ
GenericFeaturedEntity: GenericFeaturedEntity แตกต่างจาก รายการแนะนำตรงที่ควรใช้รายการแนะนำสำหรับ เนื้อหายอดนิยมรายการเดียวจากนักพัฒนาแอป และควรแสดงเนื้อหาที่สำคัญที่สุด เพียงรายการเดียวซึ่งจะน่าสนใจและเกี่ยวข้องกับผู้ใช้
รูปที่ 12: UI ที่แสดงฮีโร่เดี่ยว การ์ด 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'
}
สรุป
การออกแบบนี้อิงตามการใช้งานบริการที่เชื่อมโยง
ข้อมูลที่ไคลเอ็นต์เผยแพร่ได้จะขึ้นอยู่กับขีดจำกัดต่อไปนี้สำหรับคลัสเตอร์ประเภทต่างๆ
ประเภทคลัสเตอร์ | ขีดจำกัดของคลัสเตอร์ | ขีดจำกัดของเอนทิตีขั้นต่ำในคลัสเตอร์ | ขีดจำกัดสูงสุดของเอนทิตีในคลัสเตอร์ |
---|---|---|---|
คลัสเตอร์คำแนะนำ | ไม่เกิน 7 | อย่างน้อย 1 รายการ | สูงสุด 50 รายการ (ArticleEntity , PersonEntity หรือ
EventEntity ) |
คลัสเตอร์ความต่อเนื่อง | มากที่สุด 1 | อย่างน้อย 1 รายการ | สูงสุด 20 รายการ (ArticleEntity หรือ
EventReservationEntity ) |
คลัสเตอร์แนะนำ | มากที่สุด 1 | อย่างน้อย 1 รายการ | สูงสุด 20 (GenericFeaturedEntity ) |
ขั้นตอนที่ 1: ระบุข้อมูลนิติบุคคล
SDK ได้กำหนดเอนทิตีต่างๆ เพื่อแสดงรายการแต่ละประเภท เรารองรับ เอนทิตีต่อไปนี้สำหรับหมวดหมู่สุขภาพและการออกกำลังกาย
GenericFeaturedEntity
ArticleEntity
PersonEntity
EventEntity
EventReservationEntity
แผนภูมิด้านล่างแสดงแอตทริบิวต์ที่มีและข้อกำหนดสำหรับแต่ละประเภท
GenericFeaturedEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI ของการดำเนินการ | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปของผู้ให้บริการ หมายเหตุ: คุณใช้ Deep Link สำหรับการระบุแหล่งที่มาได้ โปรดดูคำถามที่พบบ่อยนี้ |
URI |
ภาพโปสเตอร์ | ต้องระบุ | เราจะแสดงรูปภาพเพียง 1 รูปเมื่อได้รับรูปภาพหลายรูป สัดส่วนภาพที่แนะนําคือ 16:9 หมายเหตุ: หากมีป้าย โปรดเว้นพื้นที่ปลอดภัย 24 dp ทั้งด้านบนและด้านล่างของรูปภาพ |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
ชื่อ | ไม่บังคับ | ชื่อของเอนทิตี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: 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 dp ทั้งด้านบนและด้านล่างของ รูปภาพ |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
แหล่งที่มา - ชื่อ | ไม่บังคับ | ชื่อผู้เขียน องค์กร หรือผู้สื่อข่าว | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 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 อักขระ |
โปรไฟล์ - รูปภาพเพิ่มเติม | ไม่บังคับ | รูปภาพขนาดเล็ก เช่น ป้ายยืนยัน | ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
รูปภาพส่วนหัว | ไม่บังคับ | เราจะแสดงรูปภาพเพียง 1 รูปเมื่อได้รับรูปภาพหลายรูป สัดส่วนภาพที่แนะนําคือ 16:9 หมายเหตุ: ขอแนะนำให้ใช้รูปภาพ หากมีป้าย โปรดเว้นพื้นที่ปลอดภัย 24 dp ทั้งด้านบนและด้านล่างของ รูปภาพ |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
ความนิยม - จำนวน | ไม่บังคับ |
ระบุจำนวนผู้ติดตามหรือค่าความนิยม เช่น - "3.7 ล้าน" หมายเหตุ: หากระบุทั้งจำนวนและมูลค่าของจำนวน ระบบจะใช้จำนวน |
สตริง ขนาดข้อความที่แนะนำ: สูงสุด 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 dp ทั้งด้านบนและด้านล่างของ รูปภาพ |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
สถานที่ - ประเทศ | ต้องระบุแบบมีเงื่อนไข | ประเทศที่เกิดเหตุการณ์ หมายเหตุ: ต้องระบุสำหรับกิจกรรมที่เป็น IN_PERSON หรือ HYBRID |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ - เมือง | ต้องระบุแบบมีเงื่อนไข | เมืองที่จัดกิจกรรม หมายเหตุ: ต้องระบุสำหรับกิจกรรมที่เป็น IN_PERSON หรือ HYBRID |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ตั้ง - แสดงที่อยู่ | ต้องระบุแบบมีเงื่อนไข | ที่อยู่หรือชื่อสถานที่จัดกิจกรรมที่ควรแสดงต่อผู้ใช้ หมายเหตุ: ต้องระบุสำหรับกิจกรรมที่เป็น IN_PERSON หรือ HYBRID |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ตั้ง - ที่อยู่ | ไม่บังคับ | ที่อยู่ (หากมี) ของสถานที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ - รัฐ | ไม่บังคับ | รัฐหรือจังหวัด (หากมี) ที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ตั้ง - รหัสไปรษณีย์ | ไม่บังคับ | รหัสไปรษณีย์ (หากมี) ของสถานที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ - ย่าน | ไม่บังคับ | ย่านใกล้เคียง (หากมี) ที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
เวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch เมื่อคาดว่ากิจกรรมจะสิ้นสุด หมายเหตุ: ค่านี้จะแสดงในหน่วยมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
คำอธิบาย | ไม่บังคับ | ข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: ระบบจะแสดงคำอธิบายหรือรายการคำบรรยายแทนเสียงอย่างใดอย่างหนึ่งต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายแทนเสียงสูงสุด 3 รายการ โดยแต่ละรายการเป็นข้อความ 1 บรรทัด หมายเหตุ: ระบบจะแสดงคำอธิบายหรือรายการคำบรรยายแทนเสียงอย่างใดอย่างหนึ่งต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแทนเสียงแต่ละรายการ: สูงสุด 50 อักขระ |
ป้าย | ไม่บังคับ |
ป้ายแต่ละป้ายเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก |
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ต้องมีข้อความหรือรูปภาพสำหรับป้าย |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - รูปภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การปรับแต่ง UX พิเศษ เช่น การวางป้ายซ้อนทับบนภาพ/วิดีโอ ภาพปก หมายเหตุ: ต้องมีข้อความหรือรูปภาพสำหรับป้าย |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
ราคา - CurrentPrice | ต้องมีแบบมีเงื่อนไข |
ราคาปัจจุบันของตั๋ว/บัตรผ่านสำหรับกิจกรรม ต้องระบุหากระบุราคาที่ขีดฆ่า |
ข้อความอิสระ |
ราคา - StrikethroughPrice | ไม่บังคับ | ราคาเดิมของตั๋ว/บัตรผ่านสำหรับกิจกรรม | ข้อความอิสระ |
ข้อความไฮไลต์ราคา | ไม่บังคับ | ข้อความราคาเพื่อแสดงโปรโมชัน กิจกรรม ส่วนลดสำหรับสมาชิก หากมี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความที่ยาวเกินไป อาจแสดงเป็นจุดไข่ปลา) |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ที่มีสิทธิ์
ดูคำแนะนำได้ที่ส่วนหมวดหมู่เนื้อหา |
EventReservationEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI ของการดำเนินการ | ต้องระบุ |
Deep Link ไปยังเอนทิตีในแอปของผู้ให้บริการ หมายเหตุ: คุณใช้ Deep Link สำหรับการระบุแหล่งที่มาได้ โปรดดูคำถามที่พบบ่อยนี้ |
URI |
ชื่อ | ต้องระบุ | ชื่อของเอนทิตี | สตริง ขนาดข้อความที่แนะนำ: สูงสุด 50 อักขระ |
เวลาเริ่มต้น | ต้องระบุ |
การประทับเวลา Epoch เมื่อคาดว่ากิจกรรมจะเริ่มต้น หมายเหตุ: ค่านี้จะแสดงในหน่วยมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
โหมดกิจกรรม | ต้องระบุ | ฟิลด์สำหรับระบุว่ากิจกรรมจะเป็นแบบเสมือนจริง แบบเข้าร่วมด้วยตนเอง หรือทั้ง 2 แบบ |
Enum: VIRTUAL, IN_PERSON หรือ HYBRID |
สถานที่ - ประเทศ | ต้องระบุแบบมีเงื่อนไข | ประเทศที่เกิดเหตุการณ์ หมายเหตุ: ต้องระบุสำหรับกิจกรรมที่เป็น IN_PERSON หรือ HYBRID |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ - เมือง | ต้องระบุแบบมีเงื่อนไข | เมืองที่จัดกิจกรรม หมายเหตุ: ต้องระบุสำหรับกิจกรรมที่เป็น IN_PERSON หรือ HYBRID |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ตั้ง - แสดงที่อยู่ | ต้องระบุแบบมีเงื่อนไข | ที่อยู่หรือชื่อสถานที่จัดกิจกรรมที่ควรแสดงต่อผู้ใช้ หมายเหตุ: ต้องระบุสำหรับกิจกรรมที่เป็น IN_PERSON หรือ HYBRID |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ตั้ง - ที่อยู่ | ไม่บังคับ | ที่อยู่ (หากมี) ของสถานที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ - รัฐ | ไม่บังคับ | รัฐหรือจังหวัด (หากมี) ที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ตั้ง - รหัสไปรษณีย์ | ไม่บังคับ | รหัสไปรษณีย์ (หากมี) ของสถานที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
สถานที่ - ย่าน | ไม่บังคับ | ย่านใกล้เคียง (หากมี) ที่จัดกิจกรรม | ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุดประมาณ 20 อักขระ |
ภาพโปสเตอร์ | ไม่บังคับ | เราจะแสดงรูปภาพเพียง 1 รูปเมื่อได้รับรูปภาพหลายรูป สัดส่วนภาพที่แนะนําคือ 16:9 หมายเหตุ: ขอแนะนำให้ใช้รูปภาพ หากมีป้าย โปรดเว้นพื้นที่ปลอดภัย 24 dp ทั้งด้านบนและด้านล่างของ รูปภาพ |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
เวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch เมื่อคาดว่ากิจกรรมจะสิ้นสุด หมายเหตุ: ค่านี้จะแสดงในหน่วยมิลลิวินาที |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
ผู้ให้บริการ - ชื่อ | ไม่บังคับ |
ชื่อผู้ให้บริการ หมายเหตุ: ผู้ให้บริการต้องระบุข้อความหรือรูปภาพอย่างใดอย่างหนึ่ง |
ข้อความอิสระ เช่น ชื่อของผู้จัดกิจกรรม/ทัวร์ |
ผู้ให้บริการ - รูปภาพ | ไม่บังคับ |
โลโก้/รูปภาพของผู้ให้บริการ หมายเหตุ: ผู้ให้บริการต้องระบุข้อความหรือรูปภาพอย่างใดอย่างหนึ่ง |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
คำอธิบาย | ไม่บังคับ | ข้อความ 1 ย่อหน้าเพื่ออธิบายเอนทิตี หมายเหตุ: ระบบจะแสดงคำอธิบายหรือรายการคำบรรยายแทนเสียงอย่างใดอย่างหนึ่งต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายแทนเสียงสูงสุด 3 รายการ โดยแต่ละรายการเป็นข้อความ 1 บรรทัด หมายเหตุ: ระบบจะแสดงคำอธิบายหรือรายการคำบรรยายแทนเสียงอย่างใดอย่างหนึ่งต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแทนเสียงแต่ละรายการ: สูงสุด 50 อักขระ |
ป้าย | ไม่บังคับ |
ป้ายแต่ละป้ายเป็นข้อความอิสระ (สูงสุด 15 อักขระ) หรือรูปภาพขนาดเล็ก |
|
ป้าย - ข้อความ | ไม่บังคับ | ชื่อสำหรับป้าย หมายเหตุ: ต้องมีข้อความหรือรูปภาพสำหรับป้าย |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 15 อักขระ |
ป้าย - รูปภาพ | ไม่บังคับ | รูปภาพขนาดเล็ก การปรับแต่ง UX พิเศษ เช่น การวางป้ายซ้อนทับบนภาพ/วิดีโอ ภาพปก หมายเหตุ: ต้องมีข้อความหรือรูปภาพสำหรับป้าย |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
รหัสการจอง | ไม่บังคับ | รหัสการจองสำหรับการจองกิจกรรม | ข้อความอิสระ |
ราคา - CurrentPrice | ต้องมีแบบมีเงื่อนไข |
ราคาปัจจุบันของตั๋ว/บัตรผ่านสำหรับกิจกรรม ต้องระบุหากระบุราคาที่ขีดฆ่า |
ข้อความอิสระ |
ราคา - StrikethroughPrice | ไม่บังคับ | ราคาเดิมของตั๋ว/บัตรผ่านสำหรับกิจกรรม | ข้อความอิสระ |
ข้อความไฮไลต์ราคา | ไม่บังคับ | ข้อความราคาเพื่อแสดงโปรโมชัน กิจกรรม ส่วนลดสำหรับสมาชิก หากมี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความที่ยาวเกินไป อาจแสดงเป็นจุดไข่ปลา) |
การจัดประเภท - ค่าสูงสุด | ไม่บังคับ | ค่าสูงสุดของระดับการให้คะแนน ต้องระบุหากมีการระบุค่าปัจจุบันของการจัดประเภทด้วย |
ตัวเลข >= 0.0 |
การจัดประเภท - ค่าปัจจุบัน | ไม่บังคับ | ค่าปัจจุบันของระดับการให้คะแนน ต้องระบุหากระบุค่าสูงสุดของการจัดประเภทด้วย |
ตัวเลข >= 0.0 |
การให้คะแนน - จำนวน | ไม่บังคับ | จำนวนการให้คะแนนสำหรับกิจกรรม หมายเหตุ: ระบุฟิลด์นี้หากแอปต้องการ ควบคุมวิธีแสดงต่อผู้ใช้ โปรดระบุสตริงที่กระชับ ซึ่งแสดงต่อผู้ใช้ได้ เช่น หากจำนวนคือ 1,000,000 ให้พิจารณาใช้ตัวย่อ เช่น 1M เพื่อไม่ให้ระบบตัดข้อความ ในขนาดการแสดงผลที่เล็กลง |
สตริง |
การจัดประเภท - ค่าจำนวน | ไม่บังคับ | จำนวนการให้คะแนนสำหรับกิจกรรม หมายเหตุ: ระบุช่องนี้หากไม่ต้องการจัดการ ตรรกะการย่อคำที่แสดงด้วยตนเอง หากมีทั้งจำนวนและค่าจำนวน เราจะใช้จำนวนเพื่อแสดงต่อผู้ใช้ |
ยาว |
หมวดหมู่เนื้อหา | ไม่บังคับ | อธิบายหมวดหมู่ของเนื้อหาในเอนทิตี | รายการ Enum ที่มีสิทธิ์
ดูคำแนะนำได้ที่ส่วนหมวดหมู่เนื้อหา |
ข้อกำหนดเกี่ยวกับรูปภาพ
ข้อกำหนดที่จำเป็นสำหรับชิ้นงานรูปภาพแสดงอยู่ในตารางนี้
สัดส่วนภาพ | พิกเซลขั้นต่ำ | พิกเซลที่แนะนํา |
---|---|---|
สี่เหลี่ยมจัตุรัส (1x1) Preferred |
300x300 | 1200x1200 |
แนวนอน (1.91x1) | 600x314 | 1200x628 |
แนวตั้ง (4x5) | 480x600 | 960x1200 |
รูปภาพต้องโฮสต์อยู่ใน CDN สาธารณะเพื่อให้ Google เข้าถึง รูปภาพได้
รูปแบบไฟล์
PNG, JPG, GIF แบบภาพนิ่ง, WebP
ขนาดไฟล์สูงสุด
5120 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 จะมีเพียงหมวดหมู่ย่อย ของหมวดหมู่เหล่านี้เท่านั้นที่มีสิทธิ์ ตรวจสอบรายการหมวดหมู่ที่มีสิทธิ์สำหรับ ประเภทเอนทิตีก่อนที่จะป้อนข้อมูลในรายการ
ใช้ประเภทเอนทิตีที่เฉพาะเจาะจงสำหรับหมวดหมู่เนื้อหาบางหมวดหมู่แทนการใช้ร่วมกัน ของเอนทิตีทั่วไปและ ContentCategory
- TYPE_MOVIES_AND_TV_SHOWS - ดูเอนทิตีจากคู่มือการผสานรวมการดูก่อนใช้ เอนทิตีทั่วไป
- TYPE_BOOKS - ตรวจสอบ EbookEntity ก่อนใช้เอนทิตีทั่วไป
- TYPE_AUDIOBOOKS - ตรวจสอบ AudiobookEntity ก่อน ใช้เอนทิตีทั่วไป
- TYPE_SHOPPING - Check out ShoppingEntity before using the generic entities.
- 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
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอใน Continuation Cluster ที่อัปเดต
ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะเดิมไว้
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
หากไม่มีการเผยแพร่คลัสเตอร์ใดเลยเนื่องด้วยเหตุผลทางธุรกิจภายใน เราขอแนะนำให้อัปเดตสถานะการเผยแพร่โดยใช้ API updatePublishStatus ซึ่งเป็นสิ่งสำคัญเนื่องจากเหตุผลต่อไปนี้
- การระบุสถานะในทุกสถานการณ์ แม้ว่าเนื้อหาจะเผยแพร่แล้ว (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 จะ แนะนําให้เผยแพร่การ์ดลงชื่อเข้าใช้ หากผู้ให้บริการไม่สามารถเผยแพร่การ์ดลงชื่อเข้าใช้ได้ไม่ว่าด้วยเหตุผลใดก็ตาม เราขอแนะนำให้เรียกใช้ API updatePublishStatus ด้วยรหัสสถานะ NOT_PUBLISHED_REQUIRES_SIGN_IN
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 นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์การต่อเนื่อง
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
พร้อมสาเหตุที่รวมเป็นรหัสข้อผิดพลาด
รหัสข้อผิดพลาด | ชื่อข้อผิดพลาด | หมายเหตุ |
---|---|---|
1 |
SERVICE_NOT_FOUND |
บริการไม่พร้อมใช้งานในอุปกรณ์ที่ระบุ |
2 |
SERVICE_NOT_AVAILABLE |
บริการพร้อมใช้งานในอุปกรณ์ที่ระบุ แต่ไม่พร้อมใช้งาน ในเวลาที่โทร (เช่น ปิดใช้บริการอย่างชัดเจน) |
3 |
SERVICE_CALL_EXECUTION_FAILURE |
การดำเนินการงานล้มเหลวเนื่องจากปัญหาการแยกเธรด ในกรณีนี้ คุณสามารถ ลองอีกครั้งได้ |
4 |
SERVICE_CALL_PERMISSION_DENIED |
ผู้โทรไม่ได้รับอนุญาตให้โทรหาบริการ |
5 |
SERVICE_CALL_INVALID_ARGUMENT |
คำขอมีข้อมูลที่ไม่ถูกต้อง (เช่น มีคลัสเตอร์มากกว่าจำนวนที่อนุญาต) |
6 |
SERVICE_CALL_INTERNAL |
เกิดข้อผิดพลาดที่ฝั่งบริการ |
7 |
SERVICE_CALL_RESOURCE_EXHAUSTED |
มีการเรียกใช้บริการบ่อยเกินไป |
ขั้นตอนที่ 3: จัดการ Intent การออกอากาศ
นอกเหนือจากการเรียกใช้ API การเผยแพร่เนื้อหาผ่านงานแล้ว คุณยังต้องตั้งค่า
BroadcastReceiver
เพื่อรับ
คำขอเผยแพร่เนื้อหาด้วย
เป้าหมายของความตั้งใจในการออกอากาศคือการเปิดใช้งานแอปอีกครั้งและการบังคับซิงค์ข้อมูลเป็นหลัก Broadcast Intents ไม่ได้ออกแบบมาให้ส่งบ่อยมาก ระบบจะทริกเกอร์การอัปเดตก็ต่อเมื่อบริการ 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),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Featured Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Continuation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
}
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),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
}
ประกาศการติดตั้งใช้งานแบบคงที่ด้วยแท็ก
<receiver>
ในไฟล์AndroidManifest.xml
ซึ่งจะช่วยให้แอปพลิเคชันรับ Broadcast Intent ได้เมื่อไม่ได้ทำงานอยู่ และยังช่วยให้แอปพลิเคชันเผยแพร่ เนื้อหาได้ด้วย
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
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>
บริการจะส่ง Intent ต่อไปนี้
com.google.android.engage.action.PUBLISH_RECOMMENDATION
เราขอแนะนำ ให้เริ่มpublishRecommendationClusters
เมื่อได้รับความตั้งใจนี้com.google.android.engage.action.PUBLISH_FEATURED
เราขอแนะนำให้เริ่มการโทรpublishFeaturedCluster
เมื่อได้รับ Intent นี้com.google.android.engage.action.PUBLISH_CONTINUATION
เราขอแนะนำให้เริ่มการโทรpublishContinuationCluster
เมื่อได้รับ Intent นี้
เวิร์กโฟลว์การผสานรวม
ดูคำแนะนำแบบทีละขั้นตอนเกี่ยวกับการยืนยันการผสานรวมหลังจากเสร็จสมบูรณ์ได้ที่ เวิร์กโฟลว์การผสานรวมนักพัฒนาแอป Engage
คำถามที่พบบ่อย
ดูคำถามที่พบบ่อยได้ที่คำถามที่พบบ่อยเกี่ยวกับ Engage SDK
รายชื่อติดต่อ
โปรดติดต่อ
engage-developers@google.com
หากมีคำถาม
ในระหว่างกระบวนการผสานรวม
ขั้นตอนถัดไป
หลังจากผสานรวมเสร็จสมบูรณ์แล้ว ขั้นตอนถัดไปมีดังนี้
- ส่งอีเมลไปที่
engage-developers@google.com
และ แนบ APK ที่ผสานรวมแล้วซึ่งพร้อมให้ Google ทดสอบ - Google จะทำการยืนยันและตรวจสอบภายในเพื่อให้แน่ใจว่าการผสานรวมทำงานได้ตามที่คาดไว้ หากจำเป็นต้องเปลี่ยนแปลง Google จะติดต่อคุณพร้อมรายละเอียดที่จำเป็น
- เมื่อการทดสอบเสร็จสมบูรณ์และไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ Google จะติดต่อคุณเพื่อ แจ้งให้ทราบว่าคุณเริ่มเผยแพร่ APK ที่อัปเดตและผสานรวมแล้วไปยัง Play Store ได้
- หลังจาก Google ยืนยันว่า APK ที่อัปเดตแล้วได้รับการเผยแพร่ใน Play Store แล้ว ระบบอาจเผยแพร่คลัสเตอร์แนะนำ แนะนำ และเล่นต่อ และผู้ใช้จะมองเห็นคลัสเตอร์ดังกล่าว