Google กำลังสร้างแพลตฟอร์มในอุปกรณ์ที่ช่วยจัดระเบียบ แอปแยกตามประเภทธุรกิจ และมอบประสบการณ์ดื่มด่ำกับประสบการณ์ใหม่ สำหรับการบริโภคเนื้อหาแอปที่ปรับเปลี่ยนในแบบของคุณ และการค้นพบ ประสบการณ์แบบเต็มหน้าจอนี้มอบ โอกาสในการแสดงเนื้อหาจำนวนมากที่ดีที่สุด ในช่องทางเฉพาะภายนอก ของแอปของตนได้อย่างไร
คู่มือนี้มีวิธีสำหรับพาร์ทเนอร์นักพัฒนาแอปในการผสานรวม คอนเทนต์ช็อปปิ้งโดยใช้ Engage SDK เพื่อป้อนข้อมูลทั้งพื้นที่ใหม่นี้ และแพลตฟอร์มที่มีอยู่ของ Google เช่น Entertainment Space
รายละเอียดการผสานรวม
คำศัพท์
การผสานรวมนี้ประกอบด้วยคลัสเตอร์ 5 ประเภทต่อไปนี้ คําแนะนํา, สินค้าแนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง สั่งซื้ออีกครั้ง และ การติดตามคำสั่งซื้อ Shopping
คลัสเตอร์คำแนะนำแสดงคำแนะนำการเลือกซื้อที่ปรับเปลี่ยนในแบบของคุณจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์แต่ละราย คำแนะนำเหล่านี้สามารถนำไปปรับเปลี่ยนให้สอดคล้องกับ ผู้ใช้ หรือแบบทั่วไป (เช่น รายการมาแรง) ใช้ตัวกรองเหล่านี้เพื่อแสดงเนื้อหา ผลิตภัณฑ์ กิจกรรม การลดราคา โปรโมชัน การสมัครใช้บริการ ตามความเหมาะสม
คำแนะนำจะมีโครงสร้างต่อไปนี้
คลัสเตอร์คำแนะนำ: มุมมอง UI ที่มีกลุ่มของ คำแนะนำจากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์รายเดียวกัน
ShoppingEntity: ออบเจ็กต์ที่แสดงถึงสินค้ารายการเดียวในคลัสเตอร์
คลัสเตอร์แนะนำจะแสดง Hero
ShoppingEntity
ที่เลือกจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ใน การจัดกลุ่ม UI เดียว มีแท็บแนะนำ 1 รายการ ซึ่งแสดงอยู่บริเวณด้านบนของ UI โดยมีลำดับความสำคัญ ตำแหน่งด้านบนคลัสเตอร์คำแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละราย ได้รับอนุญาตให้เผยแพร่ ShoppingEntity รายการเดียวในคลัสเตอร์ "แนะนำ"คลัสเตอร์รถเข็นช็อปปิ้งจะแสดงตัวอย่างภาพรถเข็นช็อปปิ้งจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ในการจัดกลุ่ม UI เดียว โดยยุยงให้ผู้ใช้ดำเนินการ รถเข็นที่ยังไม่ได้ชำระ มีคลัสเตอร์รถเข็นช็อปปิ้งรายการเดียวซึ่งก็คือ ปรากฏใกล้กับด้านบนของ UI โดยมีลำดับความสำคัญเหนือตำแหน่งทั้งหมด คลัสเตอร์คำแนะนำ พาร์ทเนอร์นักพัฒนาซอฟต์แวร์แต่ละรายได้รับอนุญาตให้เผยแพร่ 3
ShoppingCart
รายการในคลัสเตอร์รถเข็นช็อปปิ้งรถเข็นช็อปปิ้งของคุณมีโครงสร้างต่อไปนี้
คลัสเตอร์รถเข็นช็อปปิ้ง: มุมมอง UI ที่มีกลุ่มรถเข็นช็อปปิ้ง ตัวอย่างรถเข็นจากพาร์ทเนอร์นักพัฒนาแอปหลายราย
รถเข็นช็อปปิ้ง: ออบเจ็กต์ที่แสดงตัวอย่างรถเข็นช็อปปิ้ง สำหรับพาร์ทเนอร์นักพัฒนาซอฟต์แวร์รายเดียว แสดงในรถเข็นช็อปปิ้ง คลัสเตอร์
ShoppingCart
ต้องแสดงจำนวนรายการทั้งหมดใน รถเข็นและอาจใส่รูปภาพสินค้าบางรายการในรถเข็นของผู้ใช้ด้วย
คลัสเตอร์รายการช็อปปิ้งแสดงตัวอย่างการช็อปปิ้ง จากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายในการจัดกลุ่ม UI เดียว ซึ่งกระตุ้นให้ผู้ใช้ดำเนินการ กลับไปยังแอปที่เกี่ยวข้องเพื่ออัปเดตและทำรายการให้เสร็จสมบูรณ์ มี คลัสเตอร์รายการช็อปปิ้งเดียว
คลัสเตอร์สั่งซื้อใหม่จะแสดงตัวอย่างคำสั่งซื้อก่อนหน้านี้จาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายในการจัดกลุ่ม UI เดียว เพื่อกระตุ้นให้ผู้ใช้สั่งซื้อใหม่ มีคลัสเตอร์ "เรียงลำดับใหม่" เดียว
คลัสเตอร์ที่เรียงลำดับใหม่ต้องแสดงจำนวนรายการทั้งหมดใน คำสั่งซื้อก่อนหน้าของผู้ใช้ และต้องรวมรายการใดรายการหนึ่งต่อไปนี้ด้วย:
- รูปภาพสำหรับสินค้า X ในคำสั่งซื้อก่อนหน้าของผู้ใช้
- ป้ายกำกับสำหรับรายการ X ในคำสั่งซื้อก่อนหน้านี้ของผู้ใช้
คลัสเตอร์การติดตามคำสั่งซื้อของ Shopping แสดงตัวอย่างของคำว่ารอดำเนินการ หรือเพิ่งเสร็จสิ้นคำสั่งซื้อจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายได้ใน UI เดียว การจัดกลุ่ม เพื่อช่วยให้ผู้ใช้ติดตามคำสั่งซื้อของตนได้
มีคลัสเตอร์ ShoppingOrderTracking เดี่ยวที่ปรากฏขึ้น ใกล้ด้านบนของ UI โดยมีตำแหน่งลำดับความสำคัญอยู่เหนือคำแนะนำทั้งหมด คลัสเตอร์ พาร์ทเนอร์นักพัฒนาซอฟต์แวร์แต่ละรายได้รับอนุญาตให้เผยแพร่ สินค้า ShoppingOrderTrackingEntity ในคลัสเตอร์การติดตามคำสั่งซื้อช็อปปิ้ง
ShoppingOrderTrackingCluster ของคุณมีโครงสร้างต่อไปนี้
- คลัสเตอร์ ShoppingOrderTracking: มุมมอง UI ที่มีกลุ่มของ ตัวอย่างการติดตามคำสั่งซื้อจากพาร์ทเนอร์นักพัฒนาแอปหลายราย
- ShoppingOrderTrackingEntity: ออบเจ็กต์ที่แสดงคำสั่งซื้อช็อปปิ้ง สำหรับการติดตามพาร์ทเนอร์นักพัฒนาซอฟต์แวร์ รายเดียวที่จะแสดงใน คลัสเตอร์การติดตามคำสั่งซื้อช็อปปิ้ง ShoppingOrderTrackingEntity ต้องแสดง สถานะของคำสั่งซื้อและเวลาสั่งซื้อ เราขอแนะนำ ป้อนเวลานำส่งที่คาดไว้สำหรับ ShoppingOrderTrackingEntity แสดงต่อผู้ใช้หากมี
งานก่อนเริ่มเวิร์กช็อป
ระดับ 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'
}
ดูข้อมูลเพิ่มเติมได้ที่การแสดงแพ็กเกจใน Android 11
สรุป
การออกแบบนี้มาจากการใช้ ขอบเขต service [บริการ]
ข้อมูลที่ไคลเอ็นต์เผยแพร่ได้จะขึ้นอยู่กับขีดจำกัดต่อไปนี้สำหรับ ประเภทคลัสเตอร์
ประเภทคลัสเตอร์ | ขีดจำกัดของคลัสเตอร์ | ขีดจำกัดเอนทิตีสูงสุดในคลัสเตอร์ |
---|---|---|
คลัสเตอร์คำแนะนำ | สูงสุด 5 รายการ | สูงสุด 25 ShoppingEntity |
คลัสเตอร์แนะนำ | มากที่สุด 1 | สูงสุด 1 ShoppingEntity |
คลัสเตอร์รถเข็นช็อปปิ้ง | มากที่สุด 1 | สูงสุด 3 ShoppingCart
คาดหวังรถเข็นหลายรายการสำหรับแอปที่มีรถเข็นแยกกันต่อผู้ขาย 1 รายเท่านั้น |
คลัสเตอร์รายการช็อปปิ้ง | มากที่สุด 1 | สูงสุด 1 ShoppingListEntity |
คลัสเตอร์ของ Shopping การจัดลําดับใหม่ | มากที่สุด 1 | สูงสุด 1 ReorderEntity |
คลัสเตอร์การติดตามคำสั่งซื้อ | สูงสุด 3 | สูงสุด 3 ShoppingOrderTrackingEntity |
ขั้นตอนที่ 1: ระบุข้อมูลเอนทิตี
SDK ได้กำหนดเอนทิตีที่แตกต่างกันเพื่อแสดงรายการแต่ละประเภท หมวดหมู่ Shopping รองรับเอนทิตีต่อไปนี้
ShoppingEntity
ShoppingCart
ShoppingList
Reorder
ShoppingOrderTracking
แผนภูมิด้านล่างแสดงแอตทริบิวต์และข้อกำหนดสำหรับแต่ละประเภท
ShoppingEntity
ออบเจ็กต์ ShoppingEntity
แสดงถึงผลิตภัณฑ์ โปรโมชัน ดีล การสมัครใช้บริการ
หรือเหตุการณ์ที่พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ต้องการเผยแพร่
ShoppingEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
ภาพโปสเตอร์ | ต้องระบุ | ต้องระบุรูปภาพอย่างน้อย 1 รูป | โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
URI การดำเนินการ | ต้องระบุ |
Deep Link ไปยังหน้าในแอปที่แสดงรายละเอียดเกี่ยวกับ เอนทิตี หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ชื่อ | ไม่บังคับ | ชื่อของเอนทิตี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 90 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
ราคา - ปัจจุบัน | ต้องระบุแบบมีเงื่อนไข |
ราคาปัจจุบันของเอนทิตี ต้องระบุหากมีการระบุราคาที่มีขีดทับ |
ข้อความอิสระ |
ราคา - ขีดทับ | ไม่บังคับ | ราคาเดิมของนิติบุคคล ซึ่งมีการขีดฆ่าใน UI | ข้อความอิสระ |
ข้อความเสริม | ไม่บังคับ | ข้อความไฮไลต์เพื่อแสดงโปรโมชัน กิจกรรม หรือการอัปเดตสําหรับเอนทิตี หาก พร้อมใช้งาน | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
ข้อความอย่างละเอียดของข้อความไฮไลต์ | ไม่บังคับ | พิมพ์ข้อความอย่างละเอียดสำหรับข้อความไฮไลต์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
การให้คะแนน (ไม่บังคับ) - หมายเหตุ: การให้คะแนนทั้งหมด โดยใช้ระบบการให้ดาวมาตรฐานของเรา | |||
การให้คะแนน - ค่าสูงสุด | ไม่บังคับ | ค่าสูงสุดของสเกลการให้คะแนน ต้องระบุหากค่าปัจจุบันของคะแนนรวมอยู่ ไว้ให้ |
จำนวน >= 0.0 |
การจัดประเภท - ค่าปัจจุบัน | ไม่บังคับ | ค่าปัจจุบันของสเกลการให้คะแนน ต้องระบุหากมีค่าสูงสุดของคะแนนด้วย ไว้ให้ |
จำนวน >= 0.0 |
คะแนน - จำนวน | ไม่บังคับ |
จำนวนการให้คะแนนสำหรับเอนทิตี หมายเหตุ: ระบุข้อมูลในช่องนี้หากแอปของคุณ ควบคุมวิธีการแสดงจำนวนที่แสดงต่อผู้ใช้ ใช้สตริงที่สั้นกระชับ ตัวอย่างเช่น หากจำนวนนับคือ 1,000,000 ให้พิจารณาใช้ตัวย่อ เช่น 1M เพื่อให้ระบบไม่ตัดตัวเลขที่แสดงในขนาดการแสดงผลขนาดเล็ก |
สตริง |
คะแนน - ค่าของจำนวน | ไม่บังคับ | จำนวนการให้คะแนนสำหรับเอนทิตี หมายเหตุ: โปรดป้อนช่องนี้หากคุณไม่ได้จัดการ ตรรกะตัวย่อการแสดงผล ด้วยตัวคุณเอง ถ้ามีทั้งค่า "นับ" และ "ค่าการนับ" แสดง จำนวนจะปรากฏต่อผู้ใช้ |
ยาว |
DisplayTimeWindow (ไม่บังคับ) - ตั้งค่ากรอบเวลา เนื้อหาจะแสดงบนแพลตฟอร์ม | |||
การประทับเวลาเริ่มต้น | ไม่บังคับ |
การประทับเวลา Epoch ที่เนื้อหาควรแสดงใน แพลตฟอร์ม หากไม่ได้ตั้งค่า เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
การประทับเวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch ที่เนื้อหาไม่แสดงอีกต่อไป บนพื้นผิว หากไม่ได้ตั้งค่า เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
ShoppingCart
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI การดำเนินการ | ต้องระบุ |
ลิงก์ในรายละเอียดไปยังรถเข็นช็อปปิ้งในแอปของพาร์ทเนอร์ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
จำนวนรายการ | ต้องระบุ |
จำนวนสินค้า (ไม่ใช่แค่จำนวนผลิตภัณฑ์) ในรถเข็นช็อปปิ้ง เช่น หากมีเสื้อเชิ้ตที่เหมือนกัน 3 ตัวและหมวก 1 ใบในรถเข็น หมายเลขนี้ควรเป็น 4 |
จำนวนเต็ม >= 1 |
ข้อความดำเนินการ | ไม่บังคับ |
ข้อความกระตุ้นการตัดสินใจของปุ่มบนรถเข็นช็อปปิ้ง (เช่น ถุงช็อปปิ้งของคุณ) หากนักพัฒนาแอปไม่ได้ระบุข้อความการดำเนินการ โดยดูรถเข็นเป็นค่าเริ่มต้น แอตทริบิวต์นี้รองรับในเวอร์ชัน 1.1.0 เป็นต้นไป |
สตริง |
ชื่อ | ไม่บังคับ | ชื่อรถเข็น (เช่น ถุงช็อปปิ้งของคุณ) หากนักพัฒนาซอฟต์แวร์ไม่ได้ระบุรายการไว้ รถเข็นของคุณ เป็นค่าเริ่มต้น หากพาร์ทเนอร์นักพัฒนาแอปเผยแพร่รถเข็นแยกกันต่อผู้ขาย 1 ราย โปรดระบุชื่อผู้ขายในชื่อ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
รูปภาพรถเข็น | ไม่บังคับ | รูปภาพของผลิตภัณฑ์แต่ละรายการในรถเข็น ใส่รูปภาพได้สูงสุด 10 รูปตามลำดับความสำคัญ เวลา จำนวนรูปภาพที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ ของ Google |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ป้ายกำกับรายการ | ไม่บังคับ | รายการป้ายกำกับของสินค้าในรายการช็อปปิ้ง จำนวนป้ายกำกับที่แสดงจริง จะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
รายการป้ายกำกับข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
การประทับเวลาการโต้ตอบของผู้ใช้ล่าสุด | ไม่บังคับ | จำนวนมิลลิวินาทีที่ผ่านไปจาก Epoch เพื่อระบุเวลาล่าสุด
เมื่อผู้ใช้โต้ตอบกับรถเข็น
ซึ่งระบบจะส่งต่อเป็นอินพุตโดย พาร์ทเนอร์นักพัฒนาแอปที่เผยแพร่รถเข็นแยกกันต่อผู้ขาย 1 รายและอาจมีการใช้งาน สำหรับการจัดอันดับ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
DisplayTimeWindow (ไม่บังคับ) - ตั้งค่ากรอบเวลา เนื้อหาจะแสดงบนแพลตฟอร์ม | |||
การประทับเวลาเริ่มต้น | ไม่บังคับ |
การประทับเวลา Epoch ที่เนื้อหาควรแสดงใน แพลตฟอร์ม หากไม่ได้ตั้งค่า เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
การประทับเวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch ที่เนื้อหาไม่แสดงอีกต่อไป บนพื้นผิว หากไม่ได้ตั้งค่า เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
ShoppingList
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI การดำเนินการ | ต้องระบุ |
ลิงก์ในรายละเอียดที่ไปยังรายการช็อปปิ้งในแอปของพาร์ทเนอร์ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
จำนวนรายการ | ต้องระบุ | จำนวนสินค้าในรายการช็อปปิ้ง | จำนวนเต็ม >= 1 |
ชื่อ | ไม่บังคับ |
ชื่อรายการ (เช่น รายการร้านขายของชำ) หากนักพัฒนาแอปไม่ได้ระบุชื่อไว้ โดยรายการช็อปปิ้งเป็นค่าเริ่มต้น |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
ป้ายกำกับรายการ | ต้องระบุ | รายการป้ายกำกับของสินค้าในรายการช็อปปิ้ง คุณต้องระบุป้ายกำกับอย่างน้อย 1 ป้าย โดยจะให้ป้ายกำกับได้สูงสุด 10 ป้าย ที่ให้ไว้ตามลำดับความสำคัญ จำนวนป้ายกำกับที่แสดงจริง จะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
รายการป้ายกำกับข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
ShoppingReorderCluster
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI การดำเนินการ | ต้องระบุ |
Deep Link สำหรับสั่งซื้อใหม่ในแอปของพาร์ทเนอร์ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ข้อความดำเนินการ | ไม่บังคับ |
ข้อความกระตุ้นการตัดสินใจของปุ่มในหน้า "เรียงลำดับใหม่" (ตัวอย่างเช่น สั่งซื้ออีกครั้ง) หากนักพัฒนาแอปไม่ได้ระบุข้อความการดำเนินการ ค่าเริ่มต้นคือจัดลำดับใหม่ แอตทริบิวต์นี้รองรับในเวอร์ชัน 1.1.0 เป็นต้นไป |
สตริง |
จำนวนรายการ | ต้องระบุ |
จำนวนรายการ (ไม่ใช่แค่จำนวนผลิตภัณฑ์) ก่อนหน้านี้ คำสั่งซื้อ เช่น ถ้ามีกาแฟแก้วเล็ก 3 แก้ว และครัวซองต์ 1 แก้ว ลำดับก่อนหน้า หมายเลขนี้ควรเป็น 4 |
จำนวนเต็ม >= 1 |
ชื่อ | ต้องระบุ | ชื่อของสินค้าที่สั่งซื้อใหม่ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 40 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
ป้ายกำกับรายการ | ไม่บังคับ (ควรใส่ภาพโปสเตอร์ด้วยหากไม่ได้ระบุไว้) |
รายการป้ายกำกับสินค้าสำหรับคำสั่งซื้อก่อนหน้า ระบุป้ายกำกับได้สูงสุด 10 ป้ายตามลำดับความสำคัญ เวลา จำนวนป้ายกำกับที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ ของ Google |
รายการข้อความอิสระ ขนาดข้อความที่แนะนำต่อป้ายกำกับ: น้อยกว่า 20 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
ภาพโปสเตอร์ | ไม่บังคับ (ควรระบุป้ายกำกับสินค้าหากไม่ระบุ) |
รูปภาพสินค้าในลำดับก่อนหน้า ใส่รูปภาพได้สูงสุด 10 รูปตามลำดับความสำคัญ เวลา จำนวนรูปภาพที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ ของ Google |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ShoppingOrderTrackingCluster
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
ชื่อ | ต้องระบุ |
ชื่อย่อของพัสดุ/สินค้าที่ติดตามหรือการติดตาม หมายเลข |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 50 อักขระ (ข้อความยาวเกินไปจะ แสดงจุดไข่ปลา) |
ประเภทใบสั่งซื้อ | ต้องระบุ |
ชื่อย่อของพัสดุ/สินค้าที่ติดตามหรือการติดตาม หมายเลข |
Enum: IN_STORE_PICKUP, SAME_DAY_DELIVERY, MULTI_DAY_DELIVERY |
สถานะ | ต้องระบุ |
สถานะปัจจุบันของคำสั่งซื้อ เช่น "ล่าช้า" "อยู่ระหว่างเดินทาง" "ล่าช้า" "จัดส่งแล้ว" "นำส่งแล้ว" "สินค้าหมด" "พร้อมสั่งซื้อ" |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 25 อักขระ (ข้อความยาวเกินไปจะ แสดงจุดไข่ปลา) |
เวลาที่สั่งซื้อ | ต้องระบุ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาทีที่ใช้สั่งซื้อ ระบบจะแสดงข้อมูลเวลาสั่งซื้อหากกรอบเวลาการนำส่งที่คาดไว้ ไม่มีอยู่ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
URI การดำเนินการ | ต้องระบุ |
ลิงก์ในรายละเอียดไปยังการติดตามคำสั่งซื้อในแอปของพาร์ทเนอร์ |
URI |
Order DeliveryTimeWindow (ไม่บังคับ) - ตั้งเวลา สำหรับคำสั่งซื้อที่กำลังติดตามตั้งแต่วันที่สั่งซื้อ จนถึงเวลาที่จัดส่งที่คาดไว้/เกิดขึ้นจริง | |||
Order DeliveryTimeWindow - เวลาเริ่มต้น | ไม่บังคับ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที ณ วันที่/หลังจากนั้น คําสั่งซื้อจะเป็น หรือพร้อมให้มารับแล้ว |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
Order DeliveryTimeWindow - เวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที เมื่อเปิด/ก่อนหน้านั้น ลำดับ หรือพร้อมให้มารับแล้ว |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
ภาพโปสเตอร์ | ไม่บังคับ | รูปภาพสินค้า/ผลิตภัณฑ์ 1 รายการซึ่งเป็นส่วนหนึ่งของคำสั่งซื้อ สัดส่วนภาพที่แนะนำคือ 1:1 |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
จำนวนรายการ | ไม่บังคับ | จำนวนสินค้าในคำสั่งซื้อ | จำนวนเต็ม >= 1 |
คำอธิบาย | ไม่บังคับ | ย่อหน้าข้อความ 1 ย่อหน้าเพื่ออธิบายสินค้าในคำสั่งซื้อ หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: คำอธิบายหรือรายการคำบรรยายจะ แสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 อย่าง |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
มูลค่าการสั่งซื้อ - ราคาปัจจุบัน | ไม่บังคับ | มูลค่าปัจจุบันของคำสั่งซื้อ | ข้อความอิสระ |
หมายเลขคำสั่งซื้อ | ไม่บังคับ | หมายเลข/รหัสคำสั่งซื้อที่ใช้ระบุคำสั่งซื้อโดยไม่ซ้ำกันได้ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 25 อักขระ |
หมายเลขติดตามพัสดุ | ไม่บังคับ | หมายเลขติดตามสำหรับสินค้าที่สั่งซื้อ/พัสดุภัณฑ์ในกรณีที่มีการสั่งซื้อ ต้องมีการนำส่ง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 25 อักขระ |
ข้อกำหนดเกี่ยวกับรูปภาพ
ข้อกำหนดที่จำเป็นสำหรับชิ้นงานรูปภาพมีดังต่อไปนี้
สัดส่วนภาพ | พิกเซลขั้นต่ำ | พิกเซลแนะนํา |
---|---|---|
สี่เหลี่ยมจัตุรัส (1x1) เหมาะสำหรับคลัสเตอร์ที่ไม่ใช่รายการแนะนำ |
300x300 | 1200x1200 |
แนวนอน (1.91x1) เหมาะสำหรับคลัสเตอร์แนะนำ |
600x314 | 1200x628 |
แนวตั้ง (4x5) | 480x600 | 960x1200 |
รูปแบบไฟล์
PNG, JPG, GIF แบบภาพนิ่ง, WebP
ขนาดไฟล์สูงสุด
5,120 KB
คำแนะนำเพิ่มเติม
- พื้นที่ปลอดภัยของรูปภาพ: ใส่เนื้อหาสําคัญไว้ตรงกลาง 80% ของ รูปภาพ
- ใช้พื้นหลังโปร่งใสเพื่อให้แสดงภาพได้อย่างถูกต้องใน การตั้งค่าธีมมืดและสว่าง
ขั้นตอนที่ 2: ระบุข้อมูลคลัสเตอร์
ขอแนะนำให้ดำเนินการเผยแพร่เนื้อหาในเบื้องหลัง (เช่น ใช้ WorkManager) เป็นประจำหรือตามเหตุการณ์ (เช่น ทุกครั้ง ผู้ใช้เปิดแอปหรือเมื่อผู้ใช้เพิ่งเพิ่มสินค้าลงในรถเข็น)
AppEngageShoppingClient
ทำหน้าที่เผยแพร่คลัสเตอร์ Shopping
มีการเปิดเผย API ต่อไปนี้เพื่อเผยแพร่คลัสเตอร์ในไคลเอ็นต์
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishShoppingCart
publishShoppingCarts
publishShoppingList
publishShoppingReorderCluster
publishShoppingOrderTrackingCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteShoppingCartCluster
deleteShoppingListCluster
deleteShoppingReorderCluster
deleteShoppingOrderTrackingCluster
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
รายการ
ออบเจ็กต์ RecommendationCluster
อาจมีแอตทริบิวต์ต่อไปนี้
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย |
---|---|---|
รายการของ ShoppingEntity | ต้องระบุ | รายการออบเจ็กต์ ShoppingEntity ที่ประกอบขึ้นเป็นคำแนะนำสำหรับ คลัสเตอร์การแนะนำนี้ |
ชื่อ | ต้องระบุ | ชื่อของคลัสเตอร์คำแนะนำ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
ชื่อรอง | ไม่บังคับ | คำบรรยายของคลัสเตอร์คำแนะนำ |
URI การดำเนินการ | ไม่บังคับ |
Deep Link ไปยังหน้าในแอปพาร์ทเนอร์ซึ่งผู้ใช้สามารถดู รายการคำแนะนำทั้งหมด หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Black Friday Deals") .build()) .build())
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Black Friday Deals") .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- นำข้อมูลคลัสเตอร์คำแนะนำที่มีอยู่ทั้งหมดออกแล้ว
- ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในคลัสเตอร์คำแนะนำใหม่
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
publishFeaturedCluster
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ FeaturedCluster
Kotlin
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() ... .build()) .build())
Java
client.publishFeaturedCluster( new PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( new FeaturedCluster.Builder() ... .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
FeaturedCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในคลัสเตอร์เด่นที่มีการอัปเดต
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
publishShoppingCart
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ ShoppingCartCluster
Kotlin
client.publishShoppingCart( PublishShoppingCartRequest.Builder() .setShoppingCart( ShoppingCart.Builder() ... .build()) .build())
Java
client.publishShoppingCart( new PublishShoppingCartRequest.Builder() .setShoppingCart( new ShoppingCart.Builder() ... .build()) .build())
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
ShoppingCart
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในรถเข็นช็อปปิ้งที่อัปเดตแล้ว คลัสเตอร์
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
publishShoppingCarts
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ ShoppingCart
หลายรายการ นี่คือ
มีผลกับพาร์ทเนอร์นักพัฒนาซอฟต์แวร์ที่เผยแพร่รถเข็นแยกกันต่อผู้ขาย 1 ราย รวม
ชื่อผู้ขายในชื่อเมื่อใช้ API นี้
Kotlin
client.publishShoppingCarts( PublishShoppingCartClustersRequest.Builder() .addShoppingCart( ShoppingCart.Builder() ... .build()) .build())
Java
client.publishShoppingCarts( new PublishShoppingCartClustersRequest.Builder() .addShoppingCart( new ShoppingCart.Builder() ... .build()) .build())
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
ShoppingCart
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในรถเข็นช็อปปิ้งที่อัปเดตแล้ว คลัสเตอร์
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
publishShoppingList
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ FoodShoppingList
Kotlin
client.publishFoodShoppingList( PublishFoodShoppingListRequest.Builder() .setFoodShoppingList( FoodShoppingListEntity.Builder() ... .build()) .build())
Java
client.publishFoodShoppingList( new PublishFoodShoppingListRequest.Builder() .setFoodShoppingList( new FoodShoppingListEntity.Builder() ... .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
FoodShoppingList
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์ข้อมูลจากคำขอและจัดเก็บไว้ในรายการช็อปปิ้งที่อัปเดตแล้ว คลัสเตอร์
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
publishShoppingReorderCluster
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ ShoppingReorderCluster
Kotlin
client.publishShoppingReorderCluster( PublishShoppingReorderClusterRequest.Builder() .setReorderCluster( ShoppingReorderCluster.Builder() ... .build()) .build())
Java
client.publishShoppingReorderCluster( new PublishShoppingReorderClusterRequest.Builder() .setReorderCluster( new ShoppingReorderCluster.Builder() ... .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ระบบจะนำข้อมูล
ShoppingReorderCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์ข้อมูลจากคำขอและจัดเก็บไว้ในคลัสเตอร์จัดเรียงใหม่ที่อัปเดต
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
publishShoppingOrderTrackingCluster
API นี้ใช้เพื่อเผยแพร่ออบเจ็กต์ ShoppingOrderTrackingCluster
Kotlin
client.publishShoppingOrderTrackingCluster( PublishShoppingOrderTrackingClusterRequest.Builder() .setShoppingOrderTrackingCluster( ShoppingOrderTrackingCluster.Builder() ... .build()) .build())
Java
client.publishShoppingOrderTrackingCluster( new PublishShoppingOrderTrackingClusterRequest.Builder() .setShoppingOrderTrackingCluster( new ShoppingOrderTrackingCluster.Builder() ... .build()) .build());
เมื่อบริการได้รับคำขอ การดำเนินการต่อไปนี้จะเกิดขึ้นภายใน ธุรกรรมรายการเดียว:
- ข้อมูล
ShoppingOrderTrackingCluster
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปคือ ลบแล้ว - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอในคำสั่งซื้อ Shopping ที่อัปเดตแล้ว คลัสเตอร์การติดตาม
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ ได้รับการบำรุงรักษาแล้ว
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 มีรหัสสถานะ 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();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์แนะนำ ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมด และสภาวะเดิมจะยังคงอยู่
deleteShoppingCartCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์รถเข็นช็อปปิ้ง
Kotlin
client.deleteShoppingCartCluster()
Java
client.deleteShoppingCartCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์รถเข็นช็อปปิ้ง ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมด และสภาวะเดิมจะยังคงอยู่
deleteShoppingListCluster
ระบบใช้ API นี้เพื่อลบเนื้อหาของคลัสเตอร์รายการช็อปปิ้ง
Kotlin
client.deleteShoppingListCluster()
Java
client.deleteShoppingListCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์รายการช็อปปิ้ง ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมด และสภาวะเดิมจะยังคงอยู่
deleteShoppingReorderCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ Shopping ชี้แจงใหม่
Kotlin
client.deleteShoppingReorderCluster()
Java
client.deleteShoppingReorderCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์ของ Shopping ใหม่ ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมด และสภาวะเดิมจะยังคงอยู่
deleteShoppingOrderTrackingCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์การติดตามคำสั่งซื้อช็อปปิ้ง
Kotlin
client.deleteShoppingOrderTrackingCluster()
Java
client.deleteShoppingOrderTrackingCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์การติดตามคำสั่งซื้อช็อปปิ้ง ในกรณีที่มีข้อผิดพลาด คำขอทั้งหมดจะ ถูกปฏิเสธและคงสถานะเดิมไว้
deleteUserManagementCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ UserAccountManagement
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
เมื่อบริการได้รับคำขอ จะนำข้อมูลที่มีอยู่ออกจาก คลัสเตอร์ UserAccountManagement ในกรณีที่มีข้อผิดพลาด คำขอทั้งหมดจะ ถูกปฏิเสธและคงสถานะเดิมไว้
deleteClusters
API นี้ใช้เพื่อลบเนื้อหาของประเภทคลัสเตอร์ที่ระบุ
Kotlin
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) ... .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .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 shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast // is received // Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast // is received // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is // received // Trigger shopping order tracking cluster publish when // PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER 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 Shopping Cart Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_CART)) // Register Shopping List Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_LIST)) // Register Reorder Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER)) // Register Shopping Order Tracking Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER)) }
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 shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast is // received // Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast is // received // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is // received // Trigger reorder cluster publish when PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER // 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 Shopping Cart Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_CART)); // Register Shopping List Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_LIST)); // Register Reorder Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER)); // Register Shopping Order Tracking Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER)); }
- ประกาศการติดตั้งใช้งานที่มีแท็ก
<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.shopping.PUBLISH_SHOPPING_CART" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER" />
</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.shopping.PUBLISH_SHOPPING_CART
ขอแนะนำให้เริ่มการโทรpublishShoppingCart
เมื่อ Intent นี้ ได้รับcom.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST
ขอแนะนำให้เริ่มการโทรpublishShoppingList
เมื่อ Intent นี้ ได้รับcom.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER
ขอแนะนำให้เริ่มการโทรpublishReorderCluster
เมื่อ Intent นี้ ได้รับcom.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER
ขอแนะนำให้เริ่มการโทรpublishShoppingOrderTrackingCluster
เมื่อ ความตั้งใจนี้ยังคงได้รับ
เวิร์กโฟลว์การผสานรวม
ดูคำแนะนำทีละขั้นตอนเกี่ยวกับการยืนยันการผสานรวมหลังจากที่เสร็จสมบูรณ์ได้ที่ มีส่วนร่วมกับเวิร์กโฟลว์การผสานรวมของนักพัฒนาซอฟต์แวร์
คำถามที่พบบ่อย
ดูคำถามที่พบบ่อยเกี่ยวกับ Engage SDK สำหรับ คำถามที่พบบ่อย
รายชื่อติดต่อ
ข้อมูลติดต่อ [email protected] หากมี คำถามใดๆ ระหว่างขั้นตอนการผสานรวม ทีมของเราจะตอบกลับโดยเร็วที่สุด เท่าที่จะเป็นไปได้
ขั้นตอนถัดไป
หลังจากผสานรวมเสร็จแล้ว ขั้นตอนถัดไปของคุณมีดังนี้
- ส่งอีเมลถึง [email protected] และแนบ APK ที่ผสานรวมซึ่งพร้อมสำหรับการทดสอบโดย Google
- Google จะดำเนินการยืนยันและตรวจสอบเป็นการภายใน ทำงานตามที่คาดไว้ หากจำเป็น Google จะติดต่อคุณ พร้อมรายละเอียดที่จำเป็น
- เมื่อการทดสอบเสร็จสิ้นและไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ Google จะติดต่อหาคุณ คุณสามารถเริ่มเผยแพร่ APK ที่อัปเดตและผสานรวมไปยัง Play Store
- หลังจากที่ Google ยืนยันว่า APK ที่อัปเดตแล้วของคุณได้รับการเผยแพร่ไปยัง Play Store, คำแนะนำ, แนะนำ, รถเข็นช็อปปิ้ง รายการช็อปปิ้ง เรียงลำดับคลัสเตอร์ใหม่ และคลัสเตอร์การติดตามคำสั่งซื้อ Shopping อาจมีการเผยแพร่คลัสเตอร์และผู้ใช้มองเห็นได้