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

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

registerDefaultNetworkCallback() גורם לקריאה החוזרת (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 עשוי להשתנות ברשת בלי להתנתק. לכן, האפליקציות צריכות להאזין לקריאה החוזרת 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. משנים את השיטה 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.

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