【问题标题】:Ionic app not getting data from remote API on Android device离子应用程序未从 Android 设备上的远程 API 获取数据
【发布时间】:2020-01-25 16:44:24
【问题描述】:

所以我正在构建一个带有 API 调用的 Ionic 应用程序,当我在浏览器上运行它并获取所有数据时,一切正常。

但是当我构建应用程序(ionic cordova build android)并在我的手机中安装 .apk 时,我没有得到任何数据,视图只是空的,我不知道为什么。

我按照我找到的here 的说明进行操作,但仍然一无所获。

我什至按照question 中的说明安装了“android-permissions”cordova 插件,但是当我在手机上安装该应用程序时,它说该应用程序不需要任何权限。

我迷路了,不知道为什么它不起作用。请帮忙!。

项目信息

Created using "ionic start appName blank --type=angular"

Ionic Framework :

@ionic/angular 4.9.1

Ionic CLI :

5.4.1

Cordova CLI :

9.0.0

Cordova Platforms : 

android 8.1.0

谢谢

【问题讨论】:

  • 你用什么做你的后端?
  • 我正在使用 PHP 和 MySql。整个后端(php 脚本 + mysql 数据库)托管在 Web 服务器上
  • 您是否尝试过通过 Chrome 调试您的应用程序??
  • 使用 Chrome 调试工具检查调试您的应用程序:要使用 Chrome 调试,请在您的 chrome 搜索栏中输入 chrome://inspect/#devices。通过电缆连接您的移动设备(从设置中启用开发人员选项和 USB 调试),您将看到您的设备光滑,新的调试器窗口将打开。检查控制台是否有错误/警告。
  • 不,我没有,但是当我运行 ionic serve 命令时,它实际上在 Chrome 上运行,一切正常

标签: android cordova ionic-framework


【解决方案1】:

这可能是whitelisting,或者,如果您有 Android 9 并且您的 API 不使用 TLS,则可能是 network security 问题。

白名单

将标签<access origin="https://your-server.com" /> 添加到您的config.xml

网络安全

要允许 Android 9 设备访问 http://(非 TLS)API,需要额外的 configuration。在 Cordova 应用程序中,执行以下步骤:

  1. 在您的项目根目录中创建一个名为 network_security_config.xml 的文件,其中包含以下内容:
    <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
        <domain-config cleartextTrafficPermitted="false">
      </domain-config>
    </network-security-config>
  1. 将此添加到您的 config.xml 以将新配置包含在您的 Android 清单中:
    <platform name="android">
        ...
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config" />
        </edit-config>
        <resource-file src="network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
        ...
    </platform>

重建 Android 平台(即ionic cordova platform rm androidionic cordova platform add android 等),它应该可以在您的设备上运行。

【讨论】:

  • 好的,谢谢,我马上试试,然后回来
  • 您的端点是否使用 SSL?您的请求是否以 200 响应完成但没有有效负载,或者请求是否出错?
  • 不,它不使用 SSL。请求响应为 200 代码。在浏览器/计算机上一切正常。问题是我安装应用程序的 Android 设备,我没有看到任何数据。而且我不知道这是 CORS 问题还是与 Android 权限有关的问题(互联网、network_state ...)
  • 您使用的是 Android 9 吗?他们要求您使用 SSL。看看这个问题:stackoverflow.com/questions/51902629/…
  • 嘿@kavindhi,我很乐意提供帮助。我在 cmets 中有点受限,所以我制作了一个文件来解释这个问题以及如何解决它。这是link。我会继续关注更多问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2013-01-14
  • 2017-12-17
  • 1970-01-01
相关资源
最近更新 更多