قابلیت های 5G را به برنامه خود اضافه کنید

اندروید ۱۱ قابلیت‌هایی را برای پشتیبانی از ۵G به برنامه‌های شما اضافه می‌کند. این مبحث به بررسی این قابلیت‌ها می‌پردازد و به شما یک مرور کلی می‌دهد که چگونه افزودن قابلیت‌های خاص ۵G به برنامه شما می‌تواند تجربه کاربری را بهبود بخشد.

برای 5G بسازید

هنگام تصمیم‌گیری در مورد نحوه تعامل با 5G، به این فکر کنید که چه نوع تجربیاتی را می‌خواهید بسازید. برخی از راه‌هایی که 5G می‌تواند برنامه شما را بهبود بخشد عبارتند از:

  • به دلیل بهبود سرعت و تأخیر 5G، تجربیات فعلی را به طور خودکار سریع‌تر و بهتر کنید.
  • تجربه کاربری را ارتقا دهید، مثلاً با نمایش ویدیوهای 4k یا دانلود فایل‌های بازی با وضوح بالاتر.
  • پس از تأیید اینکه افزایش مصرف داده برای کاربر هزینه‌ای نخواهد داشت، قابلیت‌هایی را که معمولاً فقط از طریق وای‌فای ارائه می‌شوند، مانند دانلود فعال محتوا که معمولاً برای وای‌فای بدون محدودیت زمانی در نظر گرفته شده است، در نظر بگیرید.
  • تجربیات منحصر به فرد 5G را ارائه دهید که فقط با سرعت بالا و تأخیر کم کار می‌کنند.

عملکرد 5G

اندروید ۱۱ تغییرات و بهبودهای عملکردی زیر را معرفی می‌کند:

میزان اندازه‌گیری را بررسی کنید

قابلیت NET_CAPABILITY_TEMPORARILY_NOT_METERED در اندروید ۱۱ اضافه شده است و بر اساس اطلاعات ارائه شده توسط اپراتورهای تلفن همراه، به شما می‌گوید که آیا شبکه‌ای که از آن استفاده می‌کنید، بدون محدودیت مصرف است یا خیر.

این پرچم جدید در کنار NET_CAPABILITY_NOT_METERED استفاده می‌شود. پرچم موجود نشان می‌دهد که آیا یک شبکه همیشه بدون محدودیت مصرف است یا خیر و برای هر دو اتصال وای‌فای و تلفن همراه اعمال می‌شود.

تفاوت بین این دو پرچم این است که NET_CAPABILITY_TEMPORARILY_NOT_METERED ممکن است بدون تغییر نوع شبکه تغییر کند. برنامه‌هایی که اندروید ۱۱ را هدف قرار می‌دهند می‌توانند از پرچم NET_CAPABILITY_TEMPORARILY_NOT_METERED استفاده کنند. در دستگاه‌هایی که اندروید ۹ و پایین‌تر دارند، سیستم عامل در مورد این پرچم گزارش نمی‌دهد. برای برنامه‌هایی که اندروید ۱۰ را اجرا می‌کنند، بسته به دستگاهی که روی آن اجرا می‌شود، این پرچم ممکن است در دسترس باشد.

وقتی متوجه شدید که شبکه فعلی موقتاً یا دائماً بدون محدودیت مصرف است، می‌توانید محتوای با وضوح بالاتر (مانند ویدیوی 4k) را نمایش دهید، گزارش‌ها را آپلود کنید، از فایل‌ها پشتیبان بگیرید و به صورت پیشگیرانه محتوا را دانلود کنید.

بخش‌های زیر مراحل افزودن قابلیت بررسی میزان مصرف انرژی (meteredness-checking) به برنامه شما را پوشش می‌دهند.

ثبت تماس شبکه‌ای

با استفاده از ConnectivityManager.registerDefaultNetworkCallback() ‎ برای دریافت یک فراخوانی شبکه ثبت نام کنید تا زمان تغییر NetworkCapabilities را بشنوید. می‌توانید با بازنویسی متد onCapabilitiesChanged() ‎ در NetworkCallback خود، تغییرات در NetworkCapabilities را تشخیص دهید.

registerDefaultNetworkCallback() باعث می‌شود که تابع فراخوانی ثبت‌شده بلافاصله پس از ثبت فعال شود و اطلاعاتی در مورد وضعیت فعلی به برنامه ارائه دهد. فراخوانی‌های بعدی برای برنامه‌ها بسیار مهم هستند تا در صورت تغییر وضعیت از unmetered به metered یا برعکس، اقدامات مناسب را انجام دهند.

میزان اندازه‌گیری را بررسی کنید

از شیء NetworkCapabilites که در یک فراخوانی شبکه دریافت می‌کنید، برای بررسی خروجی کد زیر استفاده کنید:

کاتلین

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

جاوا

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

اگر مقدار آن درست باشد، می‌توانید شبکه را بدون محدودیت حجمی در نظر بگیرید.

ملاحظات اضافی

هنگام کار با این قابلیت، نکات زیر را در نظر داشته باشید:

  • استفاده از پرچم NET_CAPABILITY_TEMPORARILY_NOT_METERED مستلزم آن است که برنامه خود را با 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

از اندروید ۱۱ به بعد، می‌توانید با استفاده از یک فراخوانی API مبتنی بر فراخوانی مجدد، تشخیص دهید که آیا دستگاه به شبکه 5G متصل است یا خیر. می‌توانید بررسی کنید که آیا اتصال از نوع شبکه 5G NR (مستقل) است یا NSA (غیرمستقل).

برخی از کاربردهای این فراخوانی API ممکن است شامل موارد زیر باشد:

  • نمایش برند 5G در اپلیکیشن شما برای برجسته کردن اینکه شما یک تجربه منحصر به فرد 5G ارائه می‌دهید.

  • فعال کردن یک تجربه منحصر به فرد 5G در برنامه فقط در صورت اتصال به شبکه 5G. شما باید این بررسی وضعیت را با بررسی میزان مصرف (meteredness) مرتبط کنید.

  • پیگیری اتصالات 5G برای اهداف تحلیلی.

برای آزمایش تشخیص 5G بدون دستگاه 5G، می‌توانید از ویژگی‌های اضافه شده به شبیه‌ساز SDK اندروید استفاده کنید.

تشخیص 5G

برای تعیین اینکه آیا کاربر به شبکه 5G متصل است یا خیر، تابع TelephonyManager.listen() را فراخوانی کنید و LISTEN_DISPLAY_INFO_CHANGED به آن ارسال کنید. برای تعیین نوع شبکه مورد استفاده برای نمایش، متد onDisplayInfoChanged() را بازنویسی کنید. یک استثنا این است که اگر اپراتور تصمیم بگیرد 5G را به عنوان RAT برای شبکه mmWave خود نشان دهد، OVERRIDE_NETWORK_TYPE_NR_NSA بازگردانده می‌شود.

جدول زیر شبکه‌هایی را نشان می‌دهد که با مقادیر مطابقت دارند:

نوع بازگشتی شبکه
OVERRIDE_NETWORK_TYPE_LTE_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 استفاده می‌کند که هنگام تعیین meteredness با آن کار می‌کنید. می‌توانید با استفاده از آن شیء، تخمین پهنای باند را دریافت کنید.

قابلیت اطمینان و دقت روش‌های تخمین پهنای باند getLinkDownstreamBandwidthKbps() و getLinkUpstreamBandwidthKbps() در اندروید ۱۱ به دلیل ارتقاء پشتیبانی از چارچوب و رفع اشکالات پلتفرم/مودم برای سازگاری با ۵G بهبود یافته است.

پیش‌فرض‌های پهنای باند فقط راهنمایی‌هایی در مورد راه‌اندازی برنامه ارائه می‌دهند. این می‌تواند به شما در سناریوی «راه‌اندازی در حالت غیرفعال» کمک کند. برنامه شما باید آنچه را که پس از شروع تعامل کاربران با برنامه می‌بیند، اندازه‌گیری کند و رفتار پخش خود را به صورت پویا تنظیم کند. به عنوان مثال، می‌توانید وضوح ویدیویی را که قرار است ارائه دهید بر اساس تخمین پهنای باند در هنگام راه‌اندازی انتخاب کنید. همچنان که کاربران از برنامه استفاده می‌کنند، تخمین‌ها را بررسی کنید. با تغییر نوع و قدرت اتصال آنها، رفتار برنامه خود را بر اساس آن تنظیم کنید.