הוספת יכולות של רשת 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) ברשת

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

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

בדיקה אם החיבור נמדד

משתמשים באובייקט 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

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

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

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

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