繁体   English   中英

Phonegap 应用程序可用于预览但不适用于 Android 设备 - Promise

[英]Phonegap app working on preview but not on Android device - Promise

我有一个 Phonegap 应用程序,它可以在预览应用程序上完美运行,但是当我使用 Phonegap Build 创建一个 APK 并将其安装在 Android 设备上时,它部分工作,除了 Promise 内的任何代码。 我添加了一些警报,我注意到它在 Promise 之前停止工作。

我有以下代码:

    {
        alert('passwordreset before promise');
        return new Promise((resolve, reject) => {
            alert('inside promise');
            this.api.call( '/' + this.endpoint + '/recover', {email: email})
            .then(response => 
            { alert('promise succes');
                resolve(response);
            })
            .catch(errors => 
            {
                reject(errors);
            });

        });
    } 

第一个警报(promise 之前的密码)被执行,但不执行其他警报。

你知道会发生什么吗?

你使用安卓工作室吗? 如果是这样,请检查您在 LogCat 选项卡中有什么日志。 您是否设置了正确的 CORS 设置? 看起来您正在发出一些 api 请求。 在 MSDN 中有一篇很好的文章描述了您可能缺少哪些设置: https : //docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/security/whitelists?view=toolsforcordova-2017

由于默认情况下禁用 Android 9 明文。 如果问题仍然存在,请验证您的 network_security_settings.xml(如果已设置)。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
  <domain includeSubdomains="true">10.0.1.1</domain> <!-- Set local api -->
</network-security-config>

您可以在 Android Manifest 中设置网络设置文件

<?xml version="1.0" encoding="utf-8"?>
 <manifest>
 <application android:networkSecurityConfig="@xml/network_security_config">
    ...
 </application>
 </manifest>

webview 不支持承诺。 您需要为 ES5 转译/编译您的 JS 代码。

Promise 是 ES2015 JavaScript 规范(也称为 ES6)的一部分。

如果您需要 polyfill,请查看https://www.promisejs.org/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM