iOS中有INTERNET权限吗



我在iOS设备上遇到了一个用于flutter的dio包的奇怪问题。我写了一个应用程序,它向url发送GET请求。一切都在安卓系统上运行良好,但在iOS系统上似乎无法通过请求。什么都没发生,什么都没有。我在android上也遇到了同样的问题,但我发现我忘了在清单文件中添加INTERNET权限。我猜iOS中也会出现同样的情况。

我需要在iOS中添加info.plist吗?

void _checkVersionAndPreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String prefsRes = prefs.getString('access_token') ?? '';
String buildNumber = _packageInfo.buildNumber ?? '1';
Dio dio = Dio();
_cancelToken = CancelToken();
Future.delayed(Duration(seconds: 10), () {
if (_getRequestSuccess == false) {
_cancelToken.cancel();
_checkVersionAndPreferences();
_showSnackBar(
content: 'تلاش مجدد برای برقراری ارتباط',
duration: Duration(seconds: 3),
leading: Icon(Icons.refresh, color: Colors.black));
}
});
Response response = await dio.get(
'https://snapmelk.com/api/v1/panel/checkVersion/' + buildNumber,
cancelToken: _cancelToken);
try {
Map respJson = jsonDecode(response.data);
setState(() {
_getRequestSuccess = true;
});
if (respJson['error']) {
_showSnackBar(
content:
(respJson['errorMsg'] != null && respJson['errorMsg'] != '')
? respJson['errorMsg']
: 'خطا در اتصال دریافت اطلاعات آخرین نسخه',
leading: Icon(Icons.warning),
backgroundColor: Colors.red,
textColor: Colors.white);
} else {
if (respJson['NewUpdate']) {
_checkDialogAnswer(respJson, prefsRes);
} else {
_checkPrefs(prefsRes);
}
}
} catch (e) {
_showSnackBar(
content: 'خطا در اتصال با سرور. لطفا در زمانی دیگر مراجعه کنید',
leading: Icon(Icons.warning),
backgroundColor: Colors.red,
textColor: Colors.white);
}
}

使用dio时,您不需要在Flutter中为iOS定义网络权限。为了调试,我建议使用debugPrint(${response.data});记录已执行请求的响应,或者如果使用dio的请求本身可能会引发错误,您可能还需要考虑将其封装在try-catch块中。

最新更新