Google กำลังสร้างแพลตฟอร์มในอุปกรณ์เพื่อจัดระเบียบ แอปแยกตามประเภทธุรกิจ และมอบประสบการณ์ดื่มด่ำกับประสบการณ์ใหม่ สำหรับการบริโภคเนื้อหาแอปที่ปรับเปลี่ยนในแบบของคุณ และการค้นพบ ประสบการณ์แบบเต็มหน้าจอนี้มอบ โอกาสในการแสดงเนื้อหาจำนวนมากที่ดีที่สุด ในช่องทางเฉพาะภายนอก ของแอปของตนได้อย่างไร
คู่มือนี้มีวิธีสำหรับพาร์ทเนอร์นักพัฒนาแอปในการผสานรวม คอนเทนต์ช็อปปิ้งโดยใช้ Engage SDK เพื่อป้อนข้อมูลทั้งพื้นที่ใหม่นี้ และแพลตฟอร์มที่มีอยู่ของ Google เช่น Entertainment Space
รายละเอียดการผสานรวม
คำศัพท์
การผสานรวมนี้ประกอบด้วยคลัสเตอร์ 5 ประเภทต่อไปนี้ คําแนะนํา, สินค้าแนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง สั่งซื้ออีกครั้ง และ การติดตามคำสั่งซื้อ Shopping
คลัสเตอร์คำแนะนำแสดงคำแนะนำการเลือกซื้อที่ปรับเปลี่ยนในแบบของคุณจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์แต่ละราย คำแนะนำเหล่านี้สามารถนำไปปรับเปลี่ยนให้สอดคล้องกับ ผู้ใช้ หรือแบบทั่วไป (เช่น รายการมาแรง) ใช้ตัวกรองเหล่านี้เพื่อแสดงเนื้อหา ผลิตภัณฑ์ กิจกรรม การลดราคา โปรโมชัน การสมัครใช้บริการ ตามความเหมาะสม
คำแนะนำจะมีโครงสร้างต่อไปนี้
คลัสเตอร์คำแนะนำ: มุมมอง UI ที่มีกลุ่มของ คำแนะนำจากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์รายเดียวกัน
ShoppingEntity: ออบเจ็กต์ที่แสดงถึงสินค้ารายการเดียวในคลัสเตอร์
คลัสเตอร์แนะนำจะแสดง Hero
ShoppingEntity
ที่เลือกจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ใน การจัดกลุ่ม UI เดียว มีแท็บแนะนำ 1 รายการ ซึ่งแสดงอยู่บริเวณด้านบนของ UI โดยมีลำดับความสำคัญ ตำแหน่งด้านบนคลัสเตอร์คำแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละราย ได้รับอนุญาตให้เผยแพร่ ShoppingEntity รายการเดียวในคลัสเตอร์ "แนะนำ"คลัสเตอร์รถเข็นช็อปปิ้งจะแสดงตัวอย่างภาพรถเข็นช็อปปิ้งจาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์ในการจัดกลุ่ม UI เดียว โดยยุยงให้ผู้ใช้ดำเนินการ รถเข็นที่ยังไม่ได้ชำระ มีคลัสเตอร์รถเข็นช็อปปิ้งรายการเดียวซึ่งก็คือ ปรากฏใกล้กับด้านบนของ UI โดยมีลำดับความสำคัญเหนือตำแหน่งทั้งหมด คลัสเตอร์คำแนะนำ พาร์ทเนอร์นักพัฒนาซอฟต์แวร์แต่ละรายได้รับอนุญาตให้เผยแพร่
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 | สูงสุด 1 ShoppingCart |
คลัสเตอร์รายการช็อปปิ้ง | มากที่สุด 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 เป็นต้นไป |
สตริง |
ชื่อ | ไม่บังคับ | ชื่อรถเข็น (เช่น ถุงช็อปปิ้งของคุณ) หากนักพัฒนาซอฟต์แวร์ไม่ได้ระบุรายการไว้ รถเข็นของคุณ เป็นค่าเริ่มต้น |
ข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
รูปภาพรถเข็น | ไม่บังคับ | รูปภาพของผลิตภัณฑ์แต่ละรายการในรถเข็น ใส่รูปภาพได้สูงสุด 10 รูปตามลำดับความสำคัญ เวลา จำนวนรูปภาพที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์ ของ Google |
โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ |
ป้ายกำกับรายการ | ไม่บังคับ | รายการป้ายกำกับของสินค้าในรายการช็อปปิ้ง จำนวนป้ายกำกับที่แสดงจริง จะขึ้นอยู่กับรูปแบบของอุปกรณ์ |
รายการป้ายกำกับข้อความอิสระ ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ ยาวเกินไป อาจแสดงจุดไข่ปลา) |
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
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
ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก - ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในรถเข็นช็อปปิ้งที่อัปเดตแล้ว คลัสเตอร์
ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและสถานะที่มีอยู่คือ บำรุง
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 สำหรับ คำถามที่พบบ่อย
รายชื่อติดต่อ
ข้อมูลติดต่อ Engage-developers@google.com หากมี คำถามใดๆ ระหว่างขั้นตอนการผสานรวม ทีมของเราจะตอบกลับโดยเร็วที่สุด เท่าที่จะเป็นไปได้
ขั้นตอนถัดไป
หลังจากผสานรวมเสร็จแล้ว ขั้นตอนถัดไปของคุณมีดังนี้
- ส่งอีเมลถึง Engage-developers@google.com และแนบ APK ที่ผสานรวมซึ่งพร้อมสำหรับการทดสอบโดย Google
- Google จะดำเนินการยืนยันและตรวจสอบเป็นการภายใน ทำงานตามที่คาดไว้ หากจำเป็น Google จะติดต่อคุณ พร้อมรายละเอียดที่จำเป็น
- เมื่อการทดสอบเสร็จสิ้นและไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ Google จะติดต่อหาคุณ คุณสามารถเริ่มเผยแพร่ APK ที่อัปเดตและผสานรวมไปยัง Play Store
- หลังจากที่ Google ยืนยันว่า APK ที่อัปเดตแล้วของคุณได้รับการเผยแพร่ไปยัง Play Store, คำแนะนำ, แนะนำ, รถเข็นช็อปปิ้ง รายการช็อปปิ้ง เรียงลำดับคลัสเตอร์ใหม่ และคลัสเตอร์การติดตามคำสั่งซื้อ Shopping อาจมีการเผยแพร่คลัสเตอร์และผู้ใช้มองเห็นได้