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

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

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

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

คำศัพท์

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

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

    • คลัสเตอร์คำแนะนำอาจมี ProductEntity, StoreEntity หรือ ข้อมูล RecipeEntity รายการ แต่ไม่ใช่เอนทิตีประเภทต่างๆ ผสมกัน
    รูป :`ProductEntity`, "StoreEntity" และ "RecipeEntity" (*UI เพื่อการอธิบายเท่านั้น)
  • คลัสเตอร์แนะนำจะแสดง Hero ProductEntity ที่เลือก StoreEntity หรือ RecipeEntity จากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายใน UI เดียว การจัดกลุ่ม มีคลัสเตอร์ฟีเจอร์เดียวซึ่งแสดงใกล้กับ ด้านบนของ UI โดยมีลำดับความสำคัญเหนือคำแนะนำทั้งหมด คลัสเตอร์ พาร์ทเนอร์นักพัฒนาแอปแต่ละรายได้รับอนุญาตให้เผยแพร่เอนทิตีรายการเดียว ประเภทที่รองรับใน "แนะนำ" โดยมีเอนทิตีจำนวนมาก (อาจเป็น ประเภท) จากนักพัฒนาแอปหลายรายในคลัสเตอร์ "แนะนำ"

    วันที่
    รูป : คลัสเตอร์เด่นที่มี "RecipeEntity" (*UI เพื่อการอธิบายเท่านั้น)
  • กลุ่ม Food Shopping Cart แสดงตัวอย่างสินค้าอุปโภคบริโภค รถเข็นจากพาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายในกลุ่ม UI เดียว ซึ่งแจ้งให้ผู้ใช้ดำเนินการ นำสินค้าออกจากรถเข็น มีฟู้ดช้อปปิ้งแบบรถเข็นเดียว คลัสเตอร์

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

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

    วันที่
    ภาพ: กลุ่มรายการช็อปปิ้งอาหารจากรายการเดียว พาร์ทเนอร์ (*UI เพื่อการอธิบายเท่านั้น)
  • คลัสเตอร์สั่งซื้อใหม่จะแสดงตัวอย่างคำสั่งซื้อก่อนหน้านี้จาก พาร์ทเนอร์นักพัฒนาซอฟต์แวร์หลายรายในการจัดกลุ่ม UI เดียว เพื่อกระตุ้นให้ผู้ใช้สั่งซื้อใหม่ มีคลัสเตอร์ "เรียงลำดับใหม่" เดียว

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

      • รูปภาพสำหรับสินค้า X ในคำสั่งซื้อก่อนหน้าของผู้ใช้
      • ป้ายกำกับสำหรับรายการ X ในคำสั่งซื้อก่อนหน้านี้ของผู้ใช้
    รูป: คลัสเตอร์ Food Orders จากรายการเดียว พาร์ทเนอร์ (*UI เพื่อการอธิบายเท่านั้น)

งานก่อนเริ่มเวิร์กช็อป

ระดับ 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'
}

สรุป

การออกแบบนี้มาจากการใช้ ขอบเขต service [บริการ]

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

ประเภทคลัสเตอร์ ขีดจำกัดของคลัสเตอร์ ขีดจำกัดเอนทิตีสูงสุดในคลัสเตอร์
คลัสเตอร์คำแนะนำ สูงสุด 5 รายการ สูงสุด 25 (ProductEntity, RecipeEntity หรือ StoreEntity)
คลัสเตอร์แนะนำ มากที่สุด 1 ไม่เกิน 1 (ProductEntity, RecipeEntity หรือ StoreEntity)
กลุ่มรถเข็นช็อปปิ้ง มากที่สุด 1 สูงสุด 1 ShoppingCartEntity
กลุ่มรายการช็อปปิ้งอาหาร มากที่สุด 1 สูงสุด 1 ShoppingListEntity
คลัสเตอร์ Food order มากที่สุด 1 สูงสุด 1 ReorderEntity

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

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

  1. ProductEntity
  2. StoreEntity
  3. RecipeEntity
  4. FoodShoppingCart
  5. FoodShoppingList
  6. FoodReorderCluster

แผนภูมิด้านล่างแสดงแอตทริบิวต์และข้อกำหนดสำหรับแต่ละประเภท

ProductEntity

ออบเจ็กต์ ProductEntity แสดงสินค้าแต่ละรายการ (เช่น ร้านขายของชำ รายการ อาหารจากร้านอาหาร หรือโปรโมชัน) ที่พาร์ทเนอร์นักพัฒนาแอปต้องการ เผยแพร่

วันที่
รูป : แอตทริบิวต์ของ ProductEntity

แอตทริบิวต์ ข้อกำหนด คำอธิบาย รูปแบบ
ภาพโปสเตอร์ ต้องระบุ ต้องระบุรูปภาพอย่างน้อย 1 รูป โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ
การดำเนินการ Uri ต้องระบุ

Deep Link ไปยังหน้าในแอปที่แสดงรายละเอียดเกี่ยวกับ ผลิตภัณฑ์

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

URI
ชื่อ ไม่บังคับ ชื่อผลิตภัณฑ์

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

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

ราคา - ปัจจุบัน ต้องระบุแบบมีเงื่อนไข

ราคาปัจจุบันของผลิตภัณฑ์

ต้องระบุหากมีการระบุราคาที่มีขีดทับ

ข้อความอิสระ
ราคา - ขีดทับ ไม่บังคับ ราคาเดิมของนิติบุคคล ซึ่งมีการขีดฆ่าใน UI ข้อความอิสระ
ข้อความเสริม ไม่บังคับ ข้อความไฮไลต์เพื่อแสดงโปรโมชัน กิจกรรม หรือการอัปเดตสำหรับผลิตภัณฑ์ หาก พร้อมใช้งาน

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

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

ข้อความอย่างละเอียดของข้อความไฮไลต์ ไม่บังคับ พิมพ์ข้อความอย่างละเอียดสำหรับข้อความไฮไลต์

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

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

การให้คะแนน (ไม่บังคับ) - หมายเหตุ: การให้คะแนนทั้งหมดจะแสดงขึ้น โดยใช้ระบบการให้ดาวแบบมาตรฐาน
การให้คะแนน - ค่าสูงสุด ไม่บังคับ

ค่าสูงสุดของสเกลการให้คะแนน

ต้องระบุหากค่าปัจจุบันของคะแนนรวมอยู่ ไว้ให้

จำนวน >= 0.0
การจัดประเภท - ค่าปัจจุบัน ไม่บังคับ

ค่าปัจจุบันของสเกลการให้คะแนน

ต้องระบุหากมีค่าสูงสุดของคะแนนด้วย ไว้ให้

จำนวน >= 0.0
คะแนน - จำนวน ไม่บังคับ

จำนวนการให้คะแนนของผลิตภัณฑ์

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

สตริง
คะแนน - ค่าของจำนวน ไม่บังคับ

จำนวนการให้คะแนนของผลิตภัณฑ์

หมายเหตุ: โปรดป้อนช่องนี้หากคุณไม่ได้จัดการ ตรรกะตัวย่อการแสดงผล ด้วยตัวคุณเอง ถ้ามีทั้งค่า "นับ" และ "ค่าการนับ" แสดง จำนวนจะปรากฏต่อผู้ใช้

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

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

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

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

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

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

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

StoreEntity

ออบเจ็กต์ StoreEntity แสดงร้านค้าแต่ละแห่งที่พาร์ทเนอร์นักพัฒนาแอป ต้องการเผยแพร่ เช่น ร้านอาหาร หรือร้านขายของชำ

วันที่
รูป : แอตทริบิวต์ของ StoreEntity

แอตทริบิวต์ ข้อกำหนด คำอธิบาย รูปแบบ
ภาพโปสเตอร์ ต้องระบุ ต้องระบุรูปภาพอย่างน้อย 1 รูป โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ
การดำเนินการ Uri ต้องระบุ

Deep Link ไปยังหน้าในแอปที่แสดงรายละเอียดเกี่ยวกับ

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

URI
ชื่อ ไม่บังคับ ชื่อร้านค้า

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

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

ตำแหน่ง ไม่บังคับ ตำแหน่งของร้านค้า

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

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

ข้อความเสริม ไม่บังคับ ข้อความไฮไลต์เพื่อแสดงโปรโมชัน กิจกรรม หรือการอัปเดตสำหรับร้านค้า หาก พร้อมใช้งาน

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

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

ข้อความอย่างละเอียดของข้อความไฮไลต์ ไม่บังคับ พิมพ์ข้อความอย่างละเอียดสำหรับข้อความไฮไลต์

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

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

คำอธิบาย ไม่บังคับ คำอธิบายของร้านค้า

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

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

หมายเหตุ: การให้คะแนนทั้งหมดแสดงโดยใช้ ระบบการให้ดาวแบบมาตรฐาน
การให้คะแนน - ค่าสูงสุด ไม่บังคับ

ค่าสูงสุดของสเกลการให้คะแนน

ต้องระบุหากค่าปัจจุบันของคะแนนรวมอยู่ ไว้ให้

จำนวน >= 0.0
การจัดประเภท - ค่าปัจจุบัน ไม่บังคับ

ค่าปัจจุบันของสเกลการให้คะแนน

ต้องระบุหากมีค่าสูงสุดของคะแนนด้วย ไว้ให้

จำนวน >= 0.0
คะแนน - จำนวน ไม่บังคับ

จำนวนการให้คะแนนร้านค้า

หมายเหตุ: กรอกข้อมูลในช่องนี้หากแอปของคุณต้องการ ควบคุมวิธีแสดงโฆษณานี้แก่ผู้ใช้ ระบุสตริงที่สั้นกระชับ ที่แสดงต่อผู้ใช้ได้ ตัวอย่างเช่น หากจำนวนนับคือ 1,000,000 คน ลองใช้ตัวย่อ เช่น 1M เพื่อไม่ให้เป็น ถูกตัดบนหน้าจอขนาดเล็ก

สตริง
คะแนน - ค่าของจำนวน ไม่บังคับ

จำนวนการให้คะแนนร้านค้า

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

ยาว

RecipeEntity

ออบเจ็กต์ RecipeEntity แสดงรายการสูตรอาหารที่พาร์ทเนอร์นักพัฒนาแอปต้องการ เพื่อเผยแพร่

วันที่
รูป : แอตทริบิวต์ของ RecipeEntity

แอตทริบิวต์ ข้อกำหนด คำอธิบาย รูปแบบ
ภาพโปสเตอร์ ต้องระบุ ต้องระบุรูปภาพอย่างน้อย 1 รูป โปรดดูข้อกำหนดเกี่ยวกับรูปภาพสำหรับคำแนะนำ
การดำเนินการ Uri ต้องระบุ

Deep Link ไปยังหน้าในแอปที่แสดงรายละเอียดเกี่ยวกับ สูตรอาหาร

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

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

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

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

ผู้เขียน ไม่บังคับ ผู้เขียนสูตรอาหาร

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

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

เวลาทำอาหาร/เตรียม ไม่บังคับ เวลาทำอาหารของสูตรอาหาร

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

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

ข้อความเสริม ไม่บังคับ ข้อความไฮไลต์เพื่อแสดงโปรโมชัน กิจกรรม หรือการอัปเดตสูตร หาก พร้อมใช้งาน

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

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

หมวดหมู่ ไม่บังคับ หมวดหมู่ของสูตรอาหาร

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

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

คำอธิบาย ไม่บังคับ คำอธิบายสูตรอาหาร

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

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

หมายเหตุ: การให้คะแนนทั้งหมดแสดงโดยใช้ ระบบการให้ดาวแบบมาตรฐาน
การให้คะแนน - ค่าสูงสุด ไม่บังคับ

ค่าสูงสุดของสเกลการให้คะแนน

ต้องระบุหากค่าปัจจุบันของคะแนนรวมอยู่ ไว้ให้

จำนวน >= 0.0
การจัดประเภท - ค่าปัจจุบัน ไม่บังคับ

ค่าปัจจุบันของสเกลการให้คะแนน

ต้องระบุหากมีค่าสูงสุดของคะแนนด้วย ไว้ให้

จำนวน >= 0.0
คะแนน - จำนวน ไม่บังคับ

จำนวนการให้คะแนนของสูตรอาหาร

หมายเหตุ: กรอกข้อมูลในช่องนี้หากแอปของคุณต้องการ ควบคุมวิธีแสดงโฆษณานี้แก่ผู้ใช้ ระบุสตริงที่สั้นกระชับ ที่แสดงต่อผู้ใช้ได้ ตัวอย่างเช่น หากจำนวนนับคือ 1,000,000 คน ลองใช้ตัวย่อ เช่น 1M เพื่อไม่ให้เป็น ถูกตัดบนหน้าจอขนาดเล็ก

สตริง
คะแนน - ค่าของจำนวน ไม่บังคับ

จำนวนการให้คะแนนของสูตรอาหาร

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

ยาว

FoodShoppingCart

วันที่
ภาพ: แอตทริบิวต์คลัสเตอร์รถเข็นช็อปปิ้ง

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

ลิงก์ในรายละเอียดไปยังรถเข็นช็อปปิ้งในแอปของพาร์ทเนอร์

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

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

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

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

จำนวนเต็ม >= 1
ชื่อ ไม่บังคับ

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

หากนักพัฒนาซอฟต์แวร์ไม่ได้ระบุรายการไว้ รถเข็นของคุณ เป็นค่าเริ่มต้น

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

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

ข้อความดำเนินการ ไม่บังคับ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FoodShoppingList

วันที่
ภาพ: กลุ่มรายการช็อปปิ้งอาหาร

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

ลิงก์ในรายละเอียดที่ไปยังรายการช็อปปิ้งในแอปของพาร์ทเนอร์

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

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

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

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

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

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

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

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

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

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

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

FoodReorderCluster

วันที่
รูป: คลัสเตอร์ Food Orders

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

Deep Link สำหรับสั่งซื้อใหม่ในแอปของพาร์ทเนอร์

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

URI
ข้อความดำเนินการ ไม่บังคับ

ข้อความกระตุ้นการตัดสินใจของปุ่มในหน้า "เรียงลำดับใหม่" (ตัวอย่างเช่น สั่งซื้ออีกครั้ง)

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

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

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

จำนวนรายการ (ไม่ใช่แค่จำนวนผลิตภัณฑ์) ก่อนหน้านี้ คำสั่งซื้อ

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

จำนวนเต็ม >= 1
ชื่อ ต้องระบุ ชื่อของสินค้าที่สั่งซื้อใหม่

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

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

ป้ายกำกับรายการ

ไม่บังคับ

(ควรใส่ภาพโปสเตอร์ด้วยหากไม่ได้ระบุไว้)

รายการป้ายกำกับสินค้าสำหรับคำสั่งซื้อก่อนหน้า

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

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

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

ภาพโปสเตอร์

ไม่บังคับ

(ควรระบุป้ายกำกับสินค้าหากไม่ระบุ)

รูปภาพสินค้าในลำดับก่อนหน้า

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

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

ข้อกำหนดเกี่ยวกับรูปภาพ

ข้อกำหนดที่จำเป็นสำหรับชิ้นงานรูปภาพมีดังต่อไปนี้

สัดส่วนภาพ พิกเซลขั้นต่ำ พิกเซลแนะนํา

สี่เหลี่ยมจัตุรัส (1x1)

แนะนำ

300x300 1200x1200
แนวนอน (1.91x1) 600x314 1200x628
แนวตั้ง (4x5) 480x600 960x1200

รูปแบบไฟล์

PNG, JPG, GIF แบบภาพนิ่ง, WebP

ขนาดไฟล์สูงสุด

5,120 KB

คำแนะนำเพิ่มเติม

  • พื้นที่ปลอดภัยของรูปภาพ: ใส่เนื้อหาสําคัญไว้ตรงกลาง 80% ของ รูปภาพ
  • ใช้พื้นหลังโปร่งใสเพื่อให้แสดงภาพได้อย่างถูกต้องใน การตั้งค่าธีมมืดและสว่าง

ขั้นตอนที่ 2: ระบุข้อมูลคลัสเตอร์

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

AppEngageFoodClient รับผิดชอบในการเผยแพร่คลัสเตอร์อาหาร

การเผยแพร่คลัสเตอร์ในไคลเอ็นต์มี API ต่อไปนี้

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishFoodShoppingCart
  • publishFoodShoppingList
  • publishReorderCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteFoodShoppingCartCluster
  • deleteFoodShoppingListCluster
  • deleteReorderCluster
  • 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 อาจมีแอตทริบิวต์ต่อไปนี้

แอตทริบิวต์ ข้อกำหนด คำอธิบาย
รายการ ProductEntity, StoreEntity หรือ RecipeEntity ต้องระบุ ลิสต์ของเอนทิตีที่ประกอบขึ้นเป็นคำแนะนำในเรื่องนี้ คลัสเตอร์คำแนะนำ เอนทิตีในคลัสเตอร์เดียวต้องเหมือนกัน ประเภท
ชื่อ ต้องระบุ

ชื่อของคลัสเตอร์คำแนะนำ (เช่น Big สำหรับเมนูวันขอบคุณพระเจ้า)

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

ชื่อรอง ไม่บังคับ คำบรรยายของคลัสเตอร์คำแนะนำ
การดำเนินการ Uri ไม่บังคับ

Deep Link ไปยังหน้าในแอปพาร์ทเนอร์ซึ่งผู้ใช้สามารถดู รายการคำแนะนำทั้งหมด

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

Kotlin


client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Big savings on Thanksgiving menu")
                        .build())
                .build())

Java


client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Big savings on Thanksgiving menu")
                        .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 ที่มีอยู่จากพาร์ทเนอร์นักพัฒนาแอปออก
  • ระบบจะแยกวิเคราะห์และจัดเก็บข้อมูลจากคำขอไว้ในคลัสเตอร์เด่นที่มีการอัปเดต

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

publishFoodShoppingCart

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

Kotlin


client.publishFoodShoppingCart(
            PublishFoodShoppingCartClusterRequest.Builder()
                .setShoppingCart(
                    FoodShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java


client.publishFoodShoppingCart(
            new PublishFoodShoppingCartClusterRequest.Builder()
                .setShoppingCart(
                    new FoodShoppingCart.Builder()
                        ...
                        .build())
                .build());

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

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

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

publishFoodShoppingList

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

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

publishReorderCluster

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

Kotlin


client.publishReorderCluster(
            PublishReorderClusterRequest.Builder()
                .setReorderCluster(
                    FoodReorderCluster.Builder()
                        ...
                        .build())
                .build())

Java


client.publishReorderCluster(
            new PublishReorderClusterRequest.Builder()
                .setReorderCluster(
                    new FoodReorderCluster.Builder()
                        ...
                        .build())
                .build());

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

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

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

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();

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

deleteFoodShoppingCartCluster

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

Kotlin


client.deleteFoodShoppingCartCluster()

Java


client.deleteFoodShoppingCartCluster();

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

deleteFoodShoppingListCluster

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

Kotlin


client.deleteFoodShoppingListCluster()

Java


client.deleteFoodShoppingListCluster();

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

deleteReorderCluster

API นี้ใช้เพื่อลบเนื้อหาของ FoodExploreCluster

Kotlin


client.deleteReorderCluster()

Java


client.deleteReorderCluster();

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

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 การเผยแพร่ เช่น การดำเนินการติดตามผลสามารถทำได้เพื่อกู้คืนและส่งงานที่สำเร็จอีกครั้ง

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() การดำเนินการนี้จะทำให้แอปพลิเคชันสามารถสื่อสารกันได้ ที่ยังหลงเหลืออยู่ในความทรงจำ
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_FOOD_SHOPPING_CART
// broadcast is received

// Trigger shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST
// broadcast is received

// Trigger reorder cluster publish when PUBLISH_REORDER_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.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART));

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST));

// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_REORDER_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.food.PUBLISH_FOOD_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER" />
      </intent-filter>
   </receiver>
</application>

ความตั้งใจต่อไปนี้จะส่งโดย บริการ:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION ขอแนะนำให้เริ่มการโทร publishRecommendationClusters เมื่อ ที่จะได้รับเจตนานี้
  • com.google.android.engage.action.PUBLISH_FEATURED ขอแนะนำให้เริ่มการโทร publishFeaturedCluster เมื่อรับสายนี้ Intent
  • com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_CART ขอแนะนำให้เริ่มการโทร publishFoodShoppingCart เมื่อรับสาย ความตั้งใจนี้
  • com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST ขอแนะนำให้เริ่มการโทร publishFoodShoppingList เมื่อรับสาย ความตั้งใจนี้
  • com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER ขอแนะนำให้เริ่มการโทร publishReorderCluster เมื่อรับสายนี้ Intent

เวิร์กโฟลว์การผสานรวม

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

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

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

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

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

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

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

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