【问题标题】:Is there an INTERNET permission in iOS?iOS 中是否有 INTERNET 权限?
【发布时间】:2020-04-25 17:57:00
【问题描述】:

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

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

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);
    }
  }

【问题讨论】:

  • 您是通过 HTTPS 还是纯 HTTP 进行联系? iOS 默认阻止 HTTP 连接,见Preventing Insecure Network Connections
  • 我正在使用 HTTPS。
  • 您需要出示您的代码。造成这种情况的最常见原因是未能在 URLSessionTask 上调用 .resume(),但是混合了 dio 和颤动,您实际调用的是什么并不明显。 iOS 中没有特殊的“互联网”权限(如果有,您会收到错误消息)。我们需要看代码。
  • 你去我的朋友

标签: ios flutter dart dio


【解决方案1】:

好吧,在我朋友的帮助下,我发现这与互联网请求无关。 显然 ConnectivtyPackage Info 插件在 iOS 上不起作用并返回 NULL。

可惜我的希望落空了

【讨论】:

  • 解雇你的朋友。数以千计的颤振应用程序运行良好。我使用这两个包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多