Google יוצרת פלטפורמה במכשיר שמארגנת את המשתמשים אפליקציות לפי ענף ומאפשר חוויה סוחפת חדשה לצריכת תוכן מותאם אישית באפליקציות ועל הגילוי. החוויה הזו במסך מלא מספקת לשותפים למפתחים הזדמנות להציג את התוכן העשיר הטוב ביותר שלהם בערוץ ייעודי באפליקציה שלהם.
המסמך הזה כולל הוראות למפתחים שותפים לשילוב שלהם תוכן של רשתות חברתיות באמצעות Engage SDK כדי לאכלס את אזור השטח החדש הזה.
פרטי השילוב
בקטע הבא ריכזנו את פרטי השילוב.
טרמינולוגיה
באשכולות של המלצות יוצגו הצעות מותאמות אישית של אדם פרטי הוא שותף של Google.
ההמלצות שלכם בנויות באופן הבא:
אשכול המלצות: תצוגה של ממשק משתמש שמכילה קבוצה של המלצות מאותו שותף מפתחים.
כל אשכול המלצות מורכב מאחד משני הסוגים הבאים של :
- PortraitMediaEntity
- פרסום ב-SocialPostEntity
ב-PortraitMediaEntity חייבת להיות תמונה אחת לאורך לפוסט. פרופיל ו מטא-נתונים שקשורים לאינטראקציה הם אופציונליים.
פוסט
- תמונה בפריסה לאורך ובחותמת זמן, או
- התמונה בפריסה לאורך + תוכן הטקסט וחותמת הזמן
פרופיל
- דמות, שם או כינוי, תמונה נוספת
אינטראקציה
- לספור ולתייג בלבד, או
- ספירה ורכיבים חזותיים (סמל)
SocialPostEntity מכיל מטא-נתונים שקשורים לפרופיל, לפוסט ולאינטראקציה.
פרופיל
- דמות, שם או כינוי, טקסט נוסף, תמונה נוספת
פוסט
- טקסט וחותמת זמן, או
- מדיה עשירה (כתובת URL של תמונה או כתובת URL עשירה) וחותמת זמן, או
- טקסט ומדיה עשירה (כתובת URL של תמונה או כתובת URL עשירה) וחותמת זמן, או
- תצוגה מקדימה של הסרטון (התמונה הממוזערת ומשך הסרטון) וחותמת הזמן
אינטראקציות
- ספירה ו- תווית בלבד, או
- ספירה ו- ויזואלי (סמל)
הכנה לעבודה
רמת 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 (PortraitMediaEntity , או
SocialPostEntity ) |
25 לכל היותר (PortraitMediaEntity , או
SocialPostEntity ) |
שלב 1: מסירת נתוני הישות
ב-SDK הוגדרו ישויות שונות שמייצגות כל סוג פריט. ה-SDK תומכת בישויות הבאות עבור הקטגוריה 'רשתות חברתיות':
PortraitMediaEntity
SocialPostEntity
בתרשימים הבאים מפורטים המאפיינים והדרישות הזמינים לכל סוג.
PortraitMediaEntity
מאפיין | דרישה | תיאור | פורמט |
---|---|---|---|
URI של פעולה | חובה |
קישור עומק לישות באפליקציית הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך. אפשר לעיין בשאלות הנפוצות האלה |
URI |
פרסום מטא-נתונים קשורים (חובה) | |||
תמונות | חובה |
התמונות צריכות להיות ביחס גובה-רוחב לאורך. אם מספקים כמה תמונות, בממשק המשתמש יכולה להופיע רק תמונה אחת. אבל, לפעמים ממשק המשתמש עשוי לספק אינדיקציה ויזואלית לכך שיש יותר תמונות אפליקציה. אם הפוסט הוא סרטון, הספק צריך לספק תמונה ממוזערת של הסרטון שיוצג כתמונה. |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
תוכן הטקסט | אופציונלי | הטקסט הראשי של פוסט, עדכון וכו'. | מחרוזת (מומלץ להשתמש באורך של 140 תווים לכל היותר) |
חותמת זמן | אופציונלי | השעה שבה פורסם הפוסט | חותמת זמן של תקופה מסוימת באלפיות השנייה |
תוכן וידאו | אופציונלי | האם הפוסט הוא סרטון? | בוליאני |
משך הסרטון | אופציונלי | משך הסרטון באלפיות השנייה. | ארוך |
מטא-נתונים שקשורים לפרופיל (אופציונלי) | |||
שם | חובה | שם, מזהה או כינוי פרופיל, למשל 'ישראל', ' @TeamPixel' | מחרוזת(מומלץ להשתמש באורך של 25 תווים לכל היותר) |
דמות | חובה |
תמונת הפרופיל או תמונת דמות של המשתמש. תמונה ריבועית ביחס 1:1 |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
תמונה נוספת | אופציונלי |
תג פרופיל. לדוגמה – תג מאומת תמונה ריבועית ביחס 1:1 |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
מטא-נתונים שקשורים לאינטראקציות (אופציונלי) | |||
ספירה | אופציונלי |
מציינים את מספר האינטראקציות, למשל - '3.7 M.'. הערה: אם תספקו גם את ערך הספירה וגם את ערך הספירה, המערכת תשתמש בספירה |
מחרוזת גודל טקסט מומלץ: עד 20 תווים לספירה + התווית משולב |
ערך הספירה | אופציונלי | מספר האינטראקציות כערך. הערה: צריך לציין ערך ספירה במקום ספירה אם האפליקציה לא מטפלת בלוגיקה לגבי מספר גדול צריכה להיות אופטימלית לגדלי תצוגה שונים. אם שתי האפשרויות נספרות ונבחר ערך ספירה, המערכת תשתמש בספירה. |
ארוך |
לייבל | אופציונלי | לציין למה מיועדת תווית האינטראקציה. לדוגמה – 'לייקים'. | מחרוזת גודל טקסט מומלץ: עד 20 תווים לספירה + התווית משולב |
ויזואלי | אופציונלי |
מציינים למה מיועדת האינטראקציה. לדוגמה – תמונה מוצגת סמל של לייקים, אמוג'י. אפשר להוסיף יותר מתמונה אחת, אבל לא בטוח שכולן יוצגו בכל התמונות גורמי צורה. הערה: התמונה חייבת להיות ריבועית ביחס של 1:1 |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
DisplayTimeWindow (אופציונלי) – הגדרת חלון זמן להצגת תוכן בפלטפורמה | |||
חותמת זמן ההתחלה | אופציונלי |
חותמת הזמן של התקופה שאחריה התוכן אמור להיות מוצג פלטפורמה. אם המדיניות לא מוגדרת, התוכן יכול להופיע בפלטפורמה. |
חותמת זמן של תקופה מסוימת באלפיות השנייה |
חותמת זמן של סיום | אופציונלי |
חותמת הזמן של התקופה שאחריה התוכן כבר לא מוצג את פני השטח. אם המדיניות לא מוגדרת, התוכן יכול להופיע בפלטפורמה. |
חותמת זמן של תקופה מסוימת באלפיות השנייה |
SocialPostEntity
מאפיין | דרישה | תיאור | פורמט |
---|---|---|---|
URI של פעולה | חובה |
קישור עומק לישות באפליקציית הספק. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך. אפשר לעיין בשאלות הנפוצות האלה |
URI |
פרסום מטא-נתונים קשורים (חובה) חובה למלא לפחות אחד מהשדות TextContent, תמונה או WebContent |
|||
תמונות | אופציונלי |
התמונות צריכות להיות ביחס גובה-רוחב לאורך. אם מספקים כמה תמונות, בממשק המשתמש יכולה להופיע רק תמונה אחת. אבל, לפעמים ממשק המשתמש עשוי לספק אינדיקציה ויזואלית לכך שיש יותר תמונות אפליקציה. אם הפוסט הוא סרטון, הספק צריך לספק תמונה ממוזערת של הסרטון שיוצג כתמונה. |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
תוכן הטקסט | אופציונלי | הטקסט הראשי של פוסט, עדכון וכו'. | מחרוזת (מומלץ להשתמש באורך של 140 תווים לכל היותר) |
תוכן וידאו (אופציונלי) | |||
משך הזמן | חובה | משך הסרטון באלפיות השנייה. | ארוך |
תמונה | חובה | תצוגה מקדימה של תוכן הסרטון. | לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
תצוגה מקדימה של קישור (אופציונלי) | |||
תצוגה מקדימה של קישור – שם | חובה | טקסט שמציין את כותרת התוכן של דף האינטרנט | מחרוזת |
תצוגה מקדימה של קישור – שם מארח | חובה | טקסט לציון הבעלים של דף האינטרנט, למשל "INSIDER" | מחרוזת |
תצוגה מקדימה של קישור – תמונה | אופציונלי | תמונה ראשית (Hero) לתוכן באינטרנט | לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
חותמת זמן | אופציונלי | השעה שבה פורסם הפוסט | חותמת זמן של תקופה מסוימת באלפיות השנייה |
מטא-נתונים שקשורים לפרופיל (אופציונלי) | |||
שם | חובה | שם, מזהה או כינוי פרופיל, למשל 'ישראלי', ' @TeamPixel'. | מחרוזת(מומלץ להשתמש באורך של 25 תווים לכל היותר) |
טקסט נוסף | אופציונלי |
יכול לשמש כמזהה פרופיל, ככינוי או כמטא-נתונים נוספים לדוגמה, ' @John-Doe', '5 מיליון עוקבים', 'אולי יעניין אותך', 'פופולרי', "5 פוסטים חדשים" |
מחרוזת(מומלץ: עד 40 תווים) |
דמות | חובה |
תמונת הפרופיל או תמונת דמות של המשתמש. תמונה ריבועית ביחס 1:1 |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
תמונה נוספת | אופציונלי |
תג פרופיל, לדוגמה - תג מאומת תמונה ריבועית ביחס 1:1 |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
מטא-נתונים שקשורים לאינטראקציות (אופציונלי) | |||
ספירה | חובה | מציין את מספר האינטראקציות, לדוגמה - '3.7 M.' | מחרוזת (מומלץ להשתמש באורך של עד 20 תווים לספירה יחד עם התווית ביחד) |
לייבל |
אופציונלי אם לא, יש לספק ערך ויזואלי. |
מציינים למה מיועדת האינטראקציה. לדוגמה – 'לייקים'. | מחרוזת (מומלץ להשתמש באורך של עד 20 תווים לספירה יחד עם התווית ביחד) |
ויזואלי |
אופציונלי אם המאפיין לא סופק, יש לספק תווית. |
מציינים למה מיועדת האינטראקציה. לדוגמה – תמונה עם סמל של לייקים, אמוג'י. אפשר להוסיף יותר מתמונה אחת, אבל לא בטוח שכולן יוצגו בכל התמונות גורמי צורה. תמונה ריבועית ביחס 1:1 |
לקבלת הנחיות, אפשר לעיין במפרטי תמונות. |
DisplayTimeWindow (אופציונלי) – הגדרת חלון זמן להצגת תוכן בפלטפורמה | |||
חותמת זמן ההתחלה | אופציונלי |
חותמת הזמן של התקופה שאחריה התוכן אמור להיות מוצג פלטפורמה. אם המדיניות לא מוגדרת, התוכן יכול להופיע בפלטפורמה. |
חותמת זמן של תקופה מסוימת באלפיות השנייה |
חותמת זמן של סיום | אופציונלי |
חותמת הזמן של התקופה שאחריה התוכן כבר לא מוצג את פני השטח. אם המדיניות לא מוגדרת, התוכן יכול להופיע בפלטפורמה. |
חותמת זמן של תקופה מסוימת באלפיות השנייה |
מפרט לתמונות
התמונות נדרשות להתארח ברשתות CDN ציבוריות כדי ש-Google תוכל לגשת אותם.
פורמטים של קבצים
PNG, JPG, GIF סטטי, WebP
גודל קובץ מקסימלי
5,120KB
המלצות נוספות
- האזור הבטוח של התמונות: צריך למקם את התוכן החשוב ב-80% המרכזיים של תמונה.
- השתמשו ברקע שקוף כדי שניתן יהיה להציג את התמונה כראוי הגדרות של עיצוב כהה ועיצוב בהיר.
שלב 2: מספקים נתוני אשכול
מומלץ לבצע את משימת פרסום התוכן ברקע (לדוגמה, באמצעות WorkManager) והם מתוזמנים על בסיס קבוע או על בסיס אירוע (לדוגמה, בכל פעם אם המשתמש פותח את האפליקציה או אם המשתמש בדיוק עקב אחרי חשבון חדש)
AppEngageSocialClient
אחראי לפרסום אשכולות חברתיים.
יש ממשקי ה-API הבאים לפרסום אשכולות בלקוח:
isServiceAvailable
publishRecommendationClusters
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteUserManagementCluster
deleteClusters
isServiceAvailable
ה-API הזה משמש כדי לבדוק אם השירות זמין לשילוב, האם ניתן להציג את התוכן במכשיר.
Kotlin
client.isServiceAvailable.addOnCompleteListener { task - > if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content // publish calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
Java
client.isServiceAvailable().addOnCompleteListener(task - >{ if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content // publish calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
ה-API הזה משמש לפרסום רשימה של RecommendationCluster
אובייקטים.
אובייקט RecommendationCluster
יכול לכלול את המאפיינים הבאים:
מאפיין | דרישה | תיאור |
---|---|---|
רשימת SocialPostEntity או PortraitMediaEntity | חובה | רשימת הישויות שמהן מורכבות ההמלצות אשכול המלצות. ישויות באשכול אחד חייבות להיות זהות מהסוג הזה. |
כותרת | חובה | הכותרת של אשכול ההמלצות (לדוגמה, התוצאות האחרונות) מהחברים שלך). גודל טקסט מומלץ: פחות מ-25 תווים (טקסט אם הטקסט ארוך מדי, ייתכן שיוצגו שלוש נקודות) |
כותרת משנה | אופציונלי | כותרת המשנה של אשכול ההמלצות. |
URI של פעולה | אופציונלי |
קישור העומק לדף באפליקציית השותף שבו המשתמשים יכולים לראות את רשימת ההמלצות המלאה. הערה: אפשר להשתמש בקישורי עומק לצורך שיוך. אפשר לעיין בשאלות הנפוצות האלה |
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Latest from your friends") .build()) .build())
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Latest from your friends") .build()) .build());
כשהשירות מקבל את הבקשה, הפעולות הבאות מתרחשות בתוך עסקה אחת:
- כל הנתונים הקיימים של אשכול ההמלצות יוסרו.
- הנתונים מהבקשה מנותחים ונשמרים באשכולות המלצות חדשים.
במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים מתוחזקת.
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();
כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים אשכולות של המלצות. במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.
deleteUserManagementCluster
ה-API הזה משמש למחיקת התוכן של אשכול UserAccountManagement.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים אשכול UserAccountManagement. במקרה של שגיאה, הבקשה כולה נדחה והמצב הקיים נשמר.
deleteClusters
ה-API הזה משמש למחיקת התוכן של סוג אשכול נתון.
Kotlin
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_RECOMMENDATION) ... .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_RECOMMENDATION) ... .build());
כשהשירות מקבל את הבקשה, הוא מסיר את הנתונים הקיימים מכל אשכולות שתואמים לסוגי האשכולות שצוינו. הלקוחות יכולים לבחור להעביר הרבה סוגים של אשכולות. במקרה של שגיאה, הבקשה כולה נדחית המצב הקיים נשמר.
טיפול בשגיאות
מומלץ מאוד להאזין לתוצאת המשימה מממשקי ה-API לפרסום, שניתן לבצע פעולת המשך כדי לשחזר משימה מוצלחת ולשלוח אותה מחדש.
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(...)
.build())
.addOnCompleteListener(
task -> {
if (task.isSuccessful()) {
// do something
} else {
Exception exception = task.getException();
if (exception instanceof AppEngageException) {
@AppEngageErrorCode
int errorCode = ((AppEngageException) exception).getErrorCode();
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
});
השגיאה מוחזרת בתור AppEngageException
עם הסיבה
קוד שגיאה.
קוד שגיאה | הערה |
---|---|
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()
. כך מתאפשרת תקשורת מאפליקציות שעדיין קיימים בזיכרון.
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION 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));
}
- הצהרה סטטית על יישום עם התג
<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>
</receiver>
</application>
הכוונות הבאות יישלחו על ידי service:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
מומלץ להתחיל שיחתpublishRecommendationClusters
כאשר לקבל את הכוונה הזאת.
תהליך עבודה של שילוב
למדריך מפורט על אימות השילוב לאחר השלמתו, אפשר לעיין במאמר ליצור מעורבות בתהליך העבודה של השילוב למפתחים.
שאלות נפוצות
ניתן לעיין בשאלות נפוצות בנושא Engage SDK בנושא שאלות נפוצות.
יצירת קשר
פרטים ליצירת קשר engagement-developers@google.com, אם יש בזמן תהליך ההטמעה. הצוות שלנו יחזור אליך בהקדם ככל האפשר.
השלבים הבאים
לאחר השלמת השילוב, השלבים הבאים הם:
- שליחת אימייל אל engagement-developers@google.com וצירוף המסמך את ה-APK המשולב שמוכן לבדיקה על ידי Google.
- Google מבצעת אימות ובדיקות פנימיות כדי לוודא פועל כמצופה. אם יהיה צורך בשינויים, Google תיצור איתך קשר את כל הפרטים הנדרשים.
- כשהבדיקה תסתיים ואין צורך בשינויים, Google תיצור איתך קשר כדי תודיע לך שאתה יכול להתחיל לפרסם את ה-APK המעודכן והמשולב חנות Play.
- לאחר ש-Google אישרה שה-APK המעודכן פורסם חנות Play, ההמלצה שלך והאשכולות שלך יפורסמו ויהיו גלויים ל: משתמשים.