הזמנה לשדרוג ל-Android

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

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

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

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

בדף יצירת הקשר או הקהילה אפשר לקרוא איך לבקש רישיון ל-GMS.

התאמה אישית של חוויית ההזמנה לשדרוג

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

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

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

שדרוג מדריך הסגנון של ההזמנה

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

תהליך השדרוג כולל את שלושת הרכיבים הבאים:

  • מסך הפתיחה
  • מסך התכונות
  • מסך סיום
תרשים 1. שלושת סוגי המסכים בתהליך ההזמנה לשדרוג

אנימציה בכל מסך עוזרת להסביר כל תכונה.

מסך הפתיחה

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

פריסה
איור 2. פריסת Wireframe למסך ההיכרות של ההזמנה לשדרוג

האנימציה של המכשיר תמיד כוללת:

  • רקע לבן וצורות צבעוניות
  • מסגרת מכשיר
  • תוכן ממשק המשתמש
עיצוב

אם בוחרים להתאים את העיצוב של Material You, אפשר להשתמש בצבעים ובצורות שמופיעים בדוגמה.

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

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

תנועה

אפשרות 1: עם שעון במסך הבית

  1. מספרים נכנסים למסך.
  2. המספרים עוברים למרכז וגודלם קטן. יופיע מסגרת של טלפון נייד.
  3. הטלפון הולך וקטן. הצורות מתחילות להיכנס למסך.
  4. האנימציה מסתיימת. הצורות ממשיכות לנוע בעדינות.
איור 4. פריסת Wireframe של אנימציית מסך הפתיחה של ההזמנה לשדרוג עם שעון.
איור 5. אנימציה לדוגמה למסך הפתיחה עם שעון.

אפשרות 2: אין שעון במסך הבית

  1. הטלפון הנייד נכנס למסך.
  2. הטלפון זז למרכז וגדל. הצורות מתחילות להיכנס למסך.
  3. הטלפון מגיע לגודל המקסימלי והצורות ממשיכות לנוע.
איור 6. פריסת Wireframe להזמנה לשדרוג אנימציה של מסך הפתיחה בלי שעון.
איור 7. דוגמה לאנימציה למסך הפתיחה ללא שעון.

מסך התכונות

בכל מסך של תכונה מודגשת תכונה במערכת ההפעלה החדשה.

פריסה
איור 8. פריסת Wireframe למסכים של התכונה 'הזמנה לשדרוג'.

האנימציה של המכשיר תמיד כוללת:

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

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

מסך סיום

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

פריסה
איור 9. פריסת Wireframe למסך הסיום של ההזמנה לשדרוג.

האנימציה של המכשיר תמיד כוללת:

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

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

  1. הטלפון הנייד זז קצת למעלה.
  2. עיגול מופיע ברקע.
  3. צורות עולות מאחורי הטלפון הנייד.
  4. הצורות עפות מהרקע כמו קונפטי.
איור 10. פריסת Wireframe לאנימציה של מסך הסיום של ההזמנה לשדרוג.
איור 11. דוגמה לאנימציה של מסך סיום.

בדיקת תהליך ההזמנה לשדרוג

  1. במכשיר Android, עוברים אל: הגדרות > Google > שדרוג ניפוי הבאגים של Party.
  2. הכנת הטריגר להזמנה לשדרוג עבור מערכת ההפעלה הרלוונטית במכשיר (בהתאם לגרסה הנוכחית של מערכת ההפעלה ולזרימת ההזמנה הספציפית לשדרוג שרוצים לבדוק). אחת משתי האפשרויות:
    1. לוחצים על Write Fake upgrade (current version) (כתיבת שדרוג מזויף (הגרסה הנוכחית)). (לדוגמה, אם מריצים את מערכת ההפעלה Android 13, יופעל תהליך הבדיקה של Android 13)
    2. לוחצים על Write pending upgrade (current version + 1) (כתיבת שדרוג בהמתנה (הגרסה הנוכחית + 1)). (לדוגמה, אם מריצים Android 12 OS, יופעל תהליך הבדיקה של Android 13)
    3. לוחצים על דיווח על שדרוג מערכת ההפעלה.
  3. לוחצים על ההתראה שהתקבלה או על פתיחת ההזמנה לשדרוג.

אפשרויות להפעלת ההזמנה לשדרוג

יש 3 דרכים שונות להפעלת תהליך השדרוג: ‫1. אוטומטי ‫2. שידור ‫3. הופעל Play Services SDK

אוטומטי – התראה שהופעלה על ידי Google (רק למכשירים שמופעלת בהם gOTA)

במכשירי OEM שמופעלת בהם gOTA, ההטמעה מתבצעת באופן אוטומטי ולא נדרשים שלבים להטמעת הזמנה לשדרוג. אם מזוהה שדרוג משמעותי של מערכת ההפעלה שממתין להתקנה, תישלח למכשיר הודעת פוש מ-Google Play Services, שתפנה את המשתמשים לתהליך של הזמנה לשדרוג.

שידור ב-Android – התראה שהופעלה על ידי Google (מומלץ)

שידור באפליקציה הוא הדרך הפשוטה והמומלצת לשילוב תהליך ההזמנה לשדרוג.

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

דרישות מוקדמות לשידור

כדי להכין את האפליקציה, פועלים לפי השלבים בקטעים הבאים.

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

  • ‫minSdkVersion ‏14 ואילך
  • ‫compileSdkVersion בגרסה 28 ומעלה
  • ‫usesPermission של android.permission.RECOVERY

שליחת השידור

בהמשך מפורטות ההוראות לאפליקציית ה-OEM (או לקוד) לשליחת שידור ב-Android כדי להפעיל את ההתראה בדחיפה:

  1. שליחת ההודעה לכל המשפחה עם הפעולה.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. הוספת חבילת com.google.android.gms לשידור.

    com.google.android.gms
    

דרישות נוספות

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

כדי שהפעולה הזו תפעל, צריך לחשוף כוונה מותאמת אישית ש-Google יכולה להפעיל מתוך תהליך ההזמנה לשדרוג, שגורם להורדה של העדכון.

דוגמה לשימוש בהודעה לכולם

דוגמה לשידור של אפליקציה:

Context context = getApplicationContext();
Intent upgradeInviteIntent = new Intent()
  .setAction( "com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE")
  .setPackage("com.google.android.gms");
  .putExtra("com.google.android.gms.growth.upgradeparty.upgradeinvite.EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER", 14);

context.sendBroadcast(updateIntent);

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

‫Play Services SDK – הפעלת התהליך בלבד

ערכת ה-SDK של צד שלישי מאפשרת להפעיל את תהליך השדרוג מהאפליקציה או מההתראות שלכם על עדכונים דרך האוויר (OTA). משתמשים ב-API חיצוני של צד שלישי כדי להפעיל את תהליך השדרוג. השיטה הזו פחות מומלצת.

דרישות מוקדמות

כדי להכין את האפליקציה, פועלים לפי השלבים בקטעים הבאים.

מוודאים שקובץ ה-build של האפליקציה כולל את הערכים הבאים:

  • ‫minSdkVersion ‏14 ואילך
  • ‫compileSdkVersion בגרסה 28 ומעלה

הגדרת האפליקציה

כדי להגדיר את האפליקציה:

1. Extract the library from the provided .zip file, and place it in your

מאגר. 2. מוסיפים את התלויות של Google Growth SDK לקובץ Gradle ברמת האפליקציה של המודול, שבדרך כלל נמצא ב-app/build.gradle:

   dependencies {
    implementation files(&<#39;PATH_TO_BI>NARY/play-services-growth-16.1.0-eap04.aar';)
   }
  1. כדי לספק את התלויות של הלקוח, צריך לכלול את הספריות הבאות:

    com.google.android.gms:play-services-base:18.0.1
    com.google.android.gms:play-services-basement:18.0.0
    com.google.android.gms:play-services-tasks:18.0.1
    

הפעלה ראשונית של API

  1. כדי לאתחל לקוח, משתמשים במחלקה UpgradeParty:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. פרמטר הפעילות צריך להיות אובייקט הפעילות שיוזם את הפעולה.

פונקציות API

הפונקציונליות הבאה נחשפת ב-UpgradePartyClient שמתקבל.

isEligibleForUpgradeInvite

import com.google.android.gms.growth.UpgradeInviteEligibilityParams;

Task<Boolean> isEligibleForUpgradeInvite(UpgradeInviteEligibilityParams params);

/** Contains parameters for the eligibility query. */
class UpgradeInviteEligibilityParams {


/** Integer indicating the pending OS version (in this example, the Android version to be installed is 14). This is used to determine which Upgrade Invite flow will be triggered. */
  int pendingAndroidOsVersionNumber;
}

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

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

מפעיל את הפעילות 'הזמנה לשדרוג'. אובייקט ה-Task שמתקבל מציין אם אירעה שגיאה בהתחלת הפעילות.

קודי שגיאה

יכול להיות ששתי שיטות ה-API ייכשלו עם חריגה מהסוג com.google.android.gms.common.api.ApiException. במקרים כאלה, המתקשר צריך לנסות שוב מאוחר יותר. דוגמאות לקודי סטטוס נפוצים שצפויים:

  • INTERNAL_ERROR – לכל שגיאה בתהליך של הלוגיקה הבסיסית
  • TIMEOUT – אם לא ניתן לטפל בבקשה בזמן
  • API_NOT_CONNECTED – כשממשק ה-API לא זמין (כלומר, מודול UpgradeParty עדיין לא מוכן)
  • NETWORK_ERROR – לא ניתן לטפל בבקשה בגלל שגיאות ברשת
  • DEVELOPER_ERROR – לחבילה שמבצעת את הקריאה אין הרשאה לגשת ל-UpgradeParty API

דוגמה לשימוש ב-SDK

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;

public class SampleActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   final UpgradePartyClient client = UpgradeParty.getClient(this);

   // Hide the invocation button initially
   View startUpgradeInviteButton = findViewById(R.id.__some_button__);
   startUpgradeInviteButton.setVisibility(View.GONE);

   // Register an onClick handler to invoke the Upgrade Party Activity
   startUpgradeInviteButton
       .setOnClickListener(
           view -> {
             client
                 .invokeUpgradeInvite()
                 .addOnCompleteListener(
                     task -> {
                       if (!task.isSuccessful()) {
                         // Do something with error, see task.getException()
                       }
                     });
           });
   }

   // Check if eligible for an Upgrade Party
   client
       .isEligibleForUpgradeInvite()
       .addOnCompleteListener(
           task -> {
             if (!task.isSuccessful()) {
               // Do something with error, see task.getException()
             } else {
                  // Show/Hide invocation button, based on the result
                  int visibility = 
                        task.getResult() ? View.VISIBLE : View.GONE;
                  startUpgradeInviteButton.setVisibility(visibility);
             }
           });
   }