面试题答案
一键面试- 证书校验:
- iOS:对证书校验较为严格,默认情况下只信任系统认可的证书颁发机构(CA)所签发的证书。若请求的服务器证书不被系统信任,网络请求会失败,除非开发者手动配置信任自签名证书等非标准证书,通常需要在
Info.plist
文件中进行相关配置。 - Android:在证书校验方面相对灵活一些。从Android 7.0(API 24)开始,默认行为有所收紧,但仍有多种方式可以处理不被系统信任的证书,比如在应用层通过
OkHttp
等网络库自定义证书校验逻辑。
- iOS:对证书校验较为严格,默认情况下只信任系统认可的证书颁发机构(CA)所签发的证书。若请求的服务器证书不被系统信任,网络请求会失败,除非开发者手动配置信任自签名证书等非标准证书,通常需要在
- 网络代理设置:
- 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
等机制来处理后台网络任务,以确保应用在后台时网络请求能按照期望的方式运行,同时满足系统的节能等要求。
- iOS:iOS对后台网络请求有严格的限制和规范。应用进入后台后,网络请求通常会被暂停,只有满足特定条件(如使用