Google מפתחת פלטפורמה במכשיר שמארגנת את האפליקציות של המשתמשים לפי תחומים, ומאפשרת חוויה חדשה וסוחפת של צריכת תוכן וגילוי תוכן באפליקציות בהתאמה אישית. חוויית הצפייה במסך מלא מאפשרת למפתחים שותפים להציג את התוכן העשיר הכי טוב שלהם בערוץ ייעודי מחוץ לאפליקציה.המדריך הזה כולל הוראות למפתחים שותפים לשילוב תוכן ההיכרויות שלהם, באמצעות Engage SDK כדי לאכלס את אזור הפלטפורמה החדש הזה.
פרטי השילוב
בקטע הזה מפורטים השלבים, מודלי הנתונים והמונחים שנדרשים כדי לשלב את Engage SDK עם תוכן בנושא היכרויות.
הסברים על המונחים
השילוב הזה כולל את שלושת סוגי האשכולות הבאים: המלצה, מומלצים והמשך.
אשכולות של המלצות מציגים הצעות מותאמות אישית להיכרויות משותף פיתוח ספציפי. אפשר להתאים אישית את ההמלצות האלה למשתמש.
- אשכול המלצות יכול להיות מורכב מ-
ArticleEntity, PersonEntityאוEventEntity, אבל לא משילוב של סוגי ישויות שונים.
ההמלצות מוצגות במבנה הבא:
אשכול המלצות: תצוגה בממשק המשתמש שמכילה קבוצה של המלצות מאותו שותף פיתוח.
ישות: אובייקט שמייצג פריט אחד באשכול. השילוב הזה מציע כמה ישויות שיוצגו באמצעות אשכול ההמלצות:
ArticleEntity: מייצג המלצה לתוכן מבוסס-טקסט שקשור לדייטים. הפריט ArticleEntity מאפשר למפתחים לספק מגוון של תוכן טקסט ותמונות עם יותר מטא-נתונים כדי להעביר את המידע למשתמשים.
איור 1: ממשק משתמש שבו מוצגת ישות ArticleEntity אחת באשכול המלצות. PersonEntity: מייצג אדם. ההמלצות יכולות להיות להדגיש אדם מסוים בהצעות להיכרויות.
איור 2: ממשק משתמש שבו מוצג PersonEntity אחד באשכול Recommendations. EventEntity: מייצג אירוע שיתרחש בעתיד. שעת ההתחלה של האירוע היא מידע קריטי שצריך להעביר למשתמשים.
איור 3: ממשק משתמש שבו מוצג EventEntity יחיד באשכול Recommendations.
- אשכול המלצות יכול להיות מורכב מ-
אוסף ההמשכים מציג תוכן שהמשתמשים צפו בו לאחרונה מכמה שותפי פיתוח בקבוצה אחת בממשק המשתמש. כל שותף פיתוח יוכל לשדר עד 10 ישויות באשכול ההמשך.
התוכן של ההמשך יכול להיות במבנה הבא:
ArticleEntity: מייצג המלצה לתוכן מבוסס-טקסט שקשור לדייטים. הישות הזו יכולה לייצג כתבות חדשותיות או תוכן אחר שהמשתמש לא סיים לקרוא או לצפות בו, ורוצה להמשיך מהנקודה שבה הפסיק.
איור 6. ממשק משתמש שמוצג בו ArticleEntity אחד בתוך אוסף המשכים. EventReservationEntity: הישות EventReservationEntity מייצגת הזמנה לאירוע, ועוזרת למשתמשים לעקוב אחרי הזמנות לאירועים קרובים או מתמשכים של דייטים ומפגשים.
איור 8. ממשק משתמש שמוצג בו EventReservationEntity אחד בתוך אשכול המשך.
האשכול מומלצים הוא תצוגה בממשק המשתמש שמציגה את ה-
GenericFeaturedEntityהראשי שנבחר מהרבה שותפים מפתחים בקבוצה אחת בממשק המשתמש. יש רק קבוצת תוכן מומלץ אחת, שמופיעה בחלק העליון של ממשק המשתמש, במיקום בולט מעל כל קבוצות ההמלצות. כל שותף פיתוח יכול לשדר ישות אחת מסוג נתמך באוסף "מומלצים", עם ישויות רבות (ייתכן מסוגים שונים) ממפתחי אפליקציות מרובים באוסף "מומלצים".GenericFeaturedEntity: בניגוד לפריט Recommendation, פריט Featured צריך לשמש לתוכן מוביל יחיד של מפתחים, ולייצג את התוכן החשוב ביותר שיהיה מעניין ורלוונטי למשתמשים.
איור 12: ממשק משתמש שמוצג בו FeaturedCluster עם רשימה של GenericFeaturedEntity
הכנה
רמת 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'
}
סיכום
העיצוב מבוסס על הטמעה של שרת מאגד (bound service).
הנתונים שלקוח יכול לפרסם כפופים למגבלות הבאות, בהתאם לסוגי האשכולות השונים:
| סוג האשכול | מגבלות על אשכולות | מספר הישויות המינימלי באשכול | מגבלות מקסימליות על ישויות באשכול |
|---|---|---|---|
| אשכולות של המלצות | עד 5 | לפחות 5 | עד 25 (ArticleEntity, PersonEntity או EventEntity) |
| אוסף ההמשכים | לכל היותר 1 | לפחות אחד | עד 10 (ArticleEntity או
EventReservationEntity) |
| אשכול מומלץ | לכל היותר 1 | לפחות אחד | עד 10 (GenericFeaturedEntity) |
שלב 1: מסירת נתוני הישות
ב-SDK מוגדרות ישויות שונות שמייצגות כל סוג פריט. אנחנו תומכים בישויות הבאות בקטגוריה "היכרויות":
GenericFeaturedEntityArticleEntityPersonEntityEventEntityEventReservationEntity
בטבלאות הבאות מפורטים המאפיינים הזמינים והדרישות לכל סוג.
GenericFeaturedEntity
| מאפיין | דרישה | תיאור | פורמט |
|---|---|---|---|
| URI של פעולה | חובה |
קישור עומק לישות באפליקציה של הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך (Attribution). כדאי לעיין בשאלות הנפוצות האלה |
URI |
| תמונות של פוסטרים | חובה | אם תספקו כמה תמונות, נציג רק תמונה אחת. יחס הגובה-רוחב המומלץ הוא 16:9 הערה: אם מוסיפים תג, צריך להקפיד על אזור בטוח של 24 dps בחלק העליון והתחתון של התמונה. |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| כותרת | אופציונלי | שם הישות. | טקסט חופשי גודל טקסט מומלץ: 50 תווים |
| תיאור | אופציונלי | פסקה אחת של טקסט שמתארת את הישות. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל טקסט מומלץ: 180 תווים |
| רשימת כתוביות | אופציונלי | עד 3 כותרות משנה, כשכל כותרת משנה היא שורת טקסט אחת. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל הטקסט המומלץ לכל כתובית: עד 50 תווים |
| תגים | אופציונלי | כל תג יכול להיות טקסט חופשי (עד 15 תווים) או תמונה קטנה. טיפול מיוחד בחוויית המשתמש מעל התמונה או הסרטון, למשל שכבת-על של תג על התמונה
|
|
| תג – טקסט | אופציונלי | כותרת התג הערה: חובה להוסיף טקסט או תמונה לתג |
טקסט חופשי גודל טקסט מומלץ: עד 15 תווים |
| תג – תמונה | אופציונלי | תמונה קטנה טיפול מיוחד בחוויית המשתמש, למשל שכבת-על של תג על התמונה הממוזערת של התמונה או הסרטון. הערה: חובה להוסיף טקסט או תמונה לתג |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| קטגוריות תוכן | אופציונלי | תארו את קטגוריית התוכן בישות. | רשימת טיפוסים בני מנייה (enum) אפשר לעיין בקטע "קטגוריית תוכן" כדי לקבל הנחיות. |
ArticleEntity
| מאפיין | דרישה | תיאור | פורמט |
|---|---|---|---|
| URI של פעולה | חובה |
קישור עומק לישות באפליקציה של הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך (Attribution). כדאי לעיין בשאלות הנפוצות האלה |
URI |
| כותרת | חובה | שם הישות. | טקסט חופשי גודל טקסט מומלץ: עד 50 תווים |
| תמונות של פוסטרים | אופציונלי | אם תספקו כמה תמונות, נציג רק תמונה אחת. יחס הגובה-רוחב המומלץ הוא 16:9 הערה: מומלץ מאוד להוסיף תמונה. אם יש תג, צריך לוודא שיש אזור בטוח של 24 dps גם בחלק העליון וגם בחלק התחתון של התמונה. |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| מקור – כותרת | אופציונלי | שם המחבר, הארגון או הכתב | טקסט חופשי גודל טקסט מומלץ: פחות מ-25 תווים |
| מקור – תמונה | אופציונלי | תמונה של המקור, כמו המחבר, הארגון או הכתב | כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| תיאור | אופציונלי | פסקה אחת של טקסט שמתארת את הישות. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל טקסט מומלץ: 180 תווים |
| רשימת כתוביות | אופציונלי | עד 3 כותרות משנה, כשכל כותרת משנה היא שורת טקסט אחת. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל הטקסט המומלץ לכל כתובית: עד 50 תווים |
| תגים | אופציונלי | כל תג יכול להיות טקסט חופשי (עד 15 תווים) או תמונה קטנה. טיפול מיוחד בחוויית המשתמש מעל התמונה או הסרטון, למשל שכבת-על של תג על התמונה
|
|
| תג – טקסט | אופציונלי | כותרת התג הערה: חובה להוסיף טקסט או תמונה לתג |
טקסט חופשי גודל טקסט מומלץ: עד 15 תווים |
| תג – תמונה | אופציונלי | תמונה קטנה טיפול מיוחד בחוויית המשתמש, למשל שכבת-על של תג על התמונה הממוזערת של התמונה או הסרטון. הערה: חובה להוסיף טקסט או תמונה לתג |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| מועד פרסום התוכן | אופציונלי | חותמת הזמן של התקופה במילי-שניות שבה התוכן פורסם או עודכן באפליקציה. | חותמת זמן של תקופת זמן המערכת באלפיות השנייה |
| מועד ההתעניינות האחרון | חובה בתנאים מסוימים | חותמת הזמן של התקופה באלפיות השנייה שבה המשתמש היה באינטראקציה עם הישות הזו בפעם האחרונה. הערה: השדה הזה הוא חובה אם הישות הזו היא חלק מאשכול ההמשך. |
חותמת זמן של תקופת זמן המערכת באלפיות השנייה |
| אחוז ההתקדמות | חובה בתנאים מסוימים | אחוז התוכן המלא שהמשתמש צרך עד היום. הערה: השדה הזה הוא חובה אם הישות הזו היא חלק מאשכול ההמשך. |
ערך int בין 0 ל-100, כולל. |
| קטגוריות תוכן | אופציונלי | תארו את קטגוריית התוכן בישות. | רשימת טיפוסים בני מנייה (enum) אפשר לעיין בקטע "קטגוריית תוכן" כדי לקבל הנחיות. |
PersonEntity
| מאפיין | דרישה | תיאור | פורמט |
|---|---|---|---|
| URI של פעולה | חובה |
קישור עומק לישות באפליקציה של הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך (Attribution). כדאי לעיין בשאלות הנפוצות האלה |
URI |
| פרופיל – שם | חובה | שם הפרופיל, המזהה או הכינוי, למשל "ישראל ישראלי", "@TeamPixel" וכו'. | מחרוזת גודל טקסט מומלץ: עד 50 תווים |
| פרופיל – אווטאר | חובה |
תמונת הפרופיל או תמונת הדמות של המשתמש. הערה: התמונה חייבת להיות ריבועית (1:1). |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| פרופיל – טקסט נוסף | אופציונלי | טקסט חופשי כמו הכינוי בפרופיל. | טקסט חופשי גודל טקסט מומלץ: עד 15 תווים |
| פרופיל – תמונה נוספת | אופציונלי | תמונה קטנה כמו תג אימות. | כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| תמונת כותרת | אופציונלי |
מייצג את תמונת הכותרת. היא צריכה להיות שונה מתמונת הפרופיל. אפשר להשתמש באפשרות הזו אם יש תמונה נוספת שעוזרת להדגיש את האדם, כמו העבודה שלו. הערה: התמונה חייבת להיות ביחס גובה-רוחב של 16:9. אם יש תג, צריך לוודא שיש אזור בטוח של 24 dps גם בחלק העליון וגם בחלק התחתון של התמונה |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| פופולריות – מספר | אופציונלי |
מציינים את מספר העוקבים או את ערך הפופולריות, לדוגמה – "3.7 מיליון". הערה: אם צוינו גם Count וגם Count Value, המערכת תשתמש ב-Count. |
מחרוזת גודל טקסט מומלץ: עד 20 תווים לספירה ולתווית ביחד |
| פופולריות – ערך הספירה | אופציונלי | מספר העוקבים או ערך הפופולריות. הערה: צריך לספק ערך מספרי אם לא רוצים שהאפליקציה תטפל בלוגיקה של אופטימיזציה של מספר גדול לגדלים שונים של תצוגה. אם צוינו גם מספר וגם ערך מספרי, המספר יוצג למשתמשים. |
ארוך |
| פופולריות – תווית | אופציונלי | מציינים מהי תווית הפופולריות. לדוגמה: "לייקים". | מחרוזת גודל טקסט מומלץ: עד 20 תווים לספירה ולתווית ביחד |
| פופולריות – חזותי | אופציונלי |
מציינים את מטרת האינטראקציה. לדוגמה – תמונה שמוצג בה סמל לייקים, אמוג'י. אפשר לספק יותר מתמונה אחת, אבל יכול להיות שלא כולן יוצגו בכל גורמי הצורה. הערה: התמונה חייבת להיות ריבועית (1:1) |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| דירוג – ערך מקסימלי | חובה | הערך המקסימלי בסולם הדירוג. חובה לציין את המאפיין הזה אם מציינים גם את הערך הנוכחי של הדירוג. |
מספר >= 0.0 |
| דירוג – ערך נוכחי | חובה | הערך הנוכחי של סולם הדירוג. חובה לציין את הערך הזה אם מציינים גם את ערך הדירוג המקסימלי. |
מספר >= 0.0 |
| דירוג – מספר | אופציונלי | מספר הדירוגים של הישות. הערה: צריך לספק את השדה הזה אם רוצים שהאפליקציה תשלוט באופן שבו הוא מוצג למשתמשים. צריך לספק מחרוזת תמציתית שאפשר להציג למשתמש. לדוגמה, אם המספר הוא 1,000,000, כדאי להשתמש בקיצורים כמו 1M, כדי שהמספר לא ייחתך בגדלים קטנים יותר של מסכים. |
מחרוזת |
| דירוג – ערך הספירה | אופציונלי | מספר הדירוגים של הישות. הערה: צריך לספק את השדה הזה אם אתם לא רוצים לטפל בעצמכם בלוגיקה של קיצור התצוגה. אם גם Count וגם Count Value קיימים, נשתמש ב-Count כדי להציג למשתמשים |
ארוך |
| מיקום – מדינה | אופציונלי | המדינה שבה האדם נמצא או משרת. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – עיר | אופציונלי | העיר שבה האדם נמצא או משרת. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – כתובת לתצוגה | אופציונלי | הכתובת שבה האדם נמצא או משרת תוצג למשתמש. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – כתובת | אופציונלי | הכתובת (אם רלוונטי) שבה האדם נמצא או משרת. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – מדינה (State) | אופציונלי | המדינה (אם רלוונטי) שבה האדם נמצא או משרת. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – מיקוד | אופציונלי | המיקוד (אם רלוונטי) של המקום שבו האדם נמצא או משרת. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – שכונה | אופציונלי | השכונה (אם רלוונטי) שבה האדם נמצא או מספק שירות. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| תגים | אופציונלי |
כל תג יכול להיות טקסט חופשי (עד 15 תווים) או תמונה קטנה. |
|
| תג – טקסט | אופציונלי | כותרת התג הערה: חובה להוסיף טקסט או תמונה לתג |
טקסט חופשי גודל טקסט מומלץ: עד 15 תווים |
| תג – תמונה | אופציונלי | תמונה קטנה טיפול מיוחד בחוויית המשתמש, למשל שכבת-על של תג על התמונה הממוזערת של התמונה או הסרטון. הערה: חובה להוסיף טקסט או תמונה לתג |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| תיאור | אופציונלי | פסקה אחת של טקסט שמתארת את הישות. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל טקסט מומלץ: 180 תווים |
| רשימת כתוביות | אופציונלי | עד 3 כותרות משנה, כשכל כותרת משנה היא שורת טקסט אחת. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל הטקסט המומלץ לכל כתובית: עד 50 תווים |
| קטגוריות תוכן | אופציונלי | תארו את קטגוריית התוכן בישות. | רשימה של טיפוסים בני מנייה (enum) שעומדים בדרישות
אפשר לעיין בקטע "קטגוריית תוכן" כדי לקבל הנחיות. |
EventEntity
| מאפיין | דרישה | תיאור | פורמט |
|---|---|---|---|
| URI של פעולה | חובה |
קישור עומק לישות באפליקציה של הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך (Attribution). כדאי לעיין בשאלות הנפוצות האלה |
URI |
| כותרת | חובה | שם הישות. | מחרוזת גודל טקסט מומלץ: עד 50 תווים |
| שעת התחלה | חובה |
חותמת הזמן של התאריך והשעה שבהם האירוע צפוי להתחיל. הערה: הערך הזה יוצג באלפיות השנייה. |
חותמת זמן של תקופת זמן המערכת באלפיות השנייה |
| מצב אירוע | חובה | שדה שמציין אם האירוע יהיה וירטואלי, פרונטלי או גם וגם. |
דוגמאות: VIRTUAL, IN_PERSON או HYBRID |
| תמונות של פוסטרים | חובה | אם תספקו כמה תמונות, נציג רק תמונה אחת. יחס הגובה-רוחב המומלץ הוא 16:9 הערה: מומלץ מאוד להוסיף תמונה. אם יש תג, צריך לוודא שיש אזור בטוח של 24 dps גם בחלק העליון וגם בחלק התחתון של התמונה. |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| מיקום – מדינה | חובה בתנאים מסוימים | המדינה שבה האירוע מתקיים. הערה: השדה הזה נדרש לאירועים מסוג IN_PERSON או HYBRID |
טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – עיר | חובה בתנאים מסוימים | העיר שבה האירוע מתקיים. הערה: השדה הזה נדרש לאירועים מסוג IN_PERSON או HYBRID |
טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – כתובת לתצוגה | חובה בתנאים מסוימים | הכתובת או שם המקום שבו האירוע יתקיים, שיוצגו למשתמש. הערה: השדה הזה נדרש לאירועים מסוג IN_PERSON או HYBRID |
טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – כתובת | אופציונלי | הכתובת (אם רלוונטי) של המיקום שבו מתקיים האירוע. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – מדינה (State) | אופציונלי | המדינה (State) או המחוז (אם רלוונטי) שבהם האירוע מתקיים. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – מיקוד | אופציונלי | המיקוד (אם רלוונטי) של המיקום שבו מתקיים האירוע. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – שכונה | אופציונלי | השכונה (אם רלוונטי) שבה האירוע מתקיים. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| שעת סיום | אופציונלי |
חותמת הזמן של מערכת Unix של השעה שבה האירוע צפוי להסתיים. הערה: הערך הזה יוצג באלפיות השנייה. |
חותמת זמן של תקופת זמן המערכת באלפיות השנייה |
| תיאור | אופציונלי | פסקה אחת של טקסט שמתארת את הישות. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל טקסט מומלץ: 180 תווים |
| רשימת כתוביות | אופציונלי | עד 3 כותרות משנה, כשכל כותרת משנה היא שורת טקסט אחת. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל הטקסט המומלץ לכל כתובית: עד 50 תווים |
| תגים | אופציונלי |
כל תג יכול להיות טקסט חופשי (עד 15 תווים) או תמונה קטנה. |
|
| תג – טקסט | אופציונלי | כותרת התג הערה: חובה להוסיף טקסט או תמונה לתג |
טקסט חופשי גודל טקסט מומלץ: עד 15 תווים |
| תג – תמונה | אופציונלי | תמונה קטנה טיפול מיוחד בחוויית המשתמש, למשל שכבת-על של תג על התמונה הממוזערת של התמונה או הסרטון. הערה: חובה להוסיף טקסט או תמונה לתג |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| Price - CurrentPrice | חובה בתנאים מסוימים |
המחיר הנוכחי של הכרטיס לאירוע. חובה לציין את המאפיין הזה אם מציינים מחיר קודם מחוק. |
טקסט חופשי |
| Price - StrikethroughPrice | אופציונלי | המחיר המקורי של הכרטיס לאירוע. | טקסט חופשי |
| יתרון מרכזי של מחיר | אופציונלי | הצגת מחיר בולט כדי להציג מבצע, אירוע או הנחה לחברי מועדון, אם יש כאלה. | טקסט חופשי אורך הטקסט המומלץ: פחות מ-45 תווים (טקסט ארוך מדי עלול להופיע עם שלוש נקודות) |
| קטגוריות תוכן | אופציונלי | תארו את קטגוריית התוכן בישות. | רשימה של טיפוסים בני מנייה (enum) שעומדים בדרישות
אפשר לעיין בקטע "קטגוריית תוכן" כדי לקבל הנחיות. |
EventReservationEntity
| מאפיין | דרישה | תיאור | פורמט |
|---|---|---|---|
| URI של פעולה | חובה |
קישור עומק לישות באפליקציה של הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך (Attribution). כדאי לעיין בשאלות הנפוצות האלה |
URI |
| כותרת | חובה | שם הישות. | מחרוזת גודל טקסט מומלץ: עד 50 תווים |
| שעת התחלה | חובה |
חותמת הזמן של התאריך והשעה שבהם האירוע צפוי להתחיל. הערה: הערך הזה יוצג באלפיות השנייה. |
חותמת זמן של תקופת זמן המערכת באלפיות השנייה |
| מצב אירוע | חובה | שדה שמציין אם האירוע יהיה וירטואלי, פרונטלי או גם וגם. |
דוגמאות: VIRTUAL, IN_PERSON או HYBRID |
| מיקום – מדינה | חובה בתנאים מסוימים | המדינה שבה האירוע מתקיים. הערה: השדה הזה נדרש לאירועים מסוג IN_PERSON או HYBRID |
טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – עיר | חובה בתנאים מסוימים | העיר שבה האירוע מתקיים. הערה: השדה הזה נדרש לאירועים מסוג IN_PERSON או HYBRID |
טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – כתובת לתצוגה | חובה בתנאים מסוימים | הכתובת או שם המקום שבו האירוע יתקיים, שיוצגו למשתמש. הערה: השדה הזה נדרש לאירועים מסוג IN_PERSON או HYBRID |
טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – כתובת | אופציונלי | הכתובת (אם רלוונטי) של המיקום שבו מתקיים האירוע. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – מדינה (State) | אופציונלי | המדינה (State) או המחוז (אם רלוונטי) שבהם האירוע מתקיים. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – מיקוד | אופציונלי | המיקוד (אם רלוונטי) של המיקום שבו מתקיים האירוע. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| מיקום – שכונה | אופציונלי | השכונה (אם רלוונטי) שבה האירוע מתקיים. | טקסט חופשי גודל טקסט מומלץ: עד כ-20 תווים |
| תמונות של פוסטרים | אופציונלי | אם תספקו כמה תמונות, נציג רק תמונה אחת. יחס הגובה-רוחב המומלץ הוא 16:9 הערה: מומלץ מאוד להוסיף תמונה. אם יש תג, צריך לוודא שיש אזור בטוח של 24 dps גם בחלק העליון וגם בחלק התחתון של התמונה. |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| שעת סיום | אופציונלי |
חותמת הזמן של מערכת Unix של השעה שבה האירוע צפוי להסתיים. הערה: הערך הזה יוצג באלפיות השנייה. |
חותמת זמן של תקופת זמן המערכת באלפיות השנייה |
| ספק שירות – שם | אופציונלי |
השם של ספק השירות. הערה: חובה להזין טקסט או תמונה של ספק השירות. |
טקסט חופשי. לדוגמה, שם מארגן האירוע או הסיור |
| ספק שירות – תמונה | אופציונלי |
הלוגו או התמונה של ספק השירות. הערה: חובה להזין טקסט או תמונה של ספק השירות. |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| תיאור | אופציונלי | פסקה אחת של טקסט שמתארת את הישות. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל טקסט מומלץ: 180 תווים |
| רשימת כתוביות | אופציונלי | עד 3 כותרות משנה, כשכל כותרת משנה היא שורת טקסט אחת. הערה: למשתמש יוצג התיאור או רשימת כותרות המשנה, אבל לא שניהם. |
טקסט חופשי גודל הטקסט המומלץ לכל כתובית: עד 50 תווים |
| תגים | אופציונלי |
כל תג יכול להיות טקסט חופשי (עד 15 תווים) או תמונה קטנה. |
|
| תג – טקסט | אופציונלי | כותרת התג הערה: חובה להוסיף טקסט או תמונה לתג |
טקסט חופשי גודל טקסט מומלץ: עד 15 תווים |
| תג – תמונה | אופציונלי | תמונה קטנה טיפול מיוחד בחוויית המשתמש, למשל שכבת-על של תג על התמונה הממוזערת של התמונה או הסרטון. הערה: חובה להוסיף טקסט או תמונה לתג |
כדי לקבל הנחיות, כדאי לעיין במפרט לתמונות. |
| מזהה ההזמנה | אופציונלי | מזהה ההזמנה של האירוע. | טקסט חופשי |
| Price - CurrentPrice | חובה בתנאים מסוימים |
המחיר הנוכחי של הכרטיס לאירוע. חובה לציין את המאפיין הזה אם מציינים מחיר קודם מחוק. |
טקסט חופשי |
| Price - StrikethroughPrice | אופציונלי | המחיר המקורי של הכרטיס לאירוע. | טקסט חופשי |
| יתרון מרכזי של מחיר | אופציונלי | הצגת מחיר בולט כדי להציג מבצע, אירוע או הנחה לחברי מועדון, אם יש כאלה. | טקסט חופשי אורך הטקסט המומלץ: פחות מ-45 תווים (טקסט ארוך מדי עלול להופיע עם שלוש נקודות) |
| דירוג – ערך מקסימלי | אופציונלי | הערך המקסימלי בסולם הדירוג. חובה לציין את המאפיין הזה אם מציינים גם את הערך הנוכחי של הדירוג. |
מספר >= 0.0 |
| דירוג – ערך נוכחי | אופציונלי | הערך הנוכחי של סולם הדירוג. חובה לציין את הערך הזה אם מציינים גם את ערך הדירוג המקסימלי. |
מספר >= 0.0 |
| דירוג – מספר | אופציונלי | מספר הדירוגים של האירוע. הערה: צריך לספק את השדה הזה אם רוצים שהאפליקציה תשלוט באופן שבו הוא מוצג למשתמשים. צריך לספק מחרוזת תמציתית שאפשר להציג למשתמש. לדוגמה, אם המספר הוא 1,000,000, כדאי להשתמש בקיצורים כמו 1M, כדי שהמספר לא ייחתך בגדלים קטנים יותר של מסכים. |
מחרוזת |
| דירוג – ערך הספירה | אופציונלי | מספר הדירוגים של האירוע. הערה: צריך לספק את השדה הזה אם אתם לא רוצים לטפל בעצמכם בלוגיקה של קיצור התצוגה. אם גם Count וגם Count Value קיימים, נשתמש ב-Count כדי להציג למשתמשים |
ארוך |
| קטגוריות תוכן | אופציונלי | תארו את קטגוריית התוכן בישות. | רשימה של טיפוסים בני מנייה (enum) שעומדים בדרישות
אפשר לעיין בקטע "קטגוריית תוכן" כדי לקבל הנחיות. |
מפרט לתמונות
בטבלה הזו מפורטות הדרישות לגבי נכסי תמונות:
| יחס גובה-רוחב | מספר פיקסלים מינימלי | מספר פיקסלים מומלץ |
|---|---|---|
תמונה ריבועית (1x1) מועדף |
300x300 | 1,200x1,200 |
| תמונה לרוחב (1.91X1) | 600x314 | 1,200x628 |
| לאורך (4x5) | 480x600 | 960x1,200 |
התמונות צריכות להתארח ברשתות CDN ציבוריות כדי ש-Google תוכל לגשת אליהן.
פורמט קובץ
PNG, JPG, GIF סטטי, WebP
גודל קובץ מקסימלי
5,120KB
המלצות נוספות
- האזור הבטוח בתמונה: צריך למקם את התוכן החשוב במרכז התמונה, והוא צריך להשתרע על פני 80% מהשטח שלה.
- כדאי להשתמש ברקע שקוף כדי שהתמונה תוצג כמו שצריך בהגדרות של עיצוב כהה ובהיר.
קטגוריית התוכן
קטגוריית התוכן מאפשרת לאפליקציות לפרסם תוכן ששייך לכמה קטגוריות. הפעולה הזו ממפה את התוכן עם חלק מהקטגוריות המוגדרות מראש, כלומר:
TYPE_EDUCATIONTYPE_SPORTSTYPE_MOVIES_AND_TV_SHOWSTYPE_BOOKSTYPE_AUDIOBOOKSTYPE_MUSICTYPE_DIGITAL_GAMESTYPE_TRAVEL_AND_LOCALTYPE_HOME_AND_AUTOTYPE_BUSINESSTYPE_NEWSTYPE_FOOD_AND_DRINKTYPE_SHOPPINGTYPE_HEALTH_AND_FITENESSTYPE_MEDICALTYPE_PARENTINGTYPE_DATING
התמונות צריכות להתארח ברשתות CDN ציבוריות כדי ש-Google תוכל לגשת אליהן.
הנחיות לשימוש בקטגוריות התוכן
- ישויות מסוימות, כמו ArticleEntity ו-GenericFeaturedEntity, יכולות להשתמש בכל אחת מקטגוריות התוכן. לישויות אחרות כמו EventEntity, EventReservationEntity ו-PersonEntity, רק קבוצת משנה של הקטגוריות האלה עומדת בדרישות. לפני שמאכלסים את הרשימה, צריך לבדוק את רשימת הקטגוריות שעומדות בדרישות לסוג ישות.
בקטגוריות תוכן מסוימות, כדאי להשתמש בסוג הישות הספציפי במקום בשילוב של ישויות גנריות ו-ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS – לפני שמשתמשים בישויות הגנריות, כדאי לעיין בישויות שמופיעות במדריך לשילוב של Watch.
- TYPE_BOOKS – לפני שמשתמשים בישויות הגנריות, כדאי לבדוק את EbookEntity.
- TYPE_AUDIOBOOKS – לפני שמשתמשים בישויות הגנריות, כדאי לבדוק את AudiobookEntity.
- TYPE_SHOPPING – כדאי לעיין ב-ShoppingEntity לפני שמשתמשים בישויות הגנריות.
- TYPE_FOOD_AND_DRINK – לפני שמשתמשים בישויות הגנריות, כדאי לעיין בישויות שבמדריך לשילוב אוכל.
השדה ContentCategory הוא אופציונלי, ואפשר להשאיר אותו ריק אם התוכן לא שייך לאף אחת מהקטגוריות שצוינו קודם.
אם אתם מספקים כמה קטגוריות תוכן, ספקו אותן לפי סדר הרלוונטיות לתוכן, כך שקטגוריית התוכן הרלוונטית ביותר תופיע ראשונה ברשימה.
שלב 2: ציון נתונים של אוסף ההמשכים
מומלץ להפעיל את משימת פרסום התוכן ברקע (לדוגמה, באמצעות WorkManager) ולתזמן אותה על בסיס קבוע או על בסיס אירוע (לדוגמה, בכל פעם שהמשתמש פותח את האפליקציה או כשהמשתמש מוסיף משהו לעגלת הקניות).
AppEngagePublishClient אחראי לפרסום של אוספים.
אלה ממשקי ה-API לפרסום אשכולות בלקוח:
isServiceAvailablepublishRecommendationClusterspublishFeaturedClusterpublishContinuationClusterpublishUserAccountManagementRequestupdatePublishStatusdeleteRecommendationsClustersdeleteFeaturedClusterdeleteContinuationClusterdeleteUserManagementClusterdeleteClusters
isServiceAvailable
ה-API הזה משמש כדי לבדוק אם השירות זמין לשילוב ואם אפשר להציג את התוכן במכשיר.
ל-Engage SDK מגרסה 1.6.0 ואילך (מומלץ)
מיומנויות ב-Android
הצגת הקוד ב-GitHubשילוב של Engage SDK
android skills add engage-sdk-integrationUse the engage-sdk-integration skill to use Engage SDK 1.6.0 and refactor isServiceAvailable to pass ServiceAvailabilityRequest for publishing all cluster types.אתם יכולים לבדוק את זמינות השירות לכל סוג אשכול שאתם מתכוונים לפרסם. isServiceAvailable API מקבל אובייקט בקשה, ServiceAvailabilityRequest, שמכיל את סוגי האשכולות שצריך לבדוק את זמינות השירות שלהם. בטבלה הבאה מפורטים ערכי ה-enum של ClusterType שנדרשים ל-ServiceAvailabilityRequest.
| סוג האשכול | קבוע של סוג האשכול | ערך של מספר שלם |
|---|---|---|
| לא ידוע | TYPE_UNKNOWN |
0 |
| אשכול המלצות | TYPE_RECOMMENDATION |
1 |
| אשכול מומלץ | TYPE_FEATURED |
2 |
| אוסף ההמשכים | TYPE_CONTINUATION |
3 |
| אשכול ניהול משתמשים | TYPE_ENGAGEMENT |
8 |
| אשכול מינויים | 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.
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 PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
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 של פעולה | חובה | קישור עומק לפעולה (למשל, מעבר לדף הכניסה לאפליקציה) |
| תמונה | אופציונלי – אם לא מציינים את המאפיין הזה, צריך לציין את מאפיין שם הפריט |
התמונה שמוצגת בכרטיס תמונות ביחס גובה-רוחב של 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();
כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מהאשכול המומלץ. אם יש שגיאה, כל הבקשה נדחית והמצב הקיים נשמר.
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: טיפול בכוונות שידור
בנוסף לביצוע קריאות ל-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),
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 Continuation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
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 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),
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 Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
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.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
השירות שולח את ה-intent הבא:
com.google.android.engage.action.PUBLISH_RECOMMENDATIONמומלץ להתחיל שיחתpublishRecommendationClustersכשמקבלים את ה-intent הזה.com.google.android.engage.action.PUBLISH_FEATUREDמומלץ להתחיל שיחתpublishFeaturedClusterכשמקבלים את ה-Intent הזה.com.google.android.engage.action.PUBLISH_CONTINUATIONמומלץ להתחיל שיחתpublishContinuationClusterכשמקבלים את ה-Intent הזה.
תהליך עבודה של שילוב
למדריך מפורט על אימות השילוב אחרי שהוא הושלם, ראו תהליך העבודה של מפתחים לשילוב עם Engage.
שאלות נפוצות
יצירת קשר
אם יש לכם שאלות במהלך תהליך השילוב, אתם יכולים לפנות אל engage-developers@google.com.
השלבים הבאים
אחרי שתשלימו את השילוב, אלה השלבים הבאים:
- שולחים אימייל לכתובת
engage-developers@google.comומצרפים את קובץ ה-APK המשולב שמוכן לבדיקה של Google. - Google מבצעת אימות ובדיקות פנימיות כדי לוודא שהשילוב פועל כצפוי. אם צריך לבצע שינויים, Google תפנה אליכם עם הפרטים הנדרשים.
- כשהבדיקה מסתיימת ולא נדרשים שינויים, Google יוצרת איתכם קשר כדי להודיע לכם שאתם יכולים להתחיל לפרסם את ה-APK המעודכן והמשולב בחנות Play.
- אחרי ש-Google תאשר שקובץ ה-APK המעודכן פורסם בחנות Play, יכול להיות שאשכולות ההמלצות, התוכן המוצג וההמשך יפורסמו ויוצגו למשתמשים.