Flutter 应用程序仅适用于 WiFi,不适用于移动数据

Vin*_*uyo 7 android flutter

我有一个 flutter 应用程序,可以在 WiFi 下正常工作,但当我切换到移动数据时,它无法工作。我已检查并且有互联网连接,因为我的其他网站和应用程序正在运行。

在 Android 方面,我的清单中有:

 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

然后在应用程序标签内:

<meta-data android:name="io.flutter.network-policy"
       android:resource="@xml/network_security_config"/>
Run Code Online (Sandbox Code Playgroud)

然后在 network_security_config.xml 文件中我有:

<?xml version="1.0" encoding="utf-8"?>
 <network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">www.mydomain.com</domain>
  </domain-config>
 </network-security-config>
Run Code Online (Sandbox Code Playgroud)

我正在使用 nb_utils 包,它在幕后使用connectivity_plus来检查互联网连接并检查我拥有的连接:

ConnectivityResult connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
  print('I have Data access');
  return true;
} else if (connectivityResult == ConnectivityResult.wifi) {
  print('I have WIFI access');
  return true;
}
print('I have NO access');
return false;
Run Code Online (Sandbox Code Playgroud)

当我连接到移动数据时,我在控制台中打印出“我有数据访问权限”。

起初,我在 URI 上使用http://shop.mydomain.com,但后来我必须在我的域上应用 SSL 证书以查看其是否正常工作,但使用https://shop.mydomain.com仍然得到相同的结果。我的控制台中也没有收到任何错误。我还没有在 iOS 上尝试过,我只添加了:

<key>NSAppTransportSecurity</key>
<dict>
   <key>NSAllowsArbitraryLoads</key><true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

在 Info.plist 中。

小智 0

我遇到过同样的问题。

当移动数据打开时,我尝试使用浏览器和邮递员访问端点,但无法访问。然后我意识到这个问题与flutter或我的代码无关。

在进一步研究之前,我建议在仅移动数据处于活动状态时尝试在不使用 flutter 应用程序的情况下发送请求。

PS移动数据 = 蜂窝数据