הוספת יכולות של רשת 5G לאפליקציה

ב-Android 11 נוספה פונקציונליות לתמיכה ב-5G באפליקציות. במאמר הזה נסביר על הפונקציונליות ונספק סקירה כללית על האופן שבו הוספת פונקציונליות ספציפית ל-5G לאפליקציה יכולה לשפר את חוויית המשתמש.

פיתוח ל-5G

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

  • השיפורים במהירות ובזמן האחזור של 5G מאפשרים לשפר את חוויית השימוש הנוכחית באופן אוטומטי.
  • לשפר את חוויית המשתמש, למשל על ידי הצגת סרטון באיכות 4K או הורדה של נכסי משחק ברזולוציה גבוהה יותר.
  • אחרי שמוודאים שהשימוש המוגבר בחבילת הגלישה לא יעלה למשתמש כסף, אפשר לכלול חוויות שזמינות בדרך כלל רק ב-Wi-Fi, כמו הורדה יזומה של תוכן ששמור בדרך כלל ל-Wi-Fi ללא הגבלת נפח.
  • לספק חוויות ייחודיות ל-5G שפועלות רק במהירויות גבוהות ובזמן אחזור נמוך.

פונקציונליות של 5G

‫Android 11 כוללת את השינויים והשיפורים הבאים בפונקציונליות:

בדיקת החיבורים לפי נפח

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

הדגל החדש משמש לצד NET_CAPABILITY_NOT_METERED. הדגל הקיים מציין אם רשת מסוימת היא תמיד ללא הגבלה, והוא חל על חיבורי Wi-Fi ועל חיבורים סלולריים.

ההבדל בין שני הדגלים הוא NET_CAPABILITY_TEMPORARILY_NOT_METERED יכול להשתנות בלי שסוג הרשת ישתנה. אפליקציות שמטרגטות את Android 11 יכולות להשתמש בדגל NET_CAPABILITY_TEMPORARILY_NOT_METERED. במכשירים שפועלת בהם מערכת Android מגרסה 9 ומטה, מערכת ההפעלה לא תדווח על הדגל. יכול להיות שהדגל הזה יהיה זמין באפליקציות שפועלות ב-Android 10, בהתאם למכשיר שבו הן פועלות.

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

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

רישום של קריאה חוזרת (callback) ברשת

להירשם לקבלת התקשרות חוזרת ברשת באמצעות ConnectivityManager.registerDefaultNetworkCallback() כדי לשמוע מתי NetworkCapabilities משתנה. כדי לזהות שינויים ב-NetworkCapabilities, צריך לבטל את השיטה onCapabilitiesChanged() ב-NetworkCallback.

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

בדיקה של חיבורים לפי נפח

משתמשים באובייקט NetworkCapabilites שמתקבל בקריאה חוזרת (callback) ברשת כדי לבדוק את הפלט של הקוד הבא:

Kotlin

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

Java

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

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

שיקולים נוספים

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

  • כדי להשתמש בדגל NET_CAPABILITY_TEMPORARILY_NOT_METERED, צריך לקמפל את האפליקציה מול Android 11 SDK.

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

  • לעומת זאת, NET_CAPABILITY_TEMPORARILY_NOT_METERED יכול להשתנות ברשת בלי להתנתק. לכן, האפליקציות צריכות להאזין לקריאה החוזרת (callback) onCapabilitiesChanged() כדי לטפל במצב שבו הרשת חוזרת למצב של חיוב לפי נפח (מאבדת את היכולת NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • רשת לא יכולה לכלול את המיקומים NET_CAPABILITY_NOT_METERED ו-NET_CAPABILITY_TEMPORARILY_NOT_METERED בו-זמנית.

זיהוי 5G

החל מ-Android 11, אפשר לזהות אם המכשיר מחובר לרשת 5G באמצעות קריאה ל-API מבוססת-callback. אפשר לבדוק אם החיבור הוא לרשת 5G NR (עצמאית) או לרשת NSA (לא עצמאית).

דוגמאות לשימוש בקריאה הזו ל-API:

  • הצגת מיתוג של 5G באפליקציה כדי להדגיש שאתם מציעים חוויית 5G ייחודית.

  • הפעלת חוויית 5G ייחודית באפליקציה רק כשמחוברים לרשת 5G. מומלץ לבדוק את הסטטוס הזה יחד עם בדיקה של שימוש לפי נפח.

  • מעקב אחר חיבורים ל-5G למטרות ניתוח נתונים.

כדי לבדוק את הזיהוי של 5G בלי מכשיר 5G, אפשר להשתמש בתכונות שנוספו לאמולטור של Android SDK.

זיהוי של 5G

מתקשרים אל TelephonyManager.listen(), מעבירים את LISTEN_DISPLAY_INFO_CHANGED, כדי לקבוע אם למשתמש יש חיבור לרשת 5G. משנים את ברירת המחדל של ה-method‏ onDisplayInfoChanged() כדי לקבוע את סוג הרשת שבה משתמשים למטרות הצגה. יוצא מן הכלל הוא שאם הספק בוחר להציג 5G כ-RAT עבור רשת mmWave שלו, מוחזר OVERRIDE_NETWORK_TYPE_NR_NSA.

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

סוג ההחזרה רשת
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced pro LTE (5Ge)‎
OVERRIDE_NETWORK_TYPE_NR_NSA ‫NR‏ (5G) לרשתות 5G Sub-6
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE ‫(5G+/5G UW) לרשתות 5G mmWave

הערכה של רוחב הפס

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

המהימנות והדיוק של שיטות הערכת רוחב הפס getLinkDownstreamBandwidthKbps() ו-getLinkUpstreamBandwidthKbps() משתפרים ב-Android 11 בעקבות שדרוגים לתמיכה במסגרת ותיקוני באגים בפלטפורמה או במודם, כדי להתאים ל-5G.

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