关于iOS系统初次安装应用在同意网络前无法请求网络的问题解决,以及修复后,如何复现这种情况的方法。

问题

在中国发行的iPhone手机,有个单独的网络权限授权请求,用户点击“允许”之前,所有网络请求都是被禁止的。这就会导致应用的初始化过程中所有的请求数据都会失败。

ios-internet-permission-request

解决

在程序中增加初始化标志位,并监听网络状态变更,在收到网络变更事件时判断初始化是否失败,失败的情况下,重新进行网络相关的初始化。flutter 项目可以使用 connectivity_plus 插件来监听网络变化。

复现 网络权限授权请求 弹窗

经过以上的方法修改完代码后,需要进行测试,此时网络权限请求弹窗不会再次出现,即时删除应用重新安装也不会再出现,此时需要进入设置 - 蜂窝网络 - 找到你的应用,点击进入后选择关闭网络权限,此时再进入应用请求网络,就会弹出网络权限弹窗,更好的做法是设置关闭网络权限后,删除应用重新安装,模拟初次安装。

ios-internet-permission-request-dialog