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

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

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

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

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

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

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

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

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

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

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

ข้อความไฮไลต์แบบละเอียด ไม่บังคับ ข้อความไฮไลต์

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

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

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

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

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

หมวดหมู่ ไม่บังคับ

หมวดหมู่ของร้านค้า ในบริบทของสถานที่รับประทานอาหาร อาจเป็นอาหาร เช่น "ฝรั่งเศส" "อเมริกันสมัยใหม่" "ราเมน" "อาหารรสเลิศ"

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

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

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

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

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

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

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

ต้องระบุหากระบุค่าสูงสุดของการจัดประเภทด้วย

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

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

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

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

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

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

ยาว

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

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

รูปภาพสัดส่วนภาพ 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 นี้ใช้เพื่อลบเนื้อหาของ 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());

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

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

เราขอแนะนําอย่างยิ่งให้ฟังผลลัพธ์ของงานจาก 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 เพื่อรับคําขอเผยแพร่เนื้อหาด้วย

เป้าหมายของ Intent แบบออกอากาศมีไว้สำหรับการเปิดใช้งานแอปอีกครั้งและการบังคับให้ซิงค์ข้อมูลเป็นหลัก 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>

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

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION เราขอแนะนำให้เริ่มการเรียก publishRecommendationClusters เมื่อได้รับ Intent นี้
  • com.google.android.engage.action.PUBLISH_FEATURED เราขอแนะนำให้เริ่มการเรียก publishFeaturedCluster เมื่อได้รับ Intent นี้
  • 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 เมื่อได้รับ Intent นี้

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

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

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

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

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

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

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

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

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