Google กำลังสร้างแพลตฟอร์มในอุปกรณ์ที่จัดระเบียบแอปของผู้ใช้ตามประเภทธุรกิจ และมอบประสบการณ์การใช้งานเนื้อหาแอปที่ปรับเปลี่ยนในแบบของคุณและค้นพบเนื้อหาใหม่ๆ ประสบการณ์แบบเต็มหน้าจอนี้เปิดโอกาสให้พาร์ทเนอร์นักพัฒนาแอปได้แสดงเนื้อหาริชมีเดียที่ดีที่สุดในช่องทางเฉพาะนอกแอป
คู่มือนี้มีวิธีการสำหรับพาร์ทเนอร์นักพัฒนาแอปในการผสานรวมเนื้อหาช็อปปิ้งโดยใช้ Engage SDK เพื่อแสดงข้อมูลทั้งในแพลตฟอร์มใหม่นี้และแพลตฟอร์มที่มีอยู่ของ Google เช่น Entertainment Space
รายละเอียดการผสานรวม
คำศัพท์
การผสานรวมนี้ประกอบด้วยคลัสเตอร์ 5 ประเภท ได้แก่ คำแนะนำ แนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง เรียงลำดับใหม่ และการติดตามคำสั่งซื้อ Shopping
กลุ่มคําแนะนําจะแสดงคําแนะนําการช็อปปิ้งที่ปรับเปลี่ยนในแบบของคุณจากพาร์ทเนอร์นักพัฒนาแอปรายบุคคล คำแนะนำเหล่านี้อาจปรับเปลี่ยนในแบบของคุณสำหรับผู้ใช้หรือเป็นแบบทั่วไป (เช่น รายการที่มาแรง) ใช้เพื่อแสดงผลิตภัณฑ์ กิจกรรม การขาย โปรโมชัน การสมัครใช้บริการตามที่เห็นสมควร
คำแนะนำจะมีโครงสร้างต่อไปนี้
คลัสเตอร์คำแนะนำ: มุมมอง UI ที่มีกลุ่มคำแนะนำจากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์รายเดียวกัน
ShoppingEntity: ออบเจ็กต์ที่แสดงถึงสินค้ารายการเดียวในคลัสเตอร์
กลุ่มแนะนําจะแสดงรายการต่างๆ จากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการรวมกลุ่ม UI เดียว โดยจะมีคลัสเตอร์แนะนำกลุ่มเดียวที่แสดงอยู่ใกล้กับด้านบนของ UI ด้วยตำแหน่งที่มีลำดับความสำคัญเหนือคลัสเตอร์คำแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายจะออกอากาศได้สูงสุด 10 รายการในคลัสเตอร์แนะนํา
กลุ่มรถเข็นช็อปปิ้งจะแสดงตัวอย่างรถเข็นช็อปปิ้งจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการรวมกลุ่ม UI เดียว เพื่อกระตุ้นให้ผู้ใช้สั่งซื้อสินค้าในรถเข็นที่รอดำเนินการให้เสร็จสิ้น มีคลัสเตอร์รถเข็นช็อปปิ้งรายการเดียวที่แสดงอยู่บริเวณด้านบนของ UI โดยมีลำดับความสำคัญเหนือคลัสเตอร์คำแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายสามารถออกอากาศได้สูงสุด 3
ShoppingCart
อินสแตนซ์ในคลัสเตอร์รถเข็นช็อปปิ้งรถเข็นช็อปปิ้งของคุณมีโครงสร้างดังนี้
คลัสเตอร์รถเข็นช็อปปิ้ง: มุมมอง UI ที่มีกลุ่มตัวอย่างรถเข็นช็อปปิ้งจากพาร์ทเนอร์นักพัฒนาแอปหลายราย
ShoppingCart: ออบเจ็กต์ที่แสดงตัวอย่างรถเข็นช็อปปิ้งสำหรับพาร์ทเนอร์นักพัฒนาแอปรายเดียว เพื่อแสดงในคลัสเตอร์รถเข็นช็อปปิ้ง
ShoppingCart
ต้องแสดงจำนวนสินค้าทั้งหมดในรถเข็น และอาจใส่รูปภาพสำหรับสินค้าบางรายการในรถเข็นของผู้ใช้ด้วย
กลุ่มรายการช็อปปิ้งจะแสดงตัวอย่างรายการช็อปปิ้งจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการรวมกลุ่ม UI เดียว ซึ่งจะแจ้งให้ผู้ใช้กลับไปที่แอปที่เกี่ยวข้องเพื่ออัปเดตและเพิ่มรายการให้เสร็จสมบูรณ์ มีคลัสเตอร์รายการช็อปปิ้งเดียว
กลุ่มสั่งซื้ออีกครั้งจะแสดงตัวอย่างคำสั่งซื้อก่อนหน้าจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการรวมกลุ่ม UI เดียว เพื่อแจ้งให้ผู้ใช้สั่งซื้ออีกครั้ง มีคลัสเตอร์ "สั่งซื้ออีกครั้ง" รายการเดียว
คลัสเตอร์ "สั่งซื้ออีกครั้ง" ต้องแสดงจำนวนสินค้าทั้งหมดในคำสั่งซื้อก่อนหน้าของผู้ใช้ และต้องระบุข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้ด้วย
- รูปภาพสำหรับสินค้า X ในคำสั่งซื้อก่อนหน้าของผู้ใช้
- ป้ายกำกับสำหรับสินค้า X ในคำสั่งซื้อก่อนหน้าของผู้ใช้
กลุ่มการติดตามคำสั่งซื้อ Shopping จะแสดงตัวอย่างคำสั่งซื้อ Shopping ที่รอดำเนินการหรือดำเนินการเสร็จสิ้นเมื่อเร็วๆ นี้จากพาร์ทเนอร์นักพัฒนาแอปจำนวนมากในการรวมกลุ่ม UI เดียว ซึ่งช่วยให้ผู้ใช้ติดตามคำสั่งซื้อได้
มีคลัสเตอร์ ShoppingOrderTracking รายการเดียวที่แสดงอยู่ใกล้กับด้านบนของ UI โดยมีตำแหน่งที่มีความสำคัญเหนือกว่าคลัสเตอร์คําแนะนําทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายได้รับอนุญาตให้ออกอากาศรายการ ShoppingOrderTrackingEntity หลายรายการในคลัสเตอร์การติดตามคำสั่งซื้อ Shopping
ShoppingOrderTrackingCluster ของคุณมีโครงสร้างดังนี้
- ShoppingOrderTracking Cluster: มุมมอง 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
สรุป
การออกแบบนี้อิงตามการใช้งาน bound service
ข้อมูลที่จะเผยแพร่ได้จะขึ้นอยู่กับขีดจํากัดต่อไปนี้สําหรับคลัสเตอร์ประเภทต่างๆ
ประเภทคลัสเตอร์ | ขีดจำกัดของคลัสเตอร์ | ขีดจํากัดสูงสุดของเอนทิตีในคลัสเตอร์ |
---|---|---|
กลุ่มคําแนะนํา | ไม่เกิน 5 | ไม่เกิน 25 ShoppingEntity |
คลัสเตอร์แนะนำ | ไม่เกิน 1 | ShoppingEntity ไม่เกิน 10 รายการ |
กลุ่มรถเข็นช็อปปิ้ง | ไม่เกิน 1 | สูงสุด 3 ShoppingCart
รถเข็นหลายคันมีไว้สำหรับแอปที่มีรถเข็นแยกต่างหากสำหรับผู้ขายแต่ละรายเท่านั้น |
คลัสเตอร์รายการช็อปปิ้ง | ไม่เกิน 1 | ShoppingListEntity ไม่เกิน 1 รายการ |
คลัสเตอร์การจัดเรียงใหม่ของ Shopping | ไม่เกิน 1 | สูงสุด 1 ReorderEntity |
คลัสเตอร์การติดตามคำสั่งซื้อใน Shopping | ไม่เกิน 3 | ShoppingOrderTrackingEntity ไม่เกิน 3 รายการ |
ขั้นตอนที่ 1: ระบุข้อมูลเอนทิตี
SDK ได้กำหนดเอนทิตีที่แตกต่างกันเพื่อแสดงรายการแต่ละประเภท ระบบรองรับเอนทิตีต่อไปนี้สำหรับหมวดหมู่ Shopping
ShoppingEntity
ShoppingCart
ShoppingList
Reorder
ShoppingOrderTracking
แผนภูมิด้านล่างแสดงแอตทริบิวต์และข้อกําหนดที่ใช้ได้สําหรับแต่ละประเภท
ShoppingEntity
ออบเจ็กต์ ShoppingEntity
แสดงถึงผลิตภัณฑ์ โปรโมชัน ดีล การสมัครใช้บริการ หรือกิจกรรมที่พาร์ทเนอร์นักพัฒนาแอปต้องการเผยแพร่
ShoppingEntity
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
ภาพโปสเตอร์ | ต้องระบุ | ต้องระบุรูปภาพอย่างน้อย 1 รูป | ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
URI การดำเนินการ | ต้องระบุ |
ลิงก์ในรายละเอียดไปยังหน้าในแอปที่แสดงรายละเอียดเกี่ยวกับเอนทิตี หมายเหตุ: คุณใช้ Deep Link เพื่อการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ชื่อ | ไม่บังคับ | ชื่อของเอนทิตี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 90 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
ราคา - ปัจจุบัน | ต้องระบุแบบมีเงื่อนไข |
ราคาปัจจุบันของเอนทิตี ต้องระบุหากมีการระบุราคาที่มีขีดทับ |
ข้อความอิสระ |
ราคา - ขีดฆ่า | ไม่บังคับ | ราคาเดิมของเอนทิตี ซึ่งจะมีการขีดทับใน UI | ข้อความอิสระ |
ข้อความเสริม | ไม่บังคับ | ข้อความไฮไลต์เพื่อแสดงโปรโมชัน กิจกรรม หรือข้อมูลอัปเดตสำหรับเอนทิตี หากมี | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 45 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
รายละเอียดข้อความไฮไลต์ | ไม่บังคับ | ข้อความไฮไลต์ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: น้อยกว่า 45 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
การให้คะแนน (ไม่บังคับ) - หมายเหตุ: ระบบจะแสดงการให้คะแนนทั้งหมดโดยใช้ระบบการให้ดาวมาตรฐาน | |||
การให้คะแนน - ค่าสูงสุด | ไม่บังคับ | ค่าสูงสุดของรูปแบบการให้คะแนน ต้องระบุหากระบุค่าปัจจุบันของคะแนนด้วย |
ตัวเลข >= 0.0 |
การจัดประเภท - ค่าปัจจุบัน | ไม่บังคับ | ค่าปัจจุบันของสเกลการให้คะแนน ต้องระบุหากระบุค่าสูงสุดของการจัดประเภทด้วย |
ตัวเลข >= 0.0 |
คะแนน - จำนวน | ไม่บังคับ |
จํานวนการให้คะแนนสําหรับเอนทิตี หมายเหตุ: ระบุช่องนี้หากแอปของคุณควบคุมวิธีแสดงจำนวนต่อผู้ใช้ ใช้สตริงที่สั้นกระชับ เช่น หากจํานวนคือ 1,000,000 ให้ลองใช้ตัวย่อ เช่น 1 ล้าน เพื่อไม่ให้ระบบตัดจํานวนตัวเลขในขนาดการแสดงผลที่เล็กลง |
สตริง |
การจัดประเภท - ค่าจำนวน | ไม่บังคับ | จํานวนการให้คะแนนสําหรับเอนทิตี หมายเหตุ: ระบุช่องนี้หากคุณไม่ได้จัดการตรรกะการแสดงตัวย่อด้วยตนเอง หากมีทั้งจํานวน (Count) และค่าจํานวน (Count Value) ระบบจะแสดงจํานวนต่อผู้ใช้ |
ยาว |
DisplayTimeWindow (ไม่บังคับ) - ตั้งค่ากรอบเวลาสำหรับเนื้อหาที่จะแสดงบนแพลตฟอร์ม | |||
การประทับเวลาเริ่มต้น | ไม่บังคับ |
การประทับเวลา Epoch ที่ต้องการให้เนื้อหาแสดงบนแพลตฟอร์ม หากไม่ได้ตั้งค่า เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch เป็นมิลลิวินาที |
การประทับเวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลาตามยุคหลังจากนั้นเนื้อหาจะไม่แสดงในแพลตฟอร์มอีกต่อไป หากไม่ได้ตั้งค่าไว้ เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch เป็นมิลลิวินาที |
ShoppingCart
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI การดำเนินการ | ต้องระบุ |
Deep Link ไปยังรถเข็นช็อปปิ้งในแอปของพาร์ทเนอร์ หมายเหตุ: คุณใช้ Deep Link เพื่อการระบุแหล่งที่มาได้ โปรดดูคำถามที่พบบ่อยนี้ |
URI |
จำนวนรายการ | ต้องระบุ |
จํานวนสินค้า (ไม่ใช่แค่จํานวนผลิตภัณฑ์) ในรถเข็นช็อปปิ้ง ตัวอย่างเช่น หากมีเสื้อเหมือนกัน 3 ตัวและหมวก 1 ใบในรถเข็น ตัวเลขนี้ควรเป็น 4 |
จำนวนเต็ม >= 1 |
ข้อความการดําเนินการ | ไม่บังคับ |
ข้อความกระตุ้นการตัดสินใจของปุ่มบนรถเข็นช็อปปิ้ง (เช่น ถุงช็อปปิ้งของคุณ) หากนักพัฒนาแอปไม่ได้ระบุข้อความการดำเนินการไว้ ดูรถเข็นจะเป็นค่าเริ่มต้น ระบบรองรับแอตทริบิวต์นี้ในเวอร์ชัน 1.1.0 ขึ้นไป |
สตริง |
ชื่อ | ไม่บังคับ | ชื่อรถเข็น (เช่น ถุงช็อปปิ้งของคุณ) หากนักพัฒนาแอปไม่ได้ระบุชื่อ รถเข็นของคุณจะเป็นชื่อเริ่มต้น หากพาร์ทเนอร์นักพัฒนาแอปเผยแพร่รถเข็นแยกกันต่อผู้ขาย โปรดใส่ชื่อผู้ขายไว้ในชื่อ |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
รูปภาพรถเข็น | ไม่บังคับ | รูปภาพผลิตภัณฑ์แต่ละรายการในรถเข็น คุณระบุรูปภาพได้สูงสุด 10 รูปตามลําดับความสําคัญ โดยจํานวนรูปภาพที่แสดงจริงจะขึ้นอยู่กับปัจจัยรูปแบบอุปกรณ์ |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ป้ายกำกับสินค้า | ไม่บังคับ | รายการป้ายกำกับสำหรับสินค้าในรายการช็อปปิ้ง จำนวนจริงของป้ายกำกับที่แสดงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
รายการป้ายกำกับข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
การประทับเวลาการโต้ตอบของผู้ใช้ครั้งล่าสุด | ไม่บังคับ | จํานวนมิลลิวินาทีที่ผ่านไปนับจากจุดเริ่มต้น ซึ่งระบุเวลาที่ผู้ใช้โต้ตอบกับรถเข็นครั้งล่าสุด
พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ที่เผยแพร่รถเข็นแต่ละรายต่อผู้ขายแต่ละรายจะเป็นผู้ส่งข้อมูลนี้ และอาจใช้เพื่อการจัดอันดับด้วย |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
DisplayTimeWindow (ไม่บังคับ) - ตั้งค่ากรอบเวลาสำหรับการแสดงเนื้อหาบนแพลตฟอร์ม | |||
การประทับเวลาเริ่มต้น | ไม่บังคับ |
การประทับเวลา Epoch ที่ต้องการให้เนื้อหาแสดงบนแพลตฟอร์ม หากไม่ได้ตั้งค่า เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch เป็นมิลลิวินาที |
การประทับเวลาสิ้นสุด | ไม่บังคับ |
การประทับเวลาตามยุคหลังจากนั้นเนื้อหาจะไม่แสดงในแพลตฟอร์มอีกต่อไป หากไม่ได้ตั้งค่าไว้ เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม |
การประทับเวลา Epoch เป็นมิลลิวินาที |
ShoppingList
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI การดำเนินการ | ต้องระบุ |
Deep Link ไปยังรายการช็อปปิ้งในแอปของพาร์ทเนอร์ หมายเหตุ: คุณใช้ Deep Link เพื่อการระบุแหล่งที่มาได้ โปรดดูคำถามที่พบบ่อยนี้ |
URI |
จำนวนรายการ | ต้องระบุ | จำนวนสินค้าในรายการช็อปปิ้ง | จำนวนเต็ม >= 1 |
ชื่อ | ไม่บังคับ |
ชื่อรายการ (เช่น รายการร้านขายของชำ) หากนักพัฒนาแอปไม่ได้ระบุชื่อ รายการช็อปปิ้งจะเป็นชื่อเริ่มต้น |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
ป้ายกำกับสินค้า | ต้องระบุ | รายการป้ายกำกับสำหรับสินค้าในรายการช็อปปิ้ง ต้องระบุป้ายกำกับอย่างน้อย 1 รายการและไม่เกิน 10 รายการตามลำดับความสำคัญ โดยจำนวนป้ายกำกับจริงที่แสดงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
รายการป้ายกำกับข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
ShoppingReorderCluster
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
URI การดำเนินการ | ต้องระบุ |
Deep Link สำหรับสั่งซื้ออีกครั้งในแอปของพาร์ทเนอร์ หมายเหตุ: คุณสามารถใช้ Deep Link สําหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้ |
URI |
ข้อความการดําเนินการ | ไม่บังคับ |
ข้อความคำกระตุ้นให้ดำเนินการของปุ่มใน "สั่งซื้ออีกครั้ง" (เช่น สั่งซื้ออีกครั้ง) หากนักพัฒนาแอปไม่ได้ระบุข้อความการดำเนินการ ข้อความเริ่มต้นจะเป็นเรียงลำดับใหม่ ระบบรองรับแอตทริบิวต์นี้ในเวอร์ชัน 1.1.0 ขึ้นไป |
สตริง |
จำนวนรายการ | ต้องระบุ |
จำนวนสินค้า (ไม่ใช่แค่จำนวนผลิตภัณฑ์) ในคำสั่งซื้อก่อนหน้า ตัวอย่างเช่น หากมีกาแฟขนาดเล็ก 3 แก้วและครัวซองต์ 1 ชิ้นในคำสั่งซื้อก่อนหน้า ตัวเลขนี้ควรเป็น 4 |
จำนวนเต็ม >= 1 |
ชื่อ | ต้องระบุ | ชื่อของสินค้าที่สั่งซื้อใหม่ | ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 40 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
ป้ายกำกับรายการ | ไม่บังคับ (หากไม่ได้ระบุ โปรดระบุภาพโปสเตอร์) |
รายการป้ายกำกับสินค้าสำหรับคำสั่งซื้อก่อนหน้า ระบุป้ายกำกับได้สูงสุด 10 ป้ายตามลำดับความสำคัญ จำนวนป้ายกำกับที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
รายการข้อความอิสระ ขนาดข้อความที่แนะนำต่อป้ายกำกับ: ไม่เกิน 20 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา) |
ภาพโปสเตอร์ | ไม่บังคับ (หากไม่ได้ระบุไว้ โปรดระบุป้ายกำกับสินค้า) |
รูปภาพของสินค้าในคำสั่งซื้อก่อนหน้า ใส่รูปภาพได้สูงสุด 10 รูปโดยเรียงตามลำดับความสำคัญ จำนวนรูปภาพที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ |
ShoppingOrderTrackingCluster
แอตทริบิวต์ | ข้อกำหนด | คำอธิบาย | รูปแบบ |
---|---|---|---|
ชื่อ | ต้องระบุ |
ชื่อย่อของพัสดุ/สินค้าที่ติดตามหรือหมายเลขติดตาม |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 50 อักขระ (ข้อความที่ยาวเกินไปจะแสดงจุดไข่ปลา) |
ประเภทใบสั่งซื้อ | ต้องระบุ |
ชื่อย่อของพัสดุ/สินค้าที่ติดตามหรือหมายเลขติดตาม |
Enum: IN_STORE_PICKUP, SAME_DAY_DELIVERY, MULTI_DAY_DELIVERY |
สถานะ | ต้องระบุ |
สถานะปัจจุบันของคำสั่งซื้อ เช่น "จัดส่งล่าช้า" "อยู่ระหว่างการขนส่ง" "ล่าช้า" "จัดส่งแล้ว" "นำส่งแล้ว" "สินค้าหมด" "คำสั่งซื้อพร้อมแล้ว" |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 25 อักขระ (ข้อความที่ยาวเกินไปจะแสดงจุดไข่ปลา) |
เวลาสั่งซื้อ | ต้องระบุ |
การประทับเวลาตามยุคสมัยเป็นมิลลิวินาที ณ เวลาที่มีการวางคำสั่งซื้อ ระบบจะแสดงเวลาสั่งซื้อหากไม่มีกรอบเวลาการนำส่งที่คาดไว้ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที |
URI การดำเนินการ | ต้องระบุ |
Deep Link ไปยังการติดตามคำสั่งซื้อในแอปของพาร์ทเนอร์ |
URI |
OrderDeliveryTimeWindow (ไม่บังคับ) - กำหนดกรอบเวลาสำหรับคำสั่งซื้อที่กำลังติดตามตั้งแต่เวลาที่สั่งซื้อจนถึงเวลาที่นำส่งโดยประมาณ/จริง | |||
Order DeliveryTimeWindow - เวลาเริ่มต้น | ไม่บังคับ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาทีที่ระบบจะนำส่งคำสั่งซื้อหรือคำสั่งซื้อจะพร้อมให้รับ |
การประทับเวลา Epoch เป็นมิลลิวินาที |
OrderDeliveryTimeWindow - End Time | ไม่บังคับ |
การประทับเวลา Epoch ในหน่วยมิลลิวินาที ณ วันที่/ก่อนที่จะนำส่งสินค้าที่สั่งซื้อหรือพร้อมสำหรับการรับสินค้า |
การประทับเวลา Epoch เป็นมิลลิวินาที |
ภาพโปสเตอร์ | ไม่บังคับ | รูปภาพสินค้า/ผลิตภัณฑ์ 1 รายการซึ่งเป็นส่วนหนึ่งของคำสั่งซื้อ สัดส่วนภาพที่แนะนำคือ 1:1 |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
จำนวนรายการ | ไม่บังคับ | จำนวนสินค้าในคำสั่งซื้อ | จำนวนเต็ม >= 1 |
คำอธิบาย | ไม่บังคับ | ข้อความย่อหน้าเดียวเพื่ออธิบายสินค้าในคำสั่งซื้อ หมายเหตุ: ระบบจะแสดงรายการคำบรรยายแทนเสียงหรือคำบรรยายแทนเสียงเท่านั้น |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: 180 อักขระ |
รายการคำบรรยาย | ไม่บังคับ | คำบรรยายสูงสุด 3 รายการ โดยแต่ละคำบรรยายมีข้อความ 1 บรรทัด หมายเหตุ: รายการคำอธิบายหรือรายการคำบรรยายจะแสดงต่อผู้ใช้ ไม่ใช่ทั้ง 2 รายการ |
ข้อความอิสระ ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ |
มูลค่าการสั่งซื้อ - CurrentPrice | ไม่บังคับ | มูลค่าปัจจุบันของคำสั่งซื้อ | ข้อความอิสระ |
หมายเลขคำสั่งซื้อ | ไม่บังคับ | หมายเลข/รหัสคำสั่งซื้อที่ใช้ระบุคำสั่งซื้อได้อย่างไม่ซ้ำกัน |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ |
หมายเลขติดตามพัสดุ | ไม่บังคับ | หมายเลขติดตามสำหรับการนำส่งคำสั่งซื้อ/พัสดุในกรณีที่คำสั่งซื้อต้องมีการนำส่ง |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: สูงสุด 25 อักขระ |
ข้อกำหนดเกี่ยวกับรูปภาพ
ข้อกำหนดที่จำเป็นสำหรับชิ้นงานรูปภาพมีดังนี้
สัดส่วนภาพ | พิกเซลขั้นต่ำ | พิกเซลที่แนะนํา |
---|---|---|
สี่เหลี่ยมจัตุรัส (1x1) แนะนำสำหรับคลัสเตอร์ที่ไม่ใช่สถานที่น่าสนใจ |
300x300 | 1200x1200 |
แนวนอน (1.91x1) เหมาะสำหรับคลัสเตอร์แนะนำ |
600x314 | 1200x628 |
แนวตั้ง (4x5) | 480x600 | 960x1200 |
รูปแบบไฟล์
PNG, JPG, GIF แบบภาพนิ่ง, WebP
ขนาดไฟล์สูงสุด
5120 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
หลายรายการ นโยบายนี้ใช้กับพาร์ทเนอร์นักพัฒนาแอปที่เผยแพร่รถเข็นแยกกันต่อผู้ขายแต่ละราย ให้ระบุชื่อผู้ขายในชื่อเมื่อใช้ 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 ไปยังการดําเนินการ (เช่น ไปยังหน้าลงชื่อเข้าใช้แอป) |
รูปภาพ | ไม่บังคับ - หากไม่ระบุ จะต้องระบุชื่อ |
รูปภาพที่แสดงในการ์ด รูปภาพสัดส่วนภาพ 16:9 ที่มีความละเอียด 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 นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์การติดตามคำสั่งซื้อ Shopping
Kotlin
client.deleteShoppingOrderTrackingCluster()
Java
client.deleteShoppingOrderTrackingCluster();
เมื่อบริการได้รับคําขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์การติดตามคำสั่งซื้อของ Shopping ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้
deleteUserManagementCluster
API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ UserAccountManagement
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
เมื่อบริการได้รับคําขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์การจัดการบัญชีผู้ใช้ ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้
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
โดยระบุสาเหตุเป็นรหัสข้อผิดพลาด
รหัสข้อผิดพลาด | ชื่อข้อผิดพลาด | หมายเหตุ |
---|---|---|
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
เพื่อรับคําขอเผยแพร่เนื้อหาด้วย
เป้าหมายของ Intent แบบออกอากาศมีไว้สำหรับการเปิดใช้งานแอปอีกครั้งและการบังคับให้ซิงค์ข้อมูลเป็นหลัก Intent แบบออกอากาศไม่ได้ออกแบบมาเพื่อส่งบ่อยครั้ง และทริกเกอร์ก็ต่อเมื่อบริการ 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
ซึ่งจะช่วยให้แอปพลิเคชันได้รับ Intent แบบออกอากาศเมื่อไม่ได้ทำงานอยู่ และช่วยให้แอปพลิเคชันเผยแพร่เนื้อหาได้
<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
เมื่อได้รับ Intent นี้
เวิร์กโฟลว์การผสานรวม
ดูคำแนะนำทีละขั้นตอนเกี่ยวกับการยืนยันการผสานรวมหลังจากที่เสร็จสมบูรณ์แล้วได้ที่มีส่วนร่วมกับเวิร์กโฟลว์การผสานรวมของนักพัฒนาซอฟต์แวร์
คำถามที่พบบ่อย
ดูคำถามที่พบบ่อยได้ที่คำถามที่พบบ่อยเกี่ยวกับ Engage SDK
รายชื่อติดต่อ
โปรดติดต่อ Engage-developers@google.com หากคุณมีคำถามระหว่างขั้นตอนการผสานรวม ทีมของเราจะตอบกลับ โดยเร็วที่สุด
ขั้นตอนถัดไป
หลังจากการผสานรวมนี้เสร็จสมบูรณ์แล้ว ขั้นตอนถัดไปมีดังนี้
- ส่งอีเมลไปที่ engage-developers@google.com และแนบ APK ที่ผสานรวมแล้วซึ่งพร้อมให้ Google ทดสอบ
- Google จะดำเนินการยืนยันและตรวจสอบภายในเพื่อให้แน่ใจว่าการผสานรวมทำงานได้ตามที่คาดไว้ หากจำเป็นต้องทำการเปลี่ยนแปลง Google จะติดต่อคุณพร้อมรายละเอียดที่จำเป็น
- เมื่อการทดสอบเสร็จสมบูรณ์และไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ แล้ว Google จะติดต่อคุณเพื่อแจ้งให้ทราบว่าคุณสามารถเริ่มเผยแพร่ APK ที่อัปเดตและผสานรวมแล้วไปยัง Play Store
- หลังจากที่ Google ยืนยันว่าได้เผยแพร่ APK ที่อัปเดตไปยัง Play Store แล้ว คลัสเตอร์รายการแนะนำ รายการแนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง คลัสเตอร์ลำดับใหม่ และคลัสเตอร์การติดตามคำสั่งซื้ออาจมีการเผยแพร่และผู้ใช้สามารถมองเห็นได้