מעורבות ב-SDK לשופינג: הוראות לשילוב טכני של צד שלישי

כדי להגביר את רמת העניין באפליקציה, כדאי להגיע למשתמשים במקומות שבהם הם נמצאים. אפשר לשלב את Engage SDK כדי להציג המלצות מותאמות אישית ותוכן המשך ישירות למשתמשים בכמה פלטפורמות במכשיר, כמו אוספים, חבילת הבידור וחנות Play. השילוב מוסיף פחות מ-50KB (דחוס) לחבילת ה-APK הממוצעת, וברוב האפליקציות הוא דורש כשבוע של זמן פיתוח. מידע נוסף מופיע באתר העסקי שלנו.

המדריך הזה כולל הוראות לשותפים מפתחים להצגת תוכן שופינג בשכבות תוכן של Engage.

פרטי השילוב

טרמינולוגיה

השילוב הזה כולל את חמשת סוגי האשכולות הבאים: המלצה, מוצרים נבחרים, עגלת קניות, רשימת קניות, ביצוע הזמנה מחדש ומעקב אחרי הזמנה.

  • באשכולות ההמלצות מוצגות הצעות קניות בהתאמה אישית משותף פיתוח ספציפי. ההמלצות האלה יכולות להיות מותאמות אישית למשתמש או כלליות (לדוגמה, פריטים פופולריים). אתם יכולים להשתמש בהם כדי להציג מוצרים, אירועים, מבצעים, קידומי מכירות ומינויים לפי הצורך.

    ההמלצות שלכם בנויות באופן הבא:

    • אוסף המלצות: תצוגה בממשק המשתמש שמכילה קבוצה של המלצות מאותו שותף מפתח.

    • ShoppingEntity: אובייקט שמייצג פריט בודד באשכול.

  • באשכול מומלצים מוצגת קבוצה של ישויות מכמה שותפי פיתוח בממשק משתמש אחד. יהיה אשכול אחד של המלצות נבחרות, שיוצג בחלק העליון של ממשק המשתמש עם מיקום עדיפות מעל כל אשכולות ההמלצות. כל שותף מפתח יוכל לשדר עד 10 ישויות באשכול 'מומלצים'.

  • באשכול עגלת קניות מוצגות עגלות קניות של הרבה שותפי פיתוח, כדי לעודד את המשתמשים להשלים את הקניות בעגלות הפתוחות שלהם. יש אשכול אחד של עגלות קניות, שמוצג בחלק העליון של ממשק המשתמש, עם מיקום מועדף מעל כל אשכולות ההמלצות. כל שותף מפתח יכול לשדר עד 3 מקרים באשכול עגלת הקניות.ShoppingCart

    עגלת הקניות שלכם בנויה כך:

    • אשכול עגלות קניות: תצוגת ממשק משתמש שמכילה קבוצה של תצוגות מקדימות של עגלות קניות ממספר שותפי פיתוח.

    • ShoppingCart: אובייקט שמייצג את התצוגה המקדימה של עגלת הקניות של שותף מפתח יחיד, שמוצגת באוסף של עגלת הקניות. התג ShoppingCart צריך להציג את המספר הכולל של הפריטים בעגלת הקניות, ויכול לכלול גם תמונות של חלק מהפריטים בעגלת הקניות של המשתמש.

  • באשכול רשימת קניות מוצגות רשימות קניות מכמה שותפי פיתוח בקבוצה אחת בממשק המשתמש, כדי לעודד את המשתמשים לחזור לאפליקציה המתאימה ולעדכן את הרשימות שלהם. יש אשכול אחד של רשימת קניות.

  • באוסף Reorder מוצגת תצוגה מקדימה של הזמנות קודמות מכמה שותפי פיתוח בקבוצה אחת בממשק המשתמש, כדי לעודד את המשתמשים לבצע הזמנה חוזרת. יש אשכול אחד של הזמנה מחדש.

    • האשכול 'הזמנה חוזרת' צריך להציג את המספר הכולל של הפריטים בהזמנה הקודמת של המשתמש, וגם לכלול אחד מהפריטים הבאים:

      • תמונות של X פריטים בהזמנה הקודמת של המשתמש.
      • תוויות של X פריטים בהזמנה הקודמת של המשתמש.
  • באשכול מעקב אחרי הזמנות בשופינג מוצגות הזמנות שופינג בהמתנה או שהושלמו לאחרונה, ממגוון שותפי פיתוח, בקבוצה אחת בממשק המשתמש. כך המשתמשים יכולים לעקוב אחרי ההזמנות שלהם.

    יש אשכול אחד של ShoppingOrderTracking שמוצג בחלק העליון של ממשק המשתמש, עם מיקום עדיפות מעל כל אשכולי ההמלצות. כל שותף פיתוח יכול לשדר כמה פריטים מסוג ShoppingOrderTrackingEntity באשכול Shopping Order Tracking.

    • התג ShoppingOrderTrackingCluster בנוי באופן הבא:

      • ShoppingOrderTracking Cluster: תצוגת ממשק משתמש שמכילה קבוצה של תצוגות מקדימות של מעקב אחר הזמנות ממספר שותפי פיתוח
      • ShoppingOrderTrackingEntity: אובייקט שמייצג תצוגה מקדימה של מעקב אחרי הזמנה בשופינג עבור שותף מפתח יחיד, שיוצג באשכול Shopping Order Tracking. ב-ShoppingOrderTrackingEntity צריך להופיע סטטוס ההזמנה ושעת ההזמנה. מומלץ מאוד למלא את השדה expectedDeliveryTime (זמן אספקה משוער) ב-ShoppingOrderTrackingEntity, כי הוא מוצג למשתמשים אם הוא מסופק.

עבודה מקדימה

רמת ה-API המינימלית: 19

להוסיף את ספריית com.google.android.engage:engage-core לאפליקציה:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.5.2'
}

מידע נוסף זמין במאמר בנושא חשיפת חבילות ב-Android 11.

סיכום

העיצוב מבוסס על הטמעה של שירות קשור.

הנתונים שלקוח יכול לפרסם כפופים למגבלות הבאות עבור סוגים שונים של אשכולות:

סוג האשכול מגבלות על אשכולות מגבלות מקסימליות על ישויות באשכול
אשכולות של המלצות עד 7 עד 50 ShoppingEntity
אשכול מוצג עד 1 ‫20 ShoppingEntity לכל היותר
קלאסטר של עגלות קניות עד 1 עד 3 ShoppingCart

מצפים לכמה עגלות קניות רק באפליקציות שבהן יש עגלות קניות נפרדות לכל מוכר.

אשכול רשימת קניות עד 1 ShoppingListEntity אחד לכל היותר
קבוצת מוצרים להזמנה חוזרת עד 1 ReorderEntity אחד לכל היותר
אשכול מעקב אחרי הזמנות ב-Shopping עד 3 עד 3 ShoppingOrderTrackingEntity

שלב 1: הזנת נתוני הישות

ב-SDK מוגדרות ישויות שונות שמייצגות כל סוג פריט. הישויות הבאות נתמכות בקטגוריה 'שופינג':

  1. ShoppingEntity
  2. ShoppingCart
  3. ShoppingList
  4. Reorder
  5. ShoppingOrderTracking

בתרשימים הבאים מפורטים המאפיינים הזמינים והדרישות לכל סוג.

ShoppingEntity

אובייקט ShoppingEntity מייצג מוצר, מבצע, דיל, מינוי או אירוע ששותפי פיתוח רוצים לפרסם.

ShoppingEntity
מאפיין דרישה תיאור פורמט
תמונות פוסטר חובה צריך לספק לפחות תמונה אחת. הנחיות זמינות במאמר בנושא מפרט לתמונות.
‫URI של הפעולה חובה

קישור העומק לדף באפליקציה שבו מוצגים פרטים על הישות.

הערה: אפשר להשתמש בקישורי עומק לשיוך (Attribution). אפשר לעיין בשאלות הנפוצות

URI
כותרת אופציונלי שם הישות.

טקסט חופשי

גודל הטקסט המומלץ: פחות מ-90 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

מחיר – נוכחי חובה להזין ערך באופן מותנה

המחיר הנוכחי של הישות.

חובה לציין את המאפיין הזה אם מציינים מחיר קודם מחוק.

טקסט חופשי
מחיר קודם מחוק אופציונלי המחיר המקורי של הישות, שיוצג עם קו חוצה בממשק המשתמש. טקסט חופשי
הסבר אופציונלי יתרון מרכזי להצגת מבצע, אירוע או עדכון של הישות, אם יש כאלה.

טקסט חופשי

גודל הטקסט המומלץ: פחות מ-45 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

האותיות הקטנות של היתרונות המרכזיים אופציונלי הטקסט של האותיות הקטנות של היתרון המרכזי.

טקסט חופשי

גודל הטקסט המומלץ: פחות מ-45 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

סיווג (אופציונלי) – הערה: כל הסיווגים מוצגים באמצעות מערכת הסיווג הסטנדרטית שלנו בכוכבים.
דירוג – ערך מקסימלי אופציונלי

הערך המקסימלי בסולם הדירוג.

חובה לציין את המאפיין הזה אם מציינים גם את הערך הנוכחי של הסיווג.

מספר ‎ >= 0.0
דירוג – ערך נוכחי אופציונלי

הערך הנוכחי של סולם הדירוג.

חובה לציין את המאפיין הזה אם מציינים גם את הערך המקסימלי של הסיווג.

מספר ‎ >= 0.0
דירוג – ספירה אופציונלי

מספר הדירוגים של הישות.

הערה: צריך לספק את השדה הזה אם האפליקציה שולטת באופן שבו המספר מוצג למשתמשים. משתמשים במחרוזת תמציתית. לדוגמה, אם המספר הוא 1,000,000, כדאי להשתמש בקיצור כמו 1M כדי שהמספר לא ייחתך בגדלי מסך קטנים יותר.

מחרוזת
דירוג – ערך הספירה אופציונלי

מספר הדירוגים של הישות.

הערה: צריך לספק את השדה הזה אם אתם לא מטפלים בעצמכם בלוגיקה של קיצור התצוגה. אם קיימים גם המאפיין Count וגם המאפיין Count Value ‎, המאפיין Count מוצג למשתמשים.

ארוך
DisplayTimeWindow (אופציונלי) – הגדרת חלון זמן להצגת התוכן בפלטפורמה
חותמת זמן של התחלה אופציונלי

חותמת הזמן של התקופה שאחריה התוכן יוצג בממשק.

אם לא מוגדרת מדיניות, התוכן עומד בדרישות להצגה בפלטפורמה.

חותמת זמן של מערכת Unix באלפיות השנייה
חותמת זמן של סיום אופציונלי

חותמת הזמן של התקופה שאחריה התוכן לא יוצג יותר בממשק.

אם לא מוגדרת מדיניות, התוכן עומד בדרישות להצגה בפלטפורמה.

חותמת זמן של מערכת Unix באלפיות השנייה

ShoppingCart

מאפיין דרישה תיאור פורמט
‫URI של פעולה חובה

קישור העומק לעגלת הקניות באפליקציה של השותף.

הערה: אפשר להשתמש בקישורי עומק לשיוך (Attribution). אפשר לעיין בשאלות הנפוצות

URI
מספר הפריטים חובה

מספר הפריטים (לא רק מספר המוצרים) בעגלת הקניות.

לדוגמה: אם יש בעגלה 3 חולצות זהות וכובע אחד, המספר הזה צריך להיות 4.

מספר שלם ‎ >= 1
טקסט הפעולה אופציונלי

הטקסט של הקריאה לפעולה בלחצן של עגלת הקניות (לדוגמה, עגלת הקניות שלך).

אם המפתח לא מספק טקסט לפעולה, ברירת המחדל היא הצגת העגלה.

המאפיין הזה נתמך מגרסה 1.1.0 ואילך.

מחרוזת
כותרת אופציונלי

השם של עגלת הקניות (לדוגמה, Your Shopping Bag).

אם המפתח לא מספק כותרת, ברירת המחדל היא העגלה שלך.

אם שותף מפתח מפרסם עגלת קניות נפרדת לכל מוֹכר, צריך לכלול את שם המוֹכר בשם המבצע.

טקסט חופשי

גודל הטקסט המומלץ: פחות מ-25 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

תמונות של עגלות קניות אופציונלי

תמונות של כל מוצר בעגלת הקניות.

אפשר לספק עד 10 תמונות לפי סדר העדיפות. מספר התמונות שיוצגו בפועל תלוי בגורם הצורה של המכשיר.

הנחיות זמינות במאמר בנושא מפרט לתמונות.
תוויות פריטים אופציונלי

רשימת התוויות של הפריטים ברשימת הקניות.

מספר התוויות שמוצג בפועל תלוי בגורם הצורה של המכשיר.

רשימה של תוויות טקסט חופשי

גודל הטקסט המומלץ: פחות מ-20 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

חותמת הזמן של האינטראקציה האחרונה של המשתמש אופציונלי מספר אלפיות השנייה שחלפו מאז תקופת ה-Epoch, שמזהה את הפעם האחרונה שבה הייתה למשתמש אינטראקציה עם העגלה.

הפרמטר הזה יועבר כקלט על ידי שותפי הפיתוח שמפרסמים עגלת קניות נפרדת לכל מוכר, ויכול להיות שהוא ישמש לדירוג.

חותמת זמן של מערכת Unix באלפיות השנייה
DisplayTimeWindow (אופציונלי) – הגדרת חלון זמן להצגת תוכן בפלטפורמה
חותמת זמן של התחלה אופציונלי

חותמת הזמן של התקופה שאחריה התוכן יוצג בממשק.

אם לא מוגדרת מדיניות, התוכן עומד בדרישות להצגה בפלטפורמה.

חותמת זמן של מערכת Unix באלפיות השנייה
חותמת זמן של סיום אופציונלי

חותמת הזמן של התקופה שאחריה התוכן לא יוצג יותר בממשק.

אם לא מוגדרת מדיניות, התוכן עומד בדרישות להצגה בפלטפורמה.

חותמת זמן של מערכת Unix באלפיות השנייה

ShoppingList

מאפיין דרישה תיאור פורמט
‫URI של פעולה חובה

קישור העומק לרשימת הקניות באפליקציה של השותף.

הערה: אפשר להשתמש בקישורי עומק לשיוך (Attribution). אפשר לעיין בשאלות הנפוצות

URI
מספר הפריטים חובה מספר הפריטים ברשימת הקניות. מספר שלם ‎ >= 1
כותרת אופציונלי

השם של הרשימה (לדוגמה, רשימת המצרכים שלך).

אם המפתח לא מספק שם, רשימת קניות הוא השם שמוגדר כברירת מחדל.

טקסט חופשי

גודל הטקסט המומלץ: פחות מ-25 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

תוויות פריטים חובה

רשימת התוויות של הפריטים ברשימת הקניות.

צריך לספק לפחות תווית אחת, ואפשר לספק עד 10 תוויות לפי סדר העדיפות. מספר התוויות שיוצגו בפועל תלוי בגורם הצורה של המכשיר.

רשימה של תוויות טקסט חופשי

גודל הטקסט המומלץ: פחות מ-20 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

ShoppingReorderCluster

מאפיין דרישה תיאור פורמט
‫URI של פעולה חובה

קישור העומק לביצוע הזמנה מחדש באפליקציה של השותף.

הערה: אפשר להשתמש בקישורי עומק לשיוך (Attribution). אפשר לעיין בשאלות הנפוצות

URI
טקסט הפעולה אופציונלי

הטקסט של הקריאה לפעולה שמופיע בלחצן 'ביצוע הזמנה חוזרת' (לדוגמה, ביצוע הזמנה חוזרת).

אם המפתח לא מספק טקסט של פעולה, סידור מחדש הוא ברירת המחדל.

המאפיין הזה נתמך מגרסה 1.1.0 ואילך.

מחרוזת
מספר הפריטים חובה

מספר הפריטים (לא רק מספר המוצרים) בהזמנה הקודמת.

לדוגמה: אם בהזמנה הקודמת היו 3 קפה קטן וקרואסון אחד, המספר הזה צריך להיות 4.

מספר שלם ‎ >= 1
כותרת חובה הכותרת של הפריט להזמנה מחדש.

טקסט חופשי

גודל הטקסט המומלץ: פחות מ-40 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

תוויות פריטים

אופציונלי

(אם לא סופקו תמונות שער, צריך לספק אותן)

רשימת תוויות הפריטים של ההזמנה הקודמת.

אפשר לספק עד 10 תוויות לפי סדר העדיפות. מספר התוויות שיוצגו בפועל תלוי בגורם הצורה של המכשיר.

רשימה של טקסט חופשי

גודל הטקסט המומלץ לכל תווית: פחות מ-20 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

תמונות פוסטר

אופציונלי

(אם לא צוין, צריך לציין תוויות פריט)

תמונות של הפריטים בהזמנה הקודמת.

אפשר לספק עד 10 תמונות לפי סדר העדיפות. מספר התמונות שיוצגו בפועל תלוי בגורם הצורה של המכשיר.

הנחיות זמינות במאמר בנושא מפרט לתמונות.

ShoppingOrderTrackingCluster

מאפיין דרישה תיאור פורמט
כותרת חובה

כותרת קצרה של החבילה או הפריטים שנמצאים במעקב, או מספר המעקב.

טקסט חופשי

גודל הטקסט המומלץ: 50 תווים (אם הטקסט ארוך מדי, יוצגו שלוש נקודות)

סוג הזמנה חובה

כותרת קצרה של החבילה או הפריטים שנמצאים במעקב, או מספר המעקב.

ערכים לדוגמה: IN_STORE_PICKUP, SAME_DAY_DELIVERY, MULTI_DAY_DELIVERY

סטטוס חובה

הסטטוס הנוכחי של ההזמנה.

לדוגמה: "מאחר", "במהלך המשלוח", "המשלוח מתעכב", "נשלח", "נמסר", "אין במלאי", "ההזמנה מוכנה"

טקסט חופשי

גודל הטקסט המומלץ: 25 תווים (אם הטקסט ארוך מדי, יוצגו שלוש נקודות)

שעת ההזמנה חובה

חותמת הזמן של התקופה באלפיות השנייה שבה בוצעה ההזמנה.

שעת ההזמנה תוצג אם חלון הזמן של תאריך המסירה הצפוי לא מופיע

חותמת זמן של מערכת Unix באלפיות השנייה
‫URI של פעולה חובה

קישור עומק למעקב אחר הזמנות באפליקציה של השותף.

URI
OrderDeliveryTimeWindow (אופציונלי) – הגדרת חלון זמן להזמנה שמתבצע אחריה מעקב, מהרגע שבו ההזמנה בוצעה ועד למועד המסירה הצפוי או בפועל.
OrderDeliveryTimeWindow - Start Time אופציונלי

חותמת הזמן של מערכת Unix באלפיות השנייה שבה ההזמנה תסופק או תהיה מוכנה לאיסוף.

חותמת זמן של מערכת Unix באלפיות השנייה
OrderDeliveryTimeWindow - End Time אופציונלי

חותמת הזמן של מערכת Unix באלפיות השנייה שבה או לפני כן ההזמנה תסופק או תהיה מוכנה לאיסוף.

חותמת זמן של מערכת Unix באלפיות השנייה
תמונות פוסטר אופציונלי

תמונה של פריט או מוצר אחד שכלולים בהזמנה.

יחס הגובה-רוחב המומלץ הוא 1:1

הנחיות זמינות במאמר בנושא מפרט לתמונות.
מספר הפריטים אופציונלי מספר הפריטים בהזמנה. מספר שלם ‎ >= 1
תיאור אופציונלי

פסקה אחת של טקסט שמתארת את הפריטים בהזמנה.

הערה: למשתמש תוצג רשימת התיאורים או רשימת הכתוביות, אבל לא שתיהן.

טקסט חופשי

גודל מומלץ של טקסט: 180 תווים

רשימת כתוביות אופציונלי

עד 3 כתוביות, כאשר כל כתובית היא שורה אחת של טקסט.

הערה: למשתמש תוצג רשימת התיאורים או רשימת הכתוביות, אבל לא שתיהן.

טקסט חופשי

גודל הטקסט המומלץ לכל כותרת משנה: עד 50 תווים

ערך ההזמנה – CurrentPrice אופציונלי הערך הנוכחי של ההזמנה. טקסט חופשי
מספר ההזמנה אופציונלי מספר ההזמנה או המזהה שאפשר להשתמש בהם כדי לזהות את ההזמנה באופן ייחודי.

טקסט חופשי

גודל טקסט מומלץ: עד 25 תווים

מספר מעקב אופציונלי מספר המעקב של המשלוח של ההזמנה או החבילה, במקרה שההזמנה דורשת משלוח.

טקסט חופשי

גודל טקסט מומלץ: עד 25 תווים

מפרט לתמונות

בהמשך מפורטות הדרישות לגבי נכסי תמונות:

יחס גובה-רוחב מספר פיקסלים מינימלי מספר פיקסלים מומלץ

ריבוע (1x1)

מועדף לאשכולות שלא מופיעים

300x300 1,200x1,200

תמונה לרוחב (1.91x1)

מועדף עבור קבוצות של תוצאות חיפוש בולטות

600x314 1,200x628
לאורך (4x5) ‫480x600 960x1200

פורמטים של קבצים

‫PNG, ‏ JPG, ‏ GIF סטטי, WebP

גודל קובץ מקסימלי

‎5120 KB

המלצות נוספות

  • האזור הבטוח לתמונות: התוכן החשוב צריך להופיע ב-80% המרכזיים של התמונה.
  • כדאי להשתמש ברקע שקוף כדי שהתמונה תוצג בצורה תקינה בהגדרות של עיצוב כהה ובהיר.

שלב 2: ציון נתונים של אוסף

מומלץ להריץ את משימת פרסום התוכן ברקע (לדוגמה, באמצעות WorkManager) ולתזמן אותה על בסיס קבוע או על בסיס אירוע (לדוגמה, בכל פעם שהמשתמש פותח את האפליקציה או כשהמשתמש מוסיף פריט לעגלת הקניות).

AppEngageShoppingClient אחראי לפרסום של אוספי שופינג.

ממשקי ה-API הבאים נחשפים לפרסום אשכולות בלקוח:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishShoppingCart
  • publishShoppingCarts
  • publishShoppingList
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteShoppingReorderCluster
  • deleteShoppingOrderTrackingCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

ה-API הזה משמש כדי לבדוק אם השירות זמין לשילוב ואם אפשר להציג את התוכן במכשיר.

Kotlin

client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java

client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content
          // publish calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

ה-API הזה משמש לפרסום רשימה של אובייקטים מסוג RecommendationCluster.

אובייקט RecommendationCluster יכול לכלול את המאפיינים הבאים:

מאפיין דרישה תיאור
רשימה של ShoppingEntity חובה רשימה של אובייקטים מסוג ShoppingEntity שמרכיבים את ההמלצות עבור Recommendation Cluster הזה.
כותרת חובה

השם של קבוצת ההמלצות.

גודל הטקסט המומלץ: פחות מ-25 תווים (אם הטקסט ארוך מדי, יכול להיות שיוצגו שלוש נקודות)

כותרת משנה אופציונלי כותרת המשנה של קבוצת ההמלצות.
‫URI של הפעולה אופציונלי

קישור עומק לדף באפליקציית השותף שבו המשתמשים יכולים לראות את הרשימה המלאה של ההמלצות.

הערה: אפשר להשתמש בקישורי עומק לשיוך (Attribution). אפשר לעיין בשאלות הנפוצות

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build());

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • כל הנתונים הקיימים של קבוצות המלצות יוסרו.
  • הנתונים מהבקשה מנותחים ונשמרים באשכולות חדשים של המלצות.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishFeaturedCluster

משתמשים ב-API הזה כדי לפרסם אובייקט FeaturedCluster.

Kotlin

client.publishFeaturedCluster(
            PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    FeaturedCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFeaturedCluster(
            new PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    new FeaturedCluster.Builder()
                        ...
                        .build())
                .build());

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • הנתונים הקיימים של FeaturedCluster משותף המפתחים יוסרו.
  • הנתונים מהבקשה מנותחים ונשמרים באוסף המאמרים המומלצים המעודכן.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishShoppingCart

משתמשים ב-API הזה כדי לפרסם אובייקט ShoppingCartCluster.

Kotlin

client.publishShoppingCart(
            PublishShoppingCartRequest.Builder()
                .setShoppingCart(
                    ShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingCart(
            new PublishShoppingCartRequest.Builder()
                .setShoppingCart(
                    new ShoppingCart.Builder()
                        ...
                        .build())
                .build())

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • הנתונים הקיימים של ShoppingCart משותף המפתחים יוסרו.
  • הנתונים מהבקשה מנותחים ומאוחסנים באשכול המעודכן של עגלות הקניות.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishShoppingCarts

ה-API הזה משמש לפרסום של כמה אובייקטים מסוג ShoppingCart. ההנחיות האלה רלוונטיות לשותפי פיתוח שמפרסמים עגלות קניות נפרדות לכל מוכר. כשמשתמשים ב-API הזה, צריך לכלול את שם המוכר בכותרת.

Kotlin

client.publishShoppingCarts(
            PublishShoppingCartClustersRequest.Builder()
                .addShoppingCart(
                    ShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingCarts(
            new PublishShoppingCartClustersRequest.Builder()
                .addShoppingCart(
                    new ShoppingCart.Builder()
                        ...
                        .build())
                .build())

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • הנתונים הקיימים של ShoppingCart משותף המפתחים יוסרו.
  • הנתונים מהבקשה מנותחים ומאוחסנים באשכול המעודכן של עגלות הקניות.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishShoppingList

משתמשים ב-API הזה כדי לפרסם אובייקט FoodShoppingList.

Kotlin

client.publishFoodShoppingList(
            PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFoodShoppingList(
            new PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    new FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build());

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • הנתונים הקיימים של FoodShoppingList משותף המפתחים יוסרו.
  • הנתונים מהבקשה מנותחים ומאוחסנים באשכול המעודכן של רשימת הקניות.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishShoppingReorderCluster

משתמשים ב-API הזה כדי לפרסם אובייקט ShoppingReorderCluster.

Kotlin

client.publishShoppingReorderCluster(
            PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingReorderCluster(
            new PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    new ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build());

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • הנתונים הקיימים של ShoppingReorderCluster משותף המפתחים יוסרו.
  • הנתונים מהבקשה מנותחים ומאוחסנים ב-Reorder Cluster המעודכן.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishShoppingOrderTrackingCluster

משתמשים ב-API הזה כדי לפרסם אובייקט ShoppingOrderTrackingCluster.

Kotlin

client.publishShoppingOrderTrackingCluster(
            PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingOrderTrackingCluster(
            new PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    new ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build());

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • נתוני ShoppingOrderTrackingCluster קיימים מהשותף המפתח יוסרו.
  • הנתונים מהבקשה מנותחים ומאוחסנים באשכול המעקב המעודכן של הזמנות ב-Shopping.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

publishUserAccountManagementRequest

ה-API הזה משמש לפרסום כרטיס כניסה . פעולת הכניסה מפנה את המשתמשים לדף הכניסה של האפליקציה כדי שהאפליקציה תוכל לפרסם תוכן (או לספק תוכן מותאם אישית יותר)

המטא-נתונים הבאים הם חלק מכרטיס הכניסה –

מאפיין דרישה תיאור
‫URI של הפעולה חובה קישור עומק לפעולה (כלומר, מעבר לדף הכניסה לאפליקציה)
תמונה אופציונלי – אם לא מספקים את הערך הזה, חובה לספק את הערך Title (שם).

התמונה שמוצגת בכרטיס

תמונות ביחס גובה-רוחב של 16x9 וברזולוציה של ‎1264x712

כותרת אופציונלי – אם לא מספקים את הערך הזה, חובה לספק את הערך של תמונה השם שמופיע בכרטיס
טקסט הפעולה אופציונלי הטקסט שמוצג ב-CTA (למשל: כניסה)
כותרת משנה אופציונלי כתובית אופציונלית בכרטיס

Kotlin

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות במסגרת עסקה אחת:

  • נתוני UserAccountManagementCluster קיימים מהשותף המפתח יוסרו.
  • הנתונים מהבקשה מנותחים ומאוחסנים באשכול UserAccountManagementCluster המעודכן.

במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

updatePublishStatus

אם מסיבה עסקית פנימית כלשהי אף אחת מהקבוצות לא פורסמה, מומלץ מאוד לעדכן את סטטוס הפרסום באמצעות API‏ updatePublishStatus. הדבר חשוב כי :

  • חשוב לספק את הסטטוס בכל התרחישים, גם כשהתוכן מתפרסם (STATUS == PUBLISHED), כדי לאכלס לוחות בקרה שמשתמשים בסטטוס המפורש הזה כדי להציג את תקינות השילוב ומדדים אחרים.
  • אם לא מתפרסם תוכן אבל סטטוס השילוב לא שבור (STATUS == NOT_PUBLISHED), ‏ Google יכולה להימנע מהפעלת התראות בלוחות הבקרה של תקינות האפליקציה. ההודעה מאשרת שהתוכן לא פורסם בגלל מצב צפוי מנקודת המבט של הספק.
  • היא עוזרת למפתחים לקבל תובנות לגבי המועד שבו הנתונים מתפרסמים לעומת המועד שבו הם לא מתפרסמים.
  • יכול להיות ש-Google תשתמש בקודי הסטטוס כדי לעודד את המשתמש לבצע פעולות מסוימות באפליקציה כדי שיוכל לראות את התוכן שלה או להתגבר על הבעיה.

רשימת קודי הסטטוס של פרסום שעומדים בדרישות :

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

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

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

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

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

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

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

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

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

אם התוכן לא פורסם כי המשתמש לא מחובר לחשבון, Google תמליץ לפרסם את כרטיס הכניסה. אם מסיבה כלשהי הספקים לא יכולים לפרסם את כרטיס הכניסה, מומלץ לקרוא ל-API‏ updatePublishStatus עם קוד הסטטוס NOT_PUBLISHED_REQUIRES_SIGN_IN.

Kotlin

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

Java

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

deleteRecommendationClusters

ממשק ה-API הזה משמש למחיקת התוכן של קבוצות המלצות.

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מהאשכולות של ההמלצות. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteFeaturedCluster

ממשק ה-API הזה משמש למחיקת התוכן של קבוצת מוצרים נבחרים.

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מהאשכול המומלץ. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteShoppingCartCluster

ממשק ה-API הזה משמש למחיקת התוכן של Shopping Cart Cluster.

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מהאשכול של עגלת הקניות. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteShoppingListCluster

ממשק ה-API הזה משמש למחיקת התוכן של אשכול רשימת הקניות.

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מ-Shopping List Cluster. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteShoppingReorderCluster

ה-API הזה משמש למחיקת התוכן של Shopping Reorder Cluster.

Kotlin

client.deleteShoppingReorderCluster()

Java

client.deleteShoppingReorderCluster();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מ-Shopping Reorder Cluster. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteShoppingOrderTrackingCluster

ממשק ה-API הזה משמש למחיקת התוכן של אשכול מעקב ההזמנות ב-Shopping.

Kotlin

client.deleteShoppingOrderTrackingCluster()

Java

client.deleteShoppingOrderTrackingCluster();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מ-Shopping Order Tracking Cluster. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteUserManagementCluster

ממשק ה-API הזה משמש למחיקת התוכן של UserAccountManagement Cluster.

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מהאשכול UserAccountManagement. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

deleteClusters

ממשק ה-API הזה משמש למחיקת התוכן של סוג מסוים של אשכול.

Kotlin

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      ...
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                ...
                .build());

כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מכל האשכולות שתואמים לסוגי האשכולות שצוינו. הלקוחות יכולים לבחור להעביר סוג אחד או כמה סוגים של אשכולות. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.

טיפול בשגיאות

מומלץ מאוד להאזין לתוצאת המשימה מממשקי ה-API של הפרסום, כדי שאפשר יהיה לבצע פעולת המשך לשחזור ולשליחה מחדש של משימה שהושלמה בהצלחה.

Kotlin

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

השגיאה מוחזרת כ-AppEngageException עם הסיבה שכלולה כקוד שגיאה.

קוד שגיאה שם השגיאה הערה
1 SERVICE_NOT_FOUND השירות לא זמין במכשיר הנתון.
2 SERVICE_NOT_AVAILABLE השירות זמין במכשיר הנתון, אבל הוא לא זמין בזמן השיחה (לדוגמה, הוא מושבת באופן מפורש).
3 SERVICE_CALL_EXECUTION_FAILURE הפעלת המשימה נכשלה בגלל בעיות בשרשור. במקרה כזה, אפשר לנסות שוב.
4 SERVICE_CALL_PERMISSION_DENIED למתקשר אין הרשאה לבצע את הקריאה לשירות.
5 SERVICE_CALL_INVALID_ARGUMENT הבקשה מכילה נתונים לא תקינים (לדוגמה, מספר האשכולות חורג מהמספר המותר).
6 SERVICE_CALL_INTERNAL יש שגיאה בצד השירות.
7 SERVICE_CALL_RESOURCE_EXHAUSTED הקריאה לשירות מתבצעת בתדירות גבוהה מדי.

שלב 3: טיפול ב-Intents של שידור

בנוסף לקריאות ל-API לפרסום תוכן דרך משימה, צריך גם להגדיר BroadcastReceiver כדי לקבל את הבקשה לפרסום תוכן.

המטרה העיקרית של כוונות שידור היא הפעלה מחדש של אפליקציות וכפייה של סנכרון נתונים. ה-Intents של שידור לא נועדו להישלח בתדירות גבוהה מאוד. ההתראה מופעלת רק כשהשירות של Engage קובע שהתוכן עשוי להיות לא עדכני (לדוגמה, אם הוא נוצר לפני שבוע). כך המשתמשים יכולים להיות בטוחים שהם יקבלו חוויית תוכן עדכנית, גם אם האפליקציה לא הופעלה במשך תקופה ארוכה.

צריך להגדיר את BroadcastReceiver באחת משתי הדרכים הבאות:

  • רישום דינמי של מופע של המחלקה BroadcastReceiver באמצעות Context.registerReceiver(). ההרשאה הזו מאפשרת תקשורת מאפליקציות שעדיין פעילות בזיכרון.

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION
  // broadcast is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is
  // received
  // Trigger shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast
  // is received
  // Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast
  // is received
  // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
  // received
  // Trigger shopping order tracking cluster publish when
  // PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER broadcast is received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

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

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

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

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

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

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

Java

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

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast is
// received

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

// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received

// Trigger reorder cluster publish when PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER
// broadcast is received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

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

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

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

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

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

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

}
  • מצהירים באופן סטטי על הטמעה באמצעות התג <receiver> בקובץ AndroidManifest.xml. ההרשאה הזו מאפשרת לאפליקציה לקבל שידורי Intent כשהיא לא פועלת, וגם מאפשרת לאפליקציה לפרסם את התוכן.

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER" />
      </intent-filter>
   </receiver>
</application>

הכוונה הבאה נשלחת על ידי השירות:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION מומלץ להתחיל שיחת publishRecommendationClusters כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.PUBLISH_FEATURED מומלץ להתחיל שיחת publishFeaturedCluster כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_CART מומלץ להתחיל שיחת publishShoppingCart כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST מומלץ להתחיל שיחת publishShoppingList כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER מומלץ להתחיל שיחת publishReorderCluster כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER מומלץ להתחיל שיחת publishShoppingOrderTrackingCluster כשמתקבלת הכוונה הזו.

תהליך עבודה של שילוב

מדריך מפורט לאימות השילוב אחרי שהוא הושלם זמין במאמר בנושא תהליך העבודה של שילוב Engage למפתחים.

שאלות נפוצות

שאלות נפוצות על Engage SDK

איש/אשת הקשר

אם יש שאלות במהלך תהליך השילוב, אפשר לפנות אל engage-developers@google.com. הצוות שלנו יחזור אליך בהקדם האפשרי.

השלבים הבאים

אחרי שמסיימים את השילוב, השלבים הבאים הם:

  • שולחים אימייל לכתובת engage-developers@google.com ומצרפים את קובץ ה-APK המשולב שמוכן לבדיקה על ידי Google.
  • ‫Google מבצעת אימות ובדיקה פנימית כדי לוודא שהשילוב פועל כמו שצריך. אם צריך לבצע שינויים, Google תיצור איתכם קשר ותספק את כל הפרטים הנדרשים.
  • בסיום הבדיקה, אם לא צריך לבצע שינויים, Google תיצור איתכם קשר כדי להודיע לכם שאתם יכולים להתחיל לפרסם את קובץ ה-APK המעודכן והמשולב ב-Play Store.
  • אחרי ש-Google תאשר שקובץ ה-APK המעודכן פורסם בחנות Play, יכול להיות שקבוצות המוצרים מומלצים, מוצרים נבחרים, עגלת קניות, רשימת קניות, הזמנה חוזרת ומעקב אחרי הזמנה יפורסמו ויוצגו למשתמשים.