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

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

פרטי השילוב

טרמינולוגיה

השילוב הזה כולל את שלושת סוגי האשכולות הבאים: המלצה, מוצגות והמשך.

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

    • אפשר ליצור אשכול המלצות מהסוגים ArticleEntity, PersonEntity, או EventEntity, אבל לא שילוב של סוגי ישויות שונים.

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

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

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

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

        איור 1: ממשק המשתמש שבו מוצגת ArticleEntity אחד באשכול ההמלצות.
      • EntityEntity: האדם מייצג אדם. ההמלצות יכולות להיות הבלטת מאמן או אדם כלשהו שקשור לנושא לבריאות ולכושר ועוד.

        איור 2: ממשק משתמש שמציג EntityEntity אחד בתוך אשכול ההמלצות.
      • EventEntity: EventEntity מייצג אירוע שמתרחש העתידי. שעת ההתחלה של האירוע היא מידע קריטי צריך להעביר את המשתמשים לישות הזו, הצגת אירועים כמו מחנה לתרומת דם, אימוני כושר, מכון כושר או שיעורי יוגה וכו' שקשורים לבריאות ולכושר.

        איור 3: ממשק משתמש שמציג ישות אחת מסוג EventEntity באשכול ההמלצות.
  • באשכול המשך מוצג תוכן שנוסף לאחרונה על ידי משתמשים מ- מספר שותפים של מפתחים בקיבוץ יחיד של ממשק המשתמש. כל שותף מפתחים יורשו לשדר עד 10 ישויות אשכול.

    תוכן ההמשך יכול להיות במבנה הבא:

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

      איור 6. ממשק משתמש שמציג ArticleEntity אחד בתוך אשכול המשך.
    • EventOrderEntity: Event reservationEntity מייצג הזמנה לאירוע, ועוזרת למשתמשים לעקוב אחרי אירועים קרובים או קיימים הזמנות לאירועי כושר ובריאות. לדוגמה: מפגשי אימון

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

    • GeneralFeaturedEntity: GeneralFeaturedEntity שונה מ- יש להשתמש בפריט המלצה אחד באותו פריט מוצג של מפתחים, והוא צריך לייצג את שיהיה מעניין ורלוונטי למשתמשים.

      איור 12: ממשק משתמש שמציג גיבור אחד כרטיס GeneralFeaturedEntity בתוך אשכול מומלץ

הכנה לעבודה

רמת 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'
}

סיכום

התכנון מבוסס על הטמעה של שירות משלוחים.

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

סוג האשכול מגבלות של אשכולות מגבלות מינימליות לישויות באשכול תקרות של ישויות באשכול
אשכולות של המלצות 5 לכל היותר 5 לפחות 25 לכל היותר (ArticleEntity, PersonEntity, או EventEntity)
אשכול המשך 1 לכל היותר אחד לפחות 10 לכל היותר (ArticleEntity, או EventReservationEntity)
אשכול נבחר 1 לכל היותר אחד לפחות 10 לכל היותר (GenericFeaturedEntity)

שלב 1: מסירת נתוני הישות

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

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. PersonEntity
  4. EventEntity
  5. EventReservationEntity

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

GenericFeaturedEntity

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

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

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

URI
תמונות של פוסטר חובה

נציג רק תמונה אחת אם יסופקו כמה תמונות. יחס הגובה-רוחב המומלץ הוא 16:9

הערה: אם סופק תג, יש לוודא שהמקום בטוח של 24 dps גם בחלק העליון וגם בחלק התחתון של התמונה

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

טקסט חופשי

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

תיאור אופציונלי

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

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

טקסט חופשי

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

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

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

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

טקסט חופשי

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

תגים אופציונלי

כל תג הוא טקסט חופשי (עד 15 תווים) או תמונה קטנה.

טיפול מיוחד בחוויית המשתמש מעל תמונה או סרטון, למשל כתג כשכבת-על בתמונה

  • "עדכון בזמן אמת"
  • משך קריאת המאמר
תג – טקסט אופציונלי

שם התג

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

טקסט חופשי

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

תג – תמונה אופציונלי

תמונה קטנה

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

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

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

רשימת טיפוסים בני מנייה (enum)

לעיון בקטע 'קטגוריית תוכן' לקבלת הנחיות.

ArticleEntity

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

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

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

URI
כותרת חובה השם של הישות.

טקסט חופשי

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

תמונות של פוסטר אופציונלי

נציג רק תמונה אחת אם יסופקו כמה תמונות. יחס הגובה-רוחב המומלץ הוא 16:9

הערה: מומלץ מאוד להוסיף תמונה. אם התג הוא יש לוודא שיש מרווח בטוח של 24dps בחלק העליון והתחתון של התמונה

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

טקסט חופשי

גודל טקסט מומלץ: פחות מ-25 תווים

מקור – תמונה אופציונלי תמונה של המקור, למשל: המחבר, הארגון והכתב הנחיות ליצירת תמונות מפורטות במפרט התמונות.
תיאור אופציונלי

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

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

טקסט חופשי

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

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

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

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

טקסט חופשי

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

תגים אופציונלי

כל תג הוא טקסט חופשי (עד 15 תווים) או תמונה קטנה.

טיפול מיוחד בחוויית המשתמש מעל תמונה או סרטון, למשל כתג כשכבת-על בתמונה

  • "עדכון בזמן אמת"
  • משך קריאת המאמר
תג – טקסט אופציונלי

שם התג

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

טקסט חופשי

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

תג – תמונה אופציונלי

תמונה קטנה

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

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

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

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

הערה: השדה הזה הוא חובה אם הישות הזו היא חלק את אשכול ההמשך.

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

האחוז מהתוכן המלא שהמשתמש צרך עד היום.

הערה: השדה הזה הוא חובה אם הישות הזו היא חלק את אשכול ההמשך.

ערך int בין 0 ל-100, כולל.
קטגוריות תוכן אופציונלי צריך לתאר את קטגוריית התוכן בישות.

רשימת טיפוסים בני מנייה (enum)

לעיון בקטע 'קטגוריית תוכן' לקבלת הנחיות.

PersonEntity

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

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

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

URI
פרופיל - שם חובה שם הפרופיל, המזהה או הכינוי שלו, למשל 'ישראלי', ' @TeamPixel' וכו'

מחרוזת

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

פרופיל - דמות חובה

תמונת הפרופיל או תמונת דמות של המשתמש.

הערה: התמונה צריכה להיות ריבועית ביחס של 1:1.

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

טקסט חופשי

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

פרופיל – תמונה נוספת אופציונלי תמונה קטנה כמו תג מאומת. הנחיות ליצירת תמונות מפורטות במפרט התמונות.
תמונת כותרת אופציונלי

נציג רק תמונה אחת אם יסופקו כמה תמונות. יחס הגובה-רוחב המומלץ הוא 16:9

הערה: מומלץ מאוד להוסיף תמונה. אם התג הוא יש לוודא שיש מרווח בטוח של 24dps בחלק העליון והתחתון של התמונה

הנחיות ליצירת תמונות מפורטות במפרט התמונות.
פופולריות – מספר אופציונלי

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

הערה:התמונה חייבת להיות ביחס של 16:9. אם סופק תג, חשוב לוודא שיש מקום בטוח של 24dps גם בחלק העליון וגם בחלק התחתון של התמונה

מחרוזת

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

פופולריות – ערך המספר אופציונלי

מספר העוקבים או ערך הפופולריות.

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

ארוך
פופולריות – תווית אופציונלי יש לציין את התווית 'פופולריות'. לדוגמה – 'לייקים'.

מחרוזת

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

פופולריות – תוכן ויזואלי אופציונלי

מציינים למה מיועדת האינטראקציה. לדוגמה – תמונה מוצגת סמל הלייקים, סמלי האמוג'י.

אפשר להוסיף יותר מתמונה אחת, אבל לא בטוח שכולן יוצגו בכל התמונות גורמי צורה.

הערה: התמונה חייבת להיות ריבועית ביחס של 1:1

הנחיות ליצירת תמונות מפורטות במפרט התמונות.
דירוג – ערך מקסימלי חובה

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

חובה לציין אם גם ערך הדירוג הנוכחי הוא שניתנו.

מספר >= 0.0
דירוג - ערך נוכחי חובה

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

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

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

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

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

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

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

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

ארוך
מיקום – מדינה אופציונלי המדינה שבה האדם נמצא או מספק שירות.

טקסט חופשי

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

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

טקסט חופשי

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

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

טקסט חופשי

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

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

טקסט חופשי

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

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

טקסט חופשי

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

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

טקסט חופשי

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

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

טקסט חופשי

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

תגים אופציונלי

כל תג הוא טקסט חופשי (עד 15 תווים) או תמונה קטנה.

תג – טקסט אופציונלי

שם התג

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

טקסט חופשי

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

תג – תמונה אופציונלי

תמונה קטנה

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

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

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

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

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

טקסט חופשי

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

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

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

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

טקסט חופשי

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

קטגוריות תוכן אופציונלי צריך לתאר את קטגוריית התוכן בישות.

רשימת מספרים שעומדים בדרישות

  • TYPE_HEALTH_AND_FITEANCE (דוגמה – מאמן יוגה/כושר)
  • TYPE_Home_AND_auto (דוגמה - שרברב)
  • TYPE_SPORTS (דוגמה – שחקן)
  • TYPE_DATING

לעיון בקטע 'קטגוריית תוכן' לקבלת הנחיות.

EventEntity

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

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

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

URI
כותרת חובה השם של הישות.

מחרוזת

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

שעת התחלה חובה

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

הערה: הערך הזה יוצג באלפיות שנייה.

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

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

דוגמאות: VIRTUAL, IN_PERSON או HYBRID
תמונות של פוסטר חובה

נציג רק תמונה אחת אם יסופקו כמה תמונות. יחס הגובה-רוחב המומלץ הוא 16:9

הערה: מומלץ מאוד להוסיף תמונה. אם התג הוא יש לוודא שיש מרווח בטוח של 24dps בחלק העליון והתחתון של התמונה

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

המדינה שבה האירוע מתרחש.

הערה: המאפיין הזה נדרש לאירועים IN_PERSON או היברידים

טקסט חופשי

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

מיקום – עיר נדרש באופן מותנה

העיר שבה מתקיים האירוע.

הערה: המאפיין הזה נדרש לאירועים IN_PERSON או היברידים

טקסט חופשי

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

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

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

הערה: המאפיין הזה נדרש לאירועים IN_PERSON או היברידים

טקסט חופשי

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

מיקום - רחוב אופציונלי הרחוב (אם רלוונטי) של המיקום שבו האירוע מתקיים להתארח.

טקסט חופשי

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

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

טקסט חופשי

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

מיקום – מיקוד אופציונלי המיקוד (אם רלוונטי) של המיקום שבו האירוע מתרחש מתארח.

טקסט חופשי

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

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

טקסט חופשי

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

שעת סיום אופציונלי

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

הערה: הערך הזה יוצג באלפיות שנייה.

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

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

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

טקסט חופשי

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

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

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

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

טקסט חופשי

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

תגים אופציונלי

כל תג הוא טקסט חופשי (עד 15 תווים) או תמונה קטנה.

תג – טקסט אופציונלי

שם התג

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

טקסט חופשי

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

תג – תמונה אופציונלי

תמונה קטנה

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

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

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

המחיר הנוכחי של הכרטיס לאירוע.

יש לציין אם צוין מחיר עם קו חוצה.

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

טקסט חופשי

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

קטגוריות תוכן אופציונלי צריך לתאר את קטגוריית התוכן בישות.

רשימת מספרים שעומדים בדרישות

  • TYPE_MOVIES_AND_TV_SHOWS (דוגמה – קולנוע)
  • TYPE_DIGITAL_GAMES (דוגמה – ספורט אלקטרוני)
  • TYPE_MUSIC (דוגמה – קונצרט)
  • TYPE_TRAVEL_AND_LOCAL (דוגמה - סיור, פסטיבל)
  • TYPE_HEALTH_AND_FITEness (דוגמה - שיעור יוגה)
  • TYPE_EDUCATION (דוגמה – כיתה)
  • TYPE_SPORTS (דוגמה - משחק פוטבול)
  • TYPE_DATING (דוגמה - מפגש)

לעיון בקטע 'קטגוריית תוכן' לקבלת הנחיות.

EventReservationEntity

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

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

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

URI
כותרת חובה השם של הישות.

מחרוזת

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

שעת התחלה חובה

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

הערה: הערך הזה יוצג באלפיות שנייה.

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

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

דוגמאות: VIRTUAL, IN_PERSON או HYBRID
מיקום – מדינה נדרש באופן מותנה

המדינה שבה האירוע מתרחש.

הערה: המאפיין הזה נדרש לאירועים IN_PERSON או היברידים

טקסט חופשי

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

מיקום – עיר נדרש באופן מותנה

העיר שבה מתקיים האירוע.

הערה: המאפיין הזה נדרש לאירועים IN_PERSON או היברידים

טקסט חופשי

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

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

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

הערה: המאפיין הזה נדרש לאירועים IN_PERSON או היברידים

טקסט חופשי

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

מיקום - רחוב אופציונלי הרחוב (אם רלוונטי) של המיקום שבו האירוע מתקיים להתארח.

טקסט חופשי

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

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

טקסט חופשי

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

מיקום – מיקוד אופציונלי המיקוד (אם רלוונטי) של המיקום שבו האירוע מתרחש מתארח.

טקסט חופשי

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

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

טקסט חופשי

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

תמונות של פוסטר אופציונלי

נציג רק תמונה אחת אם יסופקו כמה תמונות. יחס הגובה-רוחב המומלץ הוא 16:9

הערה: מומלץ מאוד להוסיף תמונה. אם התג הוא יש לוודא שיש מרווח בטוח של 24dps בחלק העליון והתחתון של התמונה

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

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

הערה: הערך הזה יוצג באלפיות שנייה.

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

השם של ספק השירות.

הערה: צריך להוסיף לשירות טקסט או תמונה ספק.

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

הלוגו או התמונה של ספק השירות.

הערה: צריך להוסיף לשירות טקסט או תמונה ספק.

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

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

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

טקסט חופשי

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

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

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

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

טקסט חופשי

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

תגים אופציונלי

כל תג הוא טקסט חופשי (עד 15 תווים) או תמונה קטנה.

תג – טקסט אופציונלי

שם התג

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

טקסט חופשי

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

תג – תמונה אופציונלי

תמונה קטנה

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

הערה: כדי לקבל את התג צריך להזין טקסט או תמונה

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

המחיר הנוכחי של הכרטיס לאירוע.

יש לציין אם צוין מחיר עם קו חוצה.

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

טקסט חופשי

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

דירוג – ערך מקסימלי אופציונלי

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

חובה לציין אם גם ערך הדירוג הנוכחי הוא שניתנו.

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

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

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

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

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

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

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

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

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

ארוך
קטגוריות תוכן אופציונלי צריך לתאר את קטגוריית התוכן בישות.

רשימת מספרים שעומדים בדרישות

  • TYPE_MOVIES_AND_TV_SHOWS (דוגמה – קולנוע)
  • TYPE_DIGITAL_GAMES (דוגמה – ספורט אלקטרוני)
  • TYPE_MUSIC (דוגמה – קונצרט)
  • TYPE_TRAVEL_AND_LOCAL (דוגמה - סיור, פסטיבל)
  • TYPE_HEALTH_AND_FITEness (דוגמה - שיעור יוגה)
  • TYPE_EDUCATION (דוגמה – כיתה)
  • TYPE_SPORTS (דוגמה - משחק פוטבול)
  • TYPE_DATING (דוגמה - מפגש)

לעיון בקטע 'קטגוריית תוכן' לקבלת הנחיות.

מפרט לתמונות

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

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

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

מועדף

300x300 1,200x1,200
תמונה לרוחב (1.91X1) 600x314 1,200x628
לאורך (4x5) 480x600 960 x 1,200

התמונות נדרשות להתארח ברשתות CDN ציבוריות כדי ש-Google תוכל לגשת אותם.

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

PNG, JPG, GIF סטטי, WebP

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

5,120KB

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

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

קטגוריית תוכן

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

  • TYPE_EDUCATION
  • TYPE_SPORTS
  • TYPE_MOVIES_AND_TV_SHOWS
  • TYPE_BOOKS
  • TYPE_AUDIOBOOKS
  • TYPE_MUSIC
  • TYPE_DIGITAL_GAMES
  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_HOME_AND_AUTO
  • TYPE_BUSINESS
  • TYPE_NEWS
  • TYPE_FOOD_AND_DRINK
  • TYPE_SHOPPING
  • TYPE_HEALTH_AND_FITENESS
  • TYPE_MEDICAL
  • TYPE_PARENTING
  • TYPE_DATING

התמונות נדרשות להתארח ברשתות CDN ציבוריות כדי ש-Google תוכל לגשת אותם.

הנחיות לשימוש בקטגוריות התוכן

  1. ישויות מסוימות, כמו ArticleEntity ו-GeneralFeaturedEntity כשיר להשתמש בכל אחת מקטגוריות התוכן. לגבי ישויות אחרות כמו EventEntity, EventOrderEntity, UserEntity, רק קבוצת משנה מהקטגוריות האלה הן כשירות. לרשימת הקטגוריות האפשריות סוג ישות לפני אכלוס הרשימה.
  2. שימוש בסוג הישות הספציפי בחלק מקטגוריות התוכן בשילוב עם שילוב של הישויות הכלליות והקטגוריה ContentCategory:

  3. השדה ContentCategory הוא אופציונלי ויש להשאיר אותו ריק אם התוכן אינו שייך לאף אחת מהקטגוריות הרשומות למעלה.

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

שלב 2: מספקים נתוני אשכול

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

AppEngagePublishClient אחראי לפרסום אשכולות.

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • 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 אובייקטים.

Kotlin


client.publishRecommendationClusters(
      PublishRecommendationClustersRequest.Builder()
        .addRecommendationCluster(
          RecommendationCluster.Builder()
            .addEntity(entity1)
            .addEntity(entity2)
            .setTitle("Top Picks For You")
            .build()
        )
        .build()
    )

Java


client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

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

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

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

publishFeaturedCluster

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

Kotlin


client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java


client.publishFeaturedCluster(
            new PublishFeaturedClustersRequest.Builder()
                .addFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

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

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

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

publishContinuationCluster

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

Kotlin


client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java


client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

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

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

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

publishUserAccountManagementRequest

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

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

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

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

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

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

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 מהשותף למפתחים הם הוסר.
  • הנתונים מהבקשה מנותחים ונשמרים אשכול אשכול UserAccountManagement.

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

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

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

deleteContinuationCluster

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

Kotlin


client.deleteContinuationCluster()

Java


client.deleteContinuationCluster();

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

deleteUserManagementCluster

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

Kotlin


client.deleteUserManagementCluster()

Java


client.deleteUserManagementCluster();

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

deleteClusters

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

Kotlin


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

Java


client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .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 עם הסיבה קוד שגיאה.

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

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

בנוסף לביצוע קריאות לפרסום Content 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 continuation cluster publish when PUBLISH_CONTINUATION 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))

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED))

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION))
}

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 continuation cluster publish when PUBLISH_CONTINUATION 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 Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION));

}
  • הצהרה סטטית על יישום עם התג <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.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

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

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION מומלץ כדי להתחיל קריאת publishRecommendationClusters כאשר מקבלים את הכוונה הזו.
  • com.google.android.engage.action.PUBLISH_FEATURED מומלץ להתחיל קריאת publishFeaturedCluster כאשר מקבלים את הכוונה הזו.
  • com.google.android.engage.action.PUBLISH_CONTINUATION מומלץ להתחיל קריאת publishContinuationCluster כאשר מקבלים את הכוונה הזו.

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

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

שאלות נפוצות

ניתן לעיין בשאלות נפוצות בנושא Engage SDK בנושא שאלות נפוצות.

יצירת קשר

פרטים ליצירת קשר engagement-developers@google.com, אם יש בזמן תהליך ההטמעה.

השלבים הבאים

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

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