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

เพิ่มการมีส่วนร่วมในแอปโดยการเข้าถึงผู้ใช้ในทุกที่ที่ผู้ใช้อยู่ ผสานรวม Engage SDK เพื่อแสดงคำแนะนำที่ปรับเปลี่ยนในแบบของคุณและเนื้อหาที่ต่อเนื่องไปยังผู้ใช้โดยตรงในแพลตฟอร์มต่างๆ ในอุปกรณ์ เช่น คอลเล็กชัน, Entertainment Space และ Play Store การผสานรวมนี้จะเพิ่มขนาด APK โดยเฉลี่ยไม่เกิน 50 KB (บีบอัดแล้ว) และใช้เวลาของนักพัฒนาแอปประมาณ 1 สัปดาห์สำหรับแอปส่วนใหญ่ ดูข้อมูลเพิ่มเติมได้ที่เว็บไซต์ธุรกิจ

คู่มือนี้มีวิธีการสำหรับพาร์ทเนอร์นักพัฒนาแอปในการนำส่งเนื้อหา Shopping ไปยังแพลตฟอร์มเนื้อหา Engage

การรองรับหมวดหมู่และแพลตฟอร์ม

การมีสิทธิ์ใช้แพลตฟอร์ม Engage SDK ขึ้นอยู่กับหมวดหมู่เนื้อหาของแอป ใช้ตารางต่อไปนี้เพื่อพิจารณาสิทธิ์ของคุณสำหรับแพลตฟอร์มที่เฉพาะเจาะจง

สถานะ หมวดหมู่เนื้อหาหรือกรณีการใช้งาน แพลตฟอร์มที่รองรับ
รองรับ
(มีสิทธิ์แสดงในทุกแพลตฟอร์ม)
  • การเลือกซื้อเสื้อผ้า
  • ตลาดซื้อขายออนไลน์
  • ผู้ค้าปลีก
  • การเลือกซื้ออาหารและเครื่องดื่ม / ของใช้ทั่วไป
  • ส่วนลดและคูปอง
  • สัตว์เลี้ยง / อุปกรณ์
  • บ้านและที่พักอาศัย / อสังหาริมทรัพย์
  • คอลเล็กชัน
  • แท็บแอปใน Play Store
  • แท็บ "คุณ" ใน Play Store
  • หน้าข้อมูลสินค้าใน Store ของ Play Store
สิ่งที่ทำไม่ได้
  • แอป Shopper
  • การช็อปปิ้งแบบ B2B
  • แอปผู้ขาย / ผู้ขาย
  • รางวัลจากการสแกนใบเสร็จ
  • บริการโทรคมนาคม
  • ซื้อก่อน จ่ายทีหลัง

รายละเอียดการผสานรวม

ส่วนนี้จะอธิบายรายละเอียดขั้นตอน โมเดลข้อมูล และคำศัพท์ที่จำเป็นในการผสานรวมกับ Engage SDK สำหรับคอนเทนต์ช็อปปิ้ง

คำศัพท์

การผสานรวมนี้ประกอบด้วยคลัสเตอร์ 5 ประเภท ได้แก่ วิดีโอแนะนำ แนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง สั่งซื้ออีกครั้ง และการติดตามคำสั่งซื้อสำหรับการช็อปปิ้ง

  • คลัสเตอร์คำแนะนำจะแสดงคำแนะนำการช็อปปิ้งที่ปรับเปลี่ยนในแบบของคุณจากพาร์ทเนอร์นักพัฒนาแอปแต่ละราย คำแนะนำเหล่านี้สามารถปรับเปลี่ยนให้เหมาะกับผู้ใช้หรือเป็นแบบทั่วไป (เช่น สินค้าที่มาแรง) ใช้เพื่อแนะนำผลิตภัณฑ์ กิจกรรม การลดราคา โปรโมชัน และการสมัครใช้บริการ

    คำแนะนำจะมีโครงสร้างดังต่อไปนี้

    • คลัสเตอร์วิดีโอแนะนำ: มุมมอง UI ที่มีกลุ่มวิดีโอแนะนำจากพาร์ทเนอร์นักพัฒนาแอปรายเดียวกัน

    • ShoppingEntity: ออบเจ็กต์ที่แสดงสินค้า 1 รายการในคลัสเตอร์

  • คลัสเตอร์แนะนำจะแสดงเอนทิตีที่เลือกจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการจัดกลุ่ม UI เดียว จะมีคลัสเตอร์แนะนำเพียงคลัสเตอร์เดียว ซึ่งจะแสดงใกล้กับด้านบนของ UI โดยมีตำแหน่งที่มีลำดับความสำคัญสูงกว่าคลัสเตอร์วิดีโอแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายจะได้รับอนุญาตให้ออกอากาศเอนทิตีได้สูงสุด 10 รายการในคลัสเตอร์แนะนำ

  • คลัสเตอร์รถเข็นช็อปปิ้งจะแสดงตัวอย่างรถเข็นช็อปปิ้งจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการจัดกลุ่ม UI เดียว เพื่อกระตุ้นให้ผู้ใช้ดำเนินการซื้อสินค้าในรถเข็นที่ค้างอยู่ให้เสร็จสมบูรณ์ มีคลัสเตอร์รถเข็นช็อปปิ้งเพียงคลัสเตอร์เดียว ซึ่งจะแสดงใกล้กับด้านบนของ UI โดยมีตำแหน่งที่มีลำดับความสำคัญเหนือคลัสเตอร์วิดีโอแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายได้รับอนุญาตให้ออกอากาศอินสแตนซ์ ShoppingCart ได้สูงสุด 3 รายการในคลัสเตอร์รถเข็นช็อปปิ้ง

    รถเข็นช็อปปิ้งมีโครงสร้างดังนี้

    • คลัสเตอร์รถเข็นช็อปปิ้ง: มุมมอง UI ที่มีกลุ่มตัวอย่างรถเข็นช็อปปิ้งจากพาร์ทเนอร์นักพัฒนาแอปหลายราย

    • ShoppingCart: ออบเจ็กต์ที่แสดงตัวอย่างรถเข็นช็อปปิ้งสำหรับพาร์ทเนอร์นักพัฒนาแอปรายเดียว ซึ่งจะแสดงในคลัสเตอร์รถเข็นช็อปปิ้ง ShoppingCart ต้องแสดงจำนวนสินค้าทั้งหมดในรถเข็น และอาจรวมรูปภาพของสินค้าบางรายการในรถเข็นของผู้ใช้ด้วย

  • คลัสเตอร์รายการช็อปปิ้งจะแสดงตัวอย่างรายการช็อปปิ้งจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการจัดกลุ่ม UI เดียว ซึ่งจะแจ้งให้ผู้ใช้กลับไปยังแอปที่เกี่ยวข้องเพื่ออัปเดตและทำรายการให้เสร็จสมบูรณ์ มีคลัสเตอร์รายการช็อปปิ้งเพียงคลัสเตอร์เดียว

  • คลัสเตอร์สั่งซื้ออีกครั้งจะแสดงตัวอย่างคำสั่งซื้อก่อนหน้าจากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการจัดกลุ่ม UI เดียวกัน เพื่อแจ้งให้ผู้ใช้สั่งซื้ออีกครั้ง มีคลัสเตอร์การเรียงลำดับใหม่เพียงคลัสเตอร์เดียว

    • คลัสเตอร์สั่งซื้ออีกครั้งต้องแสดงจำนวนสินค้าทั้งหมดในคำสั่งซื้อก่อนหน้าของผู้ใช้ และต้องมีรายการใดรายการหนึ่งต่อไปนี้ด้วย

      • รูปภาพสำหรับสินค้า X รายการในคำสั่งซื้อก่อนหน้าของผู้ใช้
      • ป้ายกำกับสำหรับสินค้า X รายการในคำสั่งซื้อก่อนหน้าของผู้ใช้
  • คลัสเตอร์การติดตามคำสั่งซื้อ Shopping จะแสดงตัวอย่างคำสั่งซื้อ Shopping ที่รอดำเนินการหรือเพิ่งเสร็จสมบูรณ์จากพาร์ทเนอร์นักพัฒนาแอปหลายรายในการจัดกลุ่ม UI เดียว ซึ่งช่วยให้ผู้ใช้ติดตามคำสั่งซื้อของตนได้

    มีคลัสเตอร์ ShoppingOrderTracking รายการเดียวที่แสดงอยู่ใกล้กับด้านบนของ UI โดยมีตำแหน่งที่มีลำดับความสำคัญสูงกว่าคลัสเตอร์คำแนะนำทั้งหมด พาร์ทเนอร์นักพัฒนาแอปแต่ละรายได้รับอนุญาตให้ออกอากาศรายการ ShoppingOrderTrackingEntity หลายรายการในคลัสเตอร์การติดตามคำสั่งซื้อ Shopping

    • ShoppingOrderTrackingCluster มีโครงสร้างดังนี้

      • คลัสเตอร์ ShoppingOrderTracking: มุมมอง UI ที่มีกลุ่มตัวอย่างการติดตามคำสั่งซื้อจากพาร์ทเนอร์นักพัฒนาแอปหลายราย
      • ShoppingOrderTrackingEntity: ออบเจ็กต์ที่แสดงตัวอย่างการติดตามคำสั่งซื้อ Shopping สำหรับพาร์ทเนอร์นักพัฒนาแอปรายเดียว ซึ่งจะแสดงในคลัสเตอร์การติดตามคำสั่งซื้อ Shopping 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.6.0'
}

ดูข้อมูลเพิ่มเติมได้ที่ระดับการมองเห็นแพ็กเกจใน Android 11

สรุป

การออกแบบนี้อิงตามการใช้งานบริการที่มีผลผูกพัน

ข้อมูลที่ไคลเอ็นต์เผยแพร่ได้จะขึ้นอยู่กับขีดจำกัดต่อไปนี้สำหรับคลัสเตอร์ประเภทต่างๆ

ประเภทคลัสเตอร์ ขีดจำกัดของคลัสเตอร์ ขีดจำกัดเอนทิตีสูงสุดในคลัสเตอร์
คลัสเตอร์วิดีโอแนะนำ ไม่เกิน 7 รายการ ShoppingEntity ไม่เกิน 50 รายการ
คลัสเตอร์แนะนำ ไม่เกิน 1 รายการ ShoppingEntity ไม่เกิน 20 รายการ
คลัสเตอร์รถเข็นช็อปปิ้ง ไม่เกิน 1 รายการ ShoppingCart ไม่เกิน 3 รายการ

ระบบจะคาดหวังให้มีรถเข็นหลายรายการเฉพาะในแอปที่มีรถเข็นแยกต่างหากสำหรับผู้ขายแต่ละรายเท่านั้น

คลัสเตอร์รายการช็อปปิ้ง ไม่เกิน 1 รายการ ShoppingList ไม่เกิน 3 รายการ
คลัสเตอร์การสั่งซื้อซ้ำใน Shopping ไม่เกิน 1 รายการ ReorderEntity ไม่เกิน 1 รายการ
คลัสเตอร์การติดตามคำสั่งซื้อใน Shopping ไม่เกิน 3 รายการ ShoppingOrderTrackingEntity ไม่เกิน 3 รายการ

ขั้นตอนที่ 1: ระบุข้อมูลนิติบุคคล

SDK ได้กำหนดเอนทิตีต่างๆ เพื่อแสดงรายการแต่ละประเภท ระบบรองรับเอนทิตีต่อไปนี้สำหรับหมวดหมู่ Shopping

  1. ShoppingEntity
  2. ShoppingCart
  3. ShoppingList
  4. Reorder
  5. 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 ไปยังรถเข็นช็อปปิ้งในแอปของพาร์ทเนอร์

หมายเหตุ: คุณใช้ Deep Link สำหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้

URI
จำนวนรายการ ต้องระบุ

จำนวนสินค้า (ไม่ใช่แค่จำนวนผลิตภัณฑ์) ในรถเข็นช็อปปิ้ง

ตัวอย่างเช่น หากมีเสื้อที่เหมือนกัน 3 ตัวและหมวก 1 ใบในรถเข็น ตัวเลขนี้ควรเป็น 4

จำนวนเต็ม >= 1
ข้อความเกี่ยวกับการดำเนินการ ไม่บังคับ

ข้อความกระตุ้นให้ดำเนินการของปุ่มในรถเข็นช็อปปิ้ง (เช่น ถุงช็อปปิ้งของคุณ)

หากนักพัฒนาแอปไม่ได้ระบุข้อความการดำเนินการไว้ ระบบจะใช้ดูรถเข็นเป็นค่าเริ่มต้น

แอตทริบิวต์นี้รองรับในเวอร์ชัน 1.1.0 เป็นต้นไป

สตริง
ชื่อ ไม่บังคับ

ชื่อของรถเข็น (เช่น ถุงช็อปปิ้งของคุณ)

หากนักพัฒนาแอปไม่ได้ระบุชื่อไว้ ระบบจะใช้รถเข็นของคุณเป็นค่าเริ่มต้น

หากพาร์ทเนอร์นักพัฒนาแอปเผยแพร่รถเข็นแยกต่างหากสำหรับผู้ขายแต่ละราย โปรดระบุชื่อผู้ขายในชื่อ

ข้อความอิสระ

ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา)

รูปภาพรถเข็น ไม่บังคับ

รูปภาพของผลิตภัณฑ์แต่ละรายการในรถเข็น

คุณสามารถระบุรูปภาพได้สูงสุด 10 รูปตามลำดับความสำคัญ จำนวนรูปภาพที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์

ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ
ป้ายกำกับรายการ ไม่บังคับ

รายการป้ายกำกับสำหรับสินค้าในรายการช็อปปิ้ง

จำนวนป้ายกำกับที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์

รายการป้ายกำกับข้อความอิสระ

ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา)

การประทับเวลาการโต้ตอบของผู้ใช้ล่าสุด ไม่บังคับ จำนวนมิลลิวินาทีที่ผ่านไปจาก Epoch ซึ่งระบุเวลาล่าสุดที่ผู้ใช้โต้ตอบกับรถเข็น

พาร์ทเนอร์นักพัฒนาแอปที่เผยแพร่รถเข็นแยกต่างหากต่อผู้ขายจะส่งข้อมูลนี้เป็นอินพุต และอาจใช้สำหรับการจัดอันดับ

การประทับเวลา Epoch ในหน่วยมิลลิวินาที
DisplayTimeWindow (ไม่บังคับ) - กำหนดกรอบเวลาสำหรับเนื้อหาที่จะแสดงบนแพลตฟอร์ม
การประทับเวลาเริ่มต้น ไม่บังคับ

การประทับเวลา Epoch ที่ควรแสดงเนื้อหาบนแพลตฟอร์ม

หากไม่ได้ตั้งค่าไว้ เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม

การประทับเวลา Epoch ในหน่วยมิลลิวินาที
การประทับเวลาสิ้นสุด ไม่บังคับ

การประทับเวลา Epoch หลังจากที่เนื้อหาไม่แสดงบนแพลตฟอร์มอีกต่อไป

หากไม่ได้ตั้งค่าไว้ เนื้อหาจะมีสิทธิ์แสดงบนแพลตฟอร์ม

การประทับเวลา Epoch ในหน่วยมิลลิวินาที

ShoppingList

แอตทริบิวต์ ข้อกำหนด คำอธิบาย รูปแบบ
URI การดำเนินการ ต้องระบุ

Deep Link ไปยังรายการช็อปปิ้งในแอปของพาร์ทเนอร์

หมายเหตุ: คุณใช้ Deep Link สำหรับการระบุแหล่งที่มาได้ ดูคำถามที่พบบ่อยนี้

URI
จำนวนรายการ ต้องระบุ จำนวนสินค้าในรายการช็อปปิ้ง จำนวนเต็ม >= 1
ชื่อ ไม่บังคับ

ชื่อรายการ (เช่น รายการซื้อของเข้าบ้าน)

หากนักพัฒนาแอปไม่ได้ระบุชื่อไว้ ระบบจะใช้ชื่อรายการช็อปปิ้งเป็นค่าเริ่มต้น

ข้อความอิสระ

ขนาดข้อความที่แนะนำ: ไม่เกิน 25 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา)

ป้ายกำกับรายการ ต้องระบุ

รายการป้ายกำกับสำหรับสินค้าในรายการช็อปปิ้ง

ต้องระบุป้ายกำกับอย่างน้อย 1 รายการและระบุได้สูงสุด 10 รายการตามลำดับความสำคัญ จำนวนป้ายกำกับที่แสดงจริงจะขึ้นอยู่กับรูปแบบของอุปกรณ์

รายการป้ายกำกับข้อความอิสระ

ขนาดข้อความที่แนะนำ: ไม่เกิน 20 อักขระ (ข้อความที่ยาวเกินไปอาจแสดงจุดไข่ปลา)

การประทับเวลาการโต้ตอบของผู้ใช้ล่าสุด ต้องระบุ จำนวนมิลลิวินาทีที่ผ่านไปจาก Epoch ซึ่งระบุเวลาล่าสุดที่ผู้ใช้โต้ตอบกับรายการช็อปปิ้ง การประทับเวลา Epoch ในหน่วยมิลลิวินาที

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 ในหน่วยมิลลิวินาทีที่มีการสั่งซื้อ

ระบบจะแสดงเวลาสั่งซื้อหากไม่มีกรอบเวลานำส่งที่คาดไว้

การประทับเวลา Epoch ในหน่วยมิลลิวินาที
URI การดำเนินการ ต้องระบุ

Deep Link ไปยังการติดตามคำสั่งซื้อในแอปของพาร์ทเนอร์

URI
OrderDeliveryTimeWindow (ไม่บังคับ) - กำหนดกรอบเวลาสำหรับคำสั่งซื้อที่กำลังติดตามตั้งแต่เวลาที่สั่งซื้อจนถึงเวลาที่คาดว่าจะนำส่ง/นำส่งจริง
OrderDeliveryTimeWindow - Start Time ไม่บังคับ

การประทับเวลา Epoch ในหน่วยมิลลิวินาทีที่ระบบจะนำส่งหรือพร้อมให้มารับคำสั่งซื้อ

การประทับเวลา Epoch ในหน่วยมิลลิวินาที
OrderDeliveryTimeWindow - End Time ไม่บังคับ

การประทับเวลา Epoch ในหน่วยมิลลิวินาทีที่คำสั่งซื้อจะได้รับการจัดส่งหรือพร้อมให้รับสินค้า

การประทับเวลา Epoch ในหน่วยมิลลิวินาที
รูปภาพโปสเตอร์ ไม่บังคับ

รูปภาพของสินค้า/ผลิตภัณฑ์ 1 รายการที่เป็นส่วนหนึ่งของคำสั่งซื้อ

สัดส่วนภาพที่แนะนําคือ 1:1

ดูคำแนะนำได้ที่ข้อกำหนดเกี่ยวกับรูปภาพ
จำนวนรายการ ไม่บังคับ จำนวนสินค้าในคำสั่งซื้อ จำนวนเต็ม >= 1
คำอธิบาย ไม่บังคับ

ข้อความย่อหน้าเดียวเพื่ออธิบายสินค้าในคำสั่งซื้อ

หมายเหตุ: ระบบจะแสดงคำอธิบายหรือรายการคำบรรยายอย่างใดอย่างหนึ่งให้ผู้ใช้เห็น ไม่ใช่ทั้ง 2 อย่าง

ข้อความอิสระ

ขนาดข้อความที่แนะนำ: 180 อักขระ

รายการคำบรรยาย ไม่บังคับ

คำบรรยายสูงสุด 3 รายการ โดยคำบรรยายแต่ละรายการเป็นข้อความบรรทัดเดียว

หมายเหตุ: ระบบจะแสดงคำอธิบายหรือรายการคำบรรยายอย่างใดอย่างหนึ่งให้ผู้ใช้เห็น ไม่ใช่ทั้ง 2 อย่าง

ข้อความอิสระ

ขนาดข้อความที่แนะนำสำหรับคำบรรยายแต่ละรายการ: สูงสุด 50 อักขระ

มูลค่าการสั่งซื้อ - ราคาปัจจุบัน ไม่บังคับ มูลค่าปัจจุบันของคำสั่งซื้อ ข้อความอิสระ
หมายเลขคำสั่งซื้อ ไม่บังคับ หมายเลข/รหัสคำสั่งซื้อที่ใช้ระบุคำสั่งซื้อได้อย่างไม่ซ้ำกัน

ข้อความอิสระ

ขนาดข้อความที่แนะนำ: สูงสุด 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
  • publishShoppingCarts
  • publishShoppingLists
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteReorderCluster
  • deleteShoppingOrderTrackingCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

API นี้ใช้เพื่อตรวจสอบว่าบริการพร้อมสำหรับการผสานรวมหรือไม่ และเนื้อหาจะแสดงบนอุปกรณ์ได้หรือไม่

คุณสามารถตรวจสอบความพร้อมให้บริการสำหรับคลัสเตอร์ทุกประเภทที่ต้องการเผยแพร่ได้ isServiceAvailable API จะยอมรับออบเจ็กต์คำขอ ServiceAvailabilityRequest ซึ่งมีประเภทคลัสเตอร์ที่ต้องตรวจสอบความพร้อมให้บริการ คุณสามารถดูค่า enum ของ ClusterType ที่จำเป็นสำหรับ ServiceAvailabilityRequest ได้จากตารางต่อไปนี้

ประเภทคลัสเตอร์ ค่าคงที่ประเภทคลัสเตอร์ ค่าจำนวนเต็ม
ไม่ทราบ TYPE_UNKNOWN 0
คลัสเตอร์วิดีโอแนะนำ TYPE_RECOMMENDATION 1
คลัสเตอร์แนะนำ TYPE_FEATURED 2
คลัสเตอร์ความต่อเนื่อง TYPE_CONTINUATION 3
คลัสเตอร์รถเข็นช็อปปิ้ง TYPE_SHOPPING_CART 4
คลัสเตอร์การจัดการผู้ใช้ TYPE_ENGAGEMENT 8
คลัสเตอร์รายการช็อปปิ้ง TYPE_SHOPPING_LIST 9
คลัสเตอร์การสั่งซื้อซ้ำใน Shopping TYPE_SHOPPING_REORDER 10
คลัสเตอร์การติดตามคำสั่งซื้อใน Shopping TYPE_SHOPPING_ORDER_TRACKING 11
คลัสเตอร์การสมัครใช้บริการ TYPE_SUBSCRIPTION 12

Kotlin

val request = ServiceAvailabilityRequest.Builder()
    .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
    .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
    .build()

client.isServiceAvailable(request).addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val availabilityMap = task.result
        if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
            // Proceed with publishing continuation content
        }
        if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
}

Java

ServiceAvailabilityRequest request =
    new ServiceAvailabilityRequest.Builder()
        .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
        .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
        .build();

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
ฟีเจอร์ความพร้อมให้บริการแบบมีเงื่อนไข

แอปที่ผสานรวมบางแอปจะขอการกำหนดค่าพิเศษที่เปิดและปิดใช้บริการ Engage เป็นระยะๆ เพื่อลดค่าใช้จ่ายการแสดงผล อย่างไรก็ตาม กลยุทธ์การนำเข้าเนื้อหาเป็นระยะๆ นี้ส่งผลเสียต่อประสบการณ์ของผู้ใช้ เนื่องจากระบบจะไม่แสดงเนื้อหาที่ล้าสมัย และจะไม่แสดงเนื้อหาในบางแพลตฟอร์ม

ตั้งแต่เวอร์ชัน 1.6.0 เป็นต้นไป Engage SDK จะช่วยให้ตรวจสอบความพร้อมใช้งานของคลัสเตอร์บางประเภทได้ หากแอปของคุณใช้การส่งผ่านข้อมูลเป็นระยะๆ ให้ทำดังนี้

  • คลัสเตอร์ความต่อเนื่อง (เช่น รถเข็นช็อปปิ้ง รายการช็อปปิ้ง การสั่งซื้อซ้ำ และการติดตามคำสั่งซื้อการช็อปปิ้ง) จะยังคงเปิดใช้อยู่โดยค่าเริ่มต้นในอุปกรณ์ที่รองรับทั้งหมด
  • คลัสเตอร์ประเภทอื่นๆ (เช่น วิดีโอแนะนำ) จะเปิดและปิดใช้เป็นระยะๆ

หากการกำหนดค่าเริ่มต้นนี้ไม่เหมาะกับความต้องการของคุณ โปรดติดต่อ engage-developers@google.com

สำหรับ SDK เวอร์ชันก่อน v1.6.0 (เลิกใช้งานแล้ว)

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 ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาออก
  • ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอในคลัสเตอร์ที่แนะนำที่อัปเดต

ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

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 ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาออก
  • ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอในคลัสเตอร์รถเข็นช็อปปิ้งที่อัปเดต

ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

publishShoppingLists

API นี้ใช้เพื่อเผยแพร่รายการออบเจ็กต์ ShoppingList

Kotlin

client.publishShoppingLists(
            PublishShoppingListsRequest.Builder()
                .addShoppingList(
                    ShoppingList.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingLists(
            new PublishShoppingListsRequest.Builder()
                .addShoppingList(
                    new ShoppingList.Builder()
                        ...
                        .build())
                .build());

เมื่อบริการได้รับคำขอ ระบบจะดำเนินการต่อไปนี้ภายในธุรกรรมเดียว

  • ระบบจะนำข้อมูล ShoppingList ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาออก
  • ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอในคลัสเตอร์รายการช็อปปิ้งที่อัปเดต

ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

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

หากไม่มีการเผยแพร่คลัสเตอร์ใดเลยเนื่องจากเหตุผลทางธุรกิจภายใน เราขอแนะนำอย่างยิ่งให้อัปเดตสถานะการเผยแพร่โดยใช้ API updatePublishStatus ซึ่งเป็นสิ่งสำคัญเนื่องจากเหตุผลต่อไปนี้

  • การระบุสถานะในทุกสถานการณ์ แม้ว่าเนื้อหาจะเผยแพร่แล้ว (STATUS == PUBLISHED) ก็มีความสำคัญต่อการสร้างแดชบอร์ดที่ใช้สถานะที่ชัดเจนนี้เพื่อแสดงประสิทธิภาพและเมตริกอื่นๆ ของการผสานรวม
  • หากไม่มีการเผยแพร่เนื้อหาแต่สถานะการผสานรวมไม่เสียหาย (STATUS == NOT_PUBLISHED) Google จะหลีกเลี่ยงการทริกเกอร์การแจ้งเตือนในแดชบอร์ดประสิทธิภาพของแอปได้ ซึ่งเป็นการยืนยันว่าเนื้อหาไม่ได้เผยแพร่เนื่องจากสถานการณ์ที่คาดไว้จากมุมมองของผู้ให้บริการ
  • ซึ่งจะช่วยให้นักพัฒนาแอปทราบข้อมูลเชิงลึกเกี่ยวกับช่วงเวลาที่เผยแพร่ข้อมูลเทียบกับช่วงเวลาที่ไม่ได้เผยแพร่
  • Google อาจใช้รหัสสถานะเพื่อกระตุ้นให้ผู้ใช้ดำเนินการบางอย่างในแอปเพื่อให้เห็นเนื้อหาแอปหรือเอาชนะอุปสรรคได้

รายการรหัสสถานะการเผยแพร่ที่มีสิทธิ์มีดังนี้

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

หากเนื้อหาไม่ได้รับการเผยแพร่เนื่องจากผู้ใช้ไม่ได้เข้าสู่ระบบ Google ขอแนะนำให้เผยแพร่การ์ดลงชื่อเข้าใช้ หากผู้ให้บริการไม่สามารถเผยแพร่การ์ดการลงชื่อเข้าใช้ไม่ว่าด้วยเหตุผลใดก็ตาม เราขอแนะนำให้เรียกใช้ API updatePublishStatus พร้อมรหัสสถานะ NOT_PUBLISHED_REQUIRES_SIGN_IN

Kotlin

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationsClusters

API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์วิดีโอแนะนำ

Kotlin

client.deleteRecommendationsClusters()

Java

client.deleteRecommendationsClusters();

เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์วิดีโอแนะนำ ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

deleteFeaturedCluster

API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์ที่แนะนํา

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์ที่แนะนำ ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

deleteShoppingCartCluster

API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์รถเข็นช็อปปิ้ง

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์รถเข็นช็อปปิ้ง ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

deleteShoppingListCluster

API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์รายการช็อปปิ้ง

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์รายการช็อปปิ้ง ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

deleteReorderCluster

API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์การสั่งซื้อซ้ำของ Shopping

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์การสั่งซื้อซ้ำของ Shopping ในกรณีที่เกิดข้อผิดพลาด ระบบจะปฏิเสธคำขอทั้งหมดและคงสถานะที่มีอยู่ไว้

deleteShoppingOrderTrackingCluster

API นี้ใช้เพื่อลบเนื้อหาของคลัสเตอร์การติดตามคำสั่งซื้อ Shopping

Kotlin

client.deleteShoppingOrderTrackingCluster()

Java

client.deleteShoppingOrderTrackingCluster();

เมื่อบริการได้รับคำขอ ระบบจะนำข้อมูลที่มีอยู่ออกจากคลัสเตอร์การติดตามคำสั่งซื้อ Shopping ในกรณีที่เกิดข้อผิดพลาด คำขอทั้งหมดจะถูกปฏิเสธและระบบจะคงสถานะที่มีอยู่ไว้

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 โดยมีสาเหตุรวมเป็นรหัสข้อผิดพลาด

รหัสข้อผิดพลาด ชื่อข้อผิดพลาด หมายเหตุ
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),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Shopping Cart Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_CART),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Shopping List Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_LIST),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Reorder Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Shopping Order Tracking Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)
}

Java

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger 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),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_CART),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_LIST),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// 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),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

}
  • ประกาศการติดตั้งใช้งานแบบคงที่ด้วยแท็ก <receiver> ในไฟล์ AndroidManifest.xml ซึ่งจะช่วยให้แอปพลิเคชันได้รับ Intent การออกอากาศเมื่อไม่ได้ทำงาน และยังช่วยให้แอปพลิเคชันเผยแพร่เนื้อหาได้ด้วย

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.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>

บริการจะส่ง Intent ต่อไปนี้

  • 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 ขอแนะนำให้เริ่มการโทร publishShoppingCarts เมื่อได้รับ Intent นี้
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST ขอแนะนำให้เริ่มการโทร publishShoppingLists เมื่อได้รับ 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

คำถามที่พบบ่อย

ดูคำถามที่พบบ่อยได้ที่คำถามที่พบบ่อยเกี่ยวกับ Engage SDK

รายชื่อติดต่อ

โปรดติดต่อ engage-developers@google.com หากมีคำถามระหว่างกระบวนการผสานรวม ทีมของเราจะตอบกลับโดยเร็วที่สุด

ขั้นตอนถัดไป

หลังจากผสานรวมเสร็จแล้ว ขั้นตอนถัดไปมีดังนี้

  • ส่งอีเมลไปที่ engage-developers@google.com และแนบ APK ที่ผสานรวมซึ่งพร้อมให้ Google ทดสอบ
  • Google จะดำเนินการตรวจสอบและตรวจสอบภายในเพื่อให้แน่ใจว่าการผสานรวมทำงานได้ตามที่คาดไว้ หากจำเป็นต้องทำการเปลี่ยนแปลง Google จะติดต่อคุณพร้อมรายละเอียดที่จำเป็น
  • เมื่อการทดสอบเสร็จสมบูรณ์และไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ Google จะติดต่อคุณเพื่อแจ้งให้ทราบว่าคุณสามารถเริ่มเผยแพร่ APK ที่อัปเดตและผสานรวมแล้วไปยัง Play Store ได้
  • หลังจาก Google ยืนยันว่า APK ที่อัปเดตได้รับการเผยแพร่ไปยัง Play Store แล้ว ระบบอาจเผยแพร่คลัสเตอร์วิดีโอแนะนำ แนะนำ รถเข็นช็อปปิ้ง รายการช็อปปิ้ง คลัสเตอร์สั่งซื้ออีกครั้ง และคลัสเตอร์การติดตามคำสั่งซื้อช็อปปิ้ง และผู้ใช้จะเห็นคลัสเตอร์ดังกล่าว