ב-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 שמשמש לקביעת השימוש בנתונים לפי תשלום. אפשר לקבל אומדנים של רוחב פס באמצעות האובייקט הזה.
ב-Android 11, שיפרנו את המהימנות והדיוק של שיטות ההערכה של רוחב הפס getLinkDownstreamBandwidthKbps() ו-getLinkUpstreamBandwidthKbps(). השיפורים האלה בוצעו בעקבות שדרוגים לתמיכה במסגרת ותיקוני באגים בפלטפורמה או במודם, כדי להתאים ל-5G.
הגדרות ברירת המחדל של רוחב הפס מספקות הנחיות רק לגבי הפעלת האפליקציה. ההגדרה הזו אמורה לעזור לכם בתרחיש של הפעלה בזמן שהמחשב לא פעיל. האפליקציה צריכה למדוד את מה שהיא רואה ברגע שהמשתמשים מתחילים ליצור אינטראקציה עם האפליקציה, ולשנות את התנהגות הסטרימינג שלה באופן דינמי. לדוגמה, יכול להיות שתבחרו את הרזולוציה של הסרטון שיוצג על סמך הערכת רוחב הפס בזמן ההפעלה. כדאי להמשיך לבדוק את ההערכות בזמן שהמשתמשים משתמשים באפליקציה. אם סוג החיבור והעוצמה שלו משתנים, צריך להתאים את אופן הפעולה של האפליקציה בהתאם.