MST
星途 面试题库

面试题:Flutter中iOS和Android网络请求差异之基础分析

请阐述在Flutter应用开发中,iOS和Android平台在网络请求时,可能因为系统设置差异导致的网络请求行为不同点有哪些?
19.1万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试
  • 证书校验
    • iOS:对证书校验较为严格,默认情况下只信任系统认可的证书颁发机构(CA)所签发的证书。若请求的服务器证书不被系统信任,网络请求会失败,除非开发者手动配置信任自签名证书等非标准证书,通常需要在 Info.plist 文件中进行相关配置。
    • Android:在证书校验方面相对灵活一些。从Android 7.0(API 24)开始,默认行为有所收紧,但仍有多种方式可以处理不被系统信任的证书,比如在应用层通过 OkHttp 等网络库自定义证书校验逻辑。
  • 网络代理设置
    • iOS:iOS系统代理设置分为全局代理和针对特定应用的代理设置。应用内网络请求会遵循系统的全局代理设置,若设置了全局代理,Flutter应用的网络请求会通过该代理进行。但iOS应用无法直接修改系统代理设置,只能提示用户前往系统设置界面进行操作。
    • Android:Android同样支持系统级代理设置,应用网络请求默认遵循此设置。并且在某些场景下,Android应用可以通过代码动态设置代理(需特定权限),如在 OkHttp 中通过 Proxy 类进行配置,这使得Android应用在处理代理方面比iOS应用有更多的灵活性。
  • 网络类型及切换处理
    • iOS:iOS系统对于不同网络类型(如Wi-Fi、蜂窝网络)的切换处理相对简洁,网络请求会随着网络类型的切换自动进行相应调整。但开发者需要注意,当网络从一种类型切换到另一种类型时,可能会出现短暂的网络中断,需要在应用层面进行适当的重试机制等处理。
    • Android:Android系统对网络类型的管理更为细致,不同的网络类型可能对应不同的网络策略。例如,某些Android设备可以设置仅在Wi-Fi下进行数据传输等策略。在网络切换时,Android应用需要通过注册 ConnectivityManager 的广播来监听网络变化,以便及时处理网络请求的中断与恢复,相较于iOS,开发者需要更多地关注网络状态变化的监听与处理逻辑。
  • 后台网络请求
    • iOS:iOS对后台网络请求有严格的限制和规范。应用进入后台后,网络请求通常会被暂停,只有满足特定条件(如使用 NSURLSession 的后台会话配置,并在 Info.plist 中声明相应的后台模式)的网络请求才能继续在后台运行。但即使满足条件,后台网络请求的资源使用也受到系统严格管控,以节省电量和系统资源。
    • Android:Android在后台网络请求方面相对宽松,但也随着版本的更新有所限制。应用在后台时,默认情况下网络请求可以继续进行,但从Android 8.0(API 26)开始,引入了“后台执行限制”,对于在后台运行的应用,网络请求的执行会受到一定影响。开发者需要使用 JobScheduler 等机制来处理后台网络任务,以确保应用在后台时网络请求能按照期望的方式运行,同时满足系统的节能等要求。