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

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

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

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