iOS 有 INTERNET 权限吗?

Sep*_*izi 6 ios dart flutter dio

我在 iOS 设备上的 flutter dio 包上遇到了一个奇怪的问题。\ni 编写了一个向 url 发送 GET 请求的应用程序。在 Android 上一切正常,但在 iOS 上看起来请求没有通过。\n什么也没发生,没有错误,什么也没有。我在 Android 上也遇到了同样的问题,但我发现我忘记将 INTERNET 权限添加到我的清单文件中。我猜iOS也会发生同样的情况。

\n\n

iOS 中是否有任何 INTERNET 权限需要添加 info.plist ?

\n\n
void _checkVersionAndPreferences() async {\n    SharedPreferences prefs = await SharedPreferences.getInstance();\n    String prefsRes = prefs.getString('access_token') ?? '';\n    String buildNumber = _packageInfo.buildNumber ?? '1';\n    Dio dio = Dio();\n    _cancelToken = CancelToken();\n    Future.delayed(Duration(seconds: 10), () {\n      if (_getRequestSuccess == false) {\n        _cancelToken.cancel();\n        _checkVersionAndPreferences();\n        _showSnackBar(\n            content: '\xd8\xaa\xd9\x84\xd8\xa7\xd8\xb4 \xd9\x85\xd8\xac\xd8\xaf\xd8\xaf \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa8\xd8\xb1\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1\xdb\x8c \xd8\xa7\xd8\xb1\xd8\xaa\xd8\xa8\xd8\xa7\xd8\xb7',\n            duration: Duration(seconds: 3),\n            leading: Icon(Icons.refresh, color: Colors.black));\n      }\n    });\n    Response response = await dio.get(\n        'https://snapmelk.com/api/v1/panel/checkVersion/' + buildNumber,\n        cancelToken: _cancelToken);\n    try {\n      Map respJson = jsonDecode(response.data);\n      setState(() {\n        _getRequestSuccess = true;\n      });\n      if (respJson['error']) {\n        _showSnackBar(\n            content:\n                (respJson['errorMsg'] != null && respJson['errorMsg'] != '')\n                    ? respJson['errorMsg']\n                    : '\xd8\xae\xd8\xb7\xd8\xa7 \xd8\xaf\xd8\xb1 \xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84 \xd8\xaf\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x81\xd8\xaa \xd8\xa7\xd8\xb7\xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa2\xd8\xae\xd8\xb1\xdb\x8c\xd9\x86 \xd9\x86\xd8\xb3\xd8\xae\xd9\x87',\n            leading: Icon(Icons.warning),\n            backgroundColor: Colors.red,\n            textColor: Colors.white);\n      } else {\n        if (respJson['NewUpdate']) {\n          _checkDialogAnswer(respJson, prefsRes);\n        } else {\n          _checkPrefs(prefsRes);\n        }\n      }\n    } catch (e) {\n      _showSnackBar(\n          content: '\xd8\xae\xd8\xb7\xd8\xa7 \xd8\xaf\xd8\xb1 \xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84 \xd8\xa8\xd8\xa7 \xd8\xb3\xd8\xb1\xd9\x88\xd8\xb1. \xd9\x84\xd8\xb7\xd9\x81\xd8\xa7 \xd8\xaf\xd8\xb1 \xd8\xb2\xd9\x85\xd8\xa7\xd9\x86\xdb\x8c \xd8\xaf\xdb\x8c\xda\xaf\xd8\xb1 \xd9\x85\xd8\xb1\xd8\xa7\xd8\xac\xd8\xb9\xd9\x87 \xda\xa9\xd9\x86\xdb\x8c\xd8\xaf',\n          leading: Icon(Icons.warning),\n          backgroundColor: Colors.red,\n          textColor: Colors.white);\n    }\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

Oma*_*att 1

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