Engage SDK Shopping: คำแนะนำการผสานรวมทางเทคนิคของบุคคลที่สาม

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

  1. ShoppingEntity
  2. ShoppingCart
  3. ShoppingList
  4. Reorder
  5. 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 แล้ว คลัสเตอร์รายการแนะนำ รายการแนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง คลัสเตอร์ลำดับใหม่ และคลัสเตอร์การติดตามคำสั่งซื้ออาจมีการเผยแพร่และผู้ใช้สามารถมองเห็นได้