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

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

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

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

คำศัพท์

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

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

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

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

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

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

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

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

      • รูปภาพสำหรับสินค้า X ในคำสั่งซื้อก่อนหน้าของผู้ใช้
      • ป้ายกำกับสำหรับสินค้า X ในคำสั่งซื้อก่อนหน้าของผู้ใช้
    ภาพ: คลัสเตอร์ Food Order จากพาร์ทเนอร์รายเดียว (*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'
}

สรุป

การออกแบบนี้อิงตามการใช้งาน bound service

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

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

ขั้นตอนที่ 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 ให้ลองใช้ตัวย่อ เช่น 1 ล้าน เพื่อไม่ให้ระบบตัดจํานวนตัวเลขในขนาดการแสดงผลที่เล็กลง

สตริง
การจัดประเภท - ค่าจำนวน ไม่บังคับ

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

หมายเหตุ: โปรดระบุช่องนี้หากคุณไม่ได้จัดการตรรกะตัวย่อของการแสดงผลด้วยตนเอง หากมีทั้งจํานวน (Count) และค่าจํานวน (Count Value) ระบบจะแสดงจํานวนต่อผู้ใช้

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

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

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

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

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

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

การประทับเวลา Epoch เป็นมิลลิวินาที

StoreEntity

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

รูปภาพ : แอตทริบิวต์ของ StoreEntity

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

สตริง
การจัดประเภท - ค่าจำนวน ไม่บังคับ

จำนวนคะแนนของร้านค้า

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

ยาว

RecipeEntity

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

รูปภาพ : แอตทริบิวต์ของ RecipeEntity

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

สตริง
การจัดประเภท - ค่าจำนวน ไม่บังคับ

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

หมายเหตุ: ระบุช่องนี้หากไม่ต้องการจัดการตรรกะการแสดงตัวย่อด้วยตนเอง หากมีทั้ง Count และ Count Value เราจะใช้ Count เพื่อแสดงต่อผู้ใช้

ยาว

FoodShoppingCart

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FoodShoppingList

รูปภาพ: กลุ่มรายการช็อปปิ้งอาหาร

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

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

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

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

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

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

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

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

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

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

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

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

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

FoodReorderCluster

รูปภาพ: คลัสเตอร์การจัดเรียงอาหารใหม่

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

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

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

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

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

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

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

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

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

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

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

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

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

ป้ายกำกับสินค้า

ไม่บังคับ

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

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

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

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

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

ภาพโปสเตอร์

ไม่บังคับ

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

รูปภาพของสินค้าในคำสั่งซื้อก่อนหน้า

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

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

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

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

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

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

แนะนำ

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

รูปแบบไฟล์

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

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

5120 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 ต้องระบุ รายการเอนทิตีที่ประกอบกันเป็นคําแนะนําสําหรับกลุ่มคําแนะนํานี้ เอนทิตีในคลัสเตอร์เดียวต้องเป็นประเภทเดียวกัน
ชื่อ ต้องระบุ

ชื่อของคลัสเตอร์คําแนะนํา (เช่น ประหยัดได้เยอะในเมนูวันขอบคุณพระเจ้า)

ขนาดข้อความที่แนะนำ: ไม่เกิน 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 ไปยังการดำเนินการ (เช่น ไปที่หน้าลงชื่อเข้าใช้แอป)
รูปภาพ ไม่บังคับ - หากไม่ระบุ จะต้องระบุชื่อ

รูปภาพที่แสดงในการ์ด

รูปภาพสัดส่วนภาพ 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 == 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());

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 นี้ใช้เพื่อลบเนื้อหาของ FoodReorderCluster

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

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

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

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

การจัดการข้อผิดพลาด

ขอแนะนําอย่างยิ่งให้ฟังผลลัพธ์ของงานจาก 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 โดยระบุสาเหตุเป็นรหัสข้อผิดพลาด

รหัสข้อผิดพลาด ชื่อข้อผิดพลาด หมายเหตุ
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 เพื่อรับคําขอเผยแพร่เนื้อหาด้วย

เป้าหมายของ Broadcast Intents ส่วนใหญ่คือการเปิดใช้แอปอีกครั้งและการบังคับให้ซิงค์ข้อมูล Intent แบบออกอากาศไม่ได้ออกแบบมาเพื่อส่งบ่อยครั้ง ระบบจะทริกเกอร์เฉพาะเมื่อบริการ 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 ซึ่งจะช่วยให้แอปพลิเคชันได้รับ 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.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 เมื่อได้รับ Intent นี้
  • com.google.android.engage.action.PUBLISH_FEATURED ขอแนะนำให้เริ่มการโทร publishFeaturedCluster เมื่อได้รับความตั้งใจนี้
  • com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_CART เราขอแนะนำให้เริ่มการโทร publishFoodShoppingCart เมื่อได้รับ Intent นี้
  • com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST เราขอแนะนำให้เริ่มการโทร publishFoodShoppingList เมื่อได้รับ Intent นี้
  • com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER ขอแนะนำให้เริ่มการโทร publishReorderCluster เมื่อได้รับความตั้งใจนี้

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

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

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

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

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

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

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

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

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