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

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

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

תמיכה בקטגוריות ופלטפורמות

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

סטטוס קטגוריית תוכן או תרחיש לדוגמה פלטפורמות נתמכות
יש תמיכה
(אפשר להציג בכל הפלטפורמות)
  • קניית בגדים
  • זירת מסחר אונליין
  • קמעונאי
  • קניות אוכל ומשקאות / מכולת
  • הנחות ושוברים
  • חיות מחמד / ציוד לחיות מחמד
  • בית / נדל "ן
  • אוספים
  • הכרטיסייה "אפליקציות" בחנות Play
  • הכרטיסייה "אני" בחנות Play
  • דף האפליקציה בחנות Play
לא נתמך
  • אפליקציית Shopper
  • שופינג B2B
  • אפליקציה למוכרים או לבתי עסק
  • פרסים על סריקת קבלות
  • שירות טלקום
  • קונים עכשיו, משלמים אחר כך

פרטי השילוב

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

הסברים על המונחים

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

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

    ההמלצות מוצגות במבנה הבא:

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

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

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

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

    המבנה של עגלת הקניות הוא:

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

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

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

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

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

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

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

    • המבנה של ShoppingOrderTrackingCluster הוא:

      • אשכול ShoppingOrderTracking: תצוגה בממשק המשתמש שמכילה קבוצה של תצוגות מקדימות למעקב אחר הזמנות מהרבה שותפי פיתוח
      • ‫ShoppingOrderTrackingEntity: אובייקט שמייצג תצוגה מקדימה של מעקב אחרי הזמנות שופינג של שותף פיתוח אחד, שתוצג באשכול "מעקב אחרי הזמנות שופינג". הישות ShoppingOrderTrackingEntity צריכה להציג את סטטוס ההזמנה ואת זמן ההזמנה. מומלץ מאוד לאכלס את זמן האספקה הצפוי ב-ShoppingOrderTrackingEntity, כי הוא מוצג למשתמשים כשהוא מסופק.

הכנה

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

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

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

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

סיכום

העיצוב מבוסס על הטמעה של שרת מאגד (bound service).

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

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

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

אשכול של רשימת קניות לכל היותר 1 עד 3 ShoppingList
אשכול הזמנה חוזרת של שופינג לכל היותר 1 ‫ReorderEntity אחד לכל היותר
אשכול מעקב אחר הזמנות בשופינג עד 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 (אופציונלי) – הגדרת חלון זמן להצגת תוכן בפלטפורמה
חותמת הזמן של ההתחלה אופציונלי

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

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

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

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

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

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

ShoppingCart

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

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

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

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

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

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

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

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

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

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

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

השם של עגלת הקניות (לדוגמה, סל הקניות שלך).

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

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

טקסט חופשי

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 תווים (אם הטקסט ארוך מדי, יוצגו שלוש נקודות)

מועד ההזמנה חובה

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

אם לא מוגדר חלון זמן לאספקה, יוצג זמן ההזמנה

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

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

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

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

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

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

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

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

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

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

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

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

טקסט חופשי

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

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

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

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

טקסט חופשי

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

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

טקסט חופשי

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

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

טקסט חופשי

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

מפרט לתמונות

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

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

תמונה ריבועית (1x1)

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

300x300 1,200x1,200

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

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

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

פורמט קובץ

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

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

5,120KB

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

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

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

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

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

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishShoppingCarts
  • publishShoppingLists
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteReorderCluster
  • deleteShoppingOrderTrackingCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

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

אתם יכולים לבדוק את זמינות השירות לכל סוג אשכול שאתם מתכוונים לפרסם. ‫isServiceAvailable API מקבל אובייקט בקשה, ServiceAvailabilityRequest, שמכיל את סוגי האשכולות שצריך לבדוק את זמינות השירות שלהם. בטבלה הבאה מפורטים ערכי ה-enum של ClusterType שנדרשים ל-ServiceAvailabilityRequest.

סוג האשכול קבוע של סוג האשכול ערך של מספר שלם
לא ידוע TYPE_UNKNOWN 0
אשכול המלצות TYPE_RECOMMENDATION 1
אשכול מומלץ TYPE_FEATURED 2
אוסף ההמשכים TYPE_CONTINUATION 3
אשכול עגלת קניות TYPE_SHOPPING_CART 4
אשכול ניהול משתמשים TYPE_ENGAGEMENT 8
אשכול של רשימת קניות TYPE_SHOPPING_LIST 9
אשכול הזמנה חוזרת של שופינג TYPE_SHOPPING_REORDER 10
אשכול מעקב אחר הזמנות בשופינג TYPE_SHOPPING_ORDER_TRACKING 11
אשכול מינויים TYPE_SUBSCRIPTION 12

Kotlin

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

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

Java

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

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
תכונה: זמינות מותנית של שירותים

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

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

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

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

לגרסאות SDK שקדמו לגרסה 1.6.0 (הוצאה משימוש)

Kotlin

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

Java

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

publishRecommendationClusters

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

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

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

הכותרת של קבוצת ההמלצות.

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

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

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

הערה: אפשר להשתמש בקישורי עומק לצורך שיוך (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 קיימים של שותף הפיתוח יוסרו.
  • הנתונים מהבקשה מנותחים ונשמרים באשכול המעודכן של התכונות.

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

publishShoppingCarts

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

Kotlin

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

Java

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

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות בטרנזקציה אחת:

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

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

publishShoppingLists

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

Kotlin

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

Java

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

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות בטרנזקציה אחת:

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

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

publishShoppingReorderCluster

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

Kotlin

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

Java

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

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות בטרנזקציה אחת:

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

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

publishShoppingOrderTrackingCluster

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

Kotlin

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

Java

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

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות בטרנזקציה אחת:

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

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

publishUserAccountManagementRequest

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

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

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

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

תמונות ביחס גובה-רוחב של 16:9 וברזולוציה של 1,264x712

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

Kotlin

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

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

Java

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

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

כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות בטרנזקציה אחת:

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

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

updatePublishStatus

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

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

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

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

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

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

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

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

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

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

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

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

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

Kotlin

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

Java

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

deleteRecommendationsClusters

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

Kotlin

client.deleteRecommendationsClusters()

Java

client.deleteRecommendationsClusters();

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

deleteFeaturedCluster

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

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

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

deleteShoppingCartCluster

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

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

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

deleteShoppingListCluster

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

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

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

deleteReorderCluster

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

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

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

deleteShoppingOrderTrackingCluster

ה-API הזה משמש למחיקת התוכן של אשכול המעקב אחר הזמנות ב-Google שופינג.

Kotlin

client.deleteShoppingOrderTrackingCluster()

Java

client.deleteShoppingOrderTrackingCluster();

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

deleteUserManagementCluster

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

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

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

deleteClusters

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

Kotlin

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

Java

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

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

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

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

Kotlin

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

Java

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

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

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

שלב 3: טיפול בכוונות שידור

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

המטרה של כוונות שידור היא בעיקר להפעיל מחדש את האפליקציה ולאלץ סנכרון נתונים. כוונות שידור לא נועדו להישלח בתדירות גבוהה מאוד. הוא מופעל רק כששירות 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. ההרשאה הזו מאפשרת לאפליקציה לקבל כוונות שידור כשהיא לא פועלת, וגם לפרסם את התוכן.

<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 כשמתקבלת ה-Intent הזו.
  • com.google.android.engage.action.PUBLISH_FEATURED מומלץ להתחיל שיחת publishFeaturedCluster כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_CART מומלץ להתחיל שיחת publishShoppingCarts כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST מומלץ להתחיל שיחת publishShoppingLists כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER מומלץ להתחיל שיחת publishReorderCluster כשמתקבלת הכוונה הזו.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER מומלץ להתחיל שיחת publishShoppingOrderTrackingCluster כשמתקבלת ה-intent הזו.

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

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

שאלות נפוצות

שאלות נפוצות לגבי Engage SDK

יצירת קשר

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

השלבים הבאים

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

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