我正在编写一个将请求发送到REST API的应用。
API调用可在网络浏览器中运行,但不能在模拟器中,也不能在设备上运行。
离子CLI 4.4.0
科尔多瓦8.1.2
我做了什么:
我在此side上使用android权限:
app.modules.ts
import { AndroidPermissions } from '@ionic-native/android-permissions';
@NgModule({
declarations: [
],
imports: [
],
entryComponents: [
],
providers: [
AndroidPermissions
],
bootstrap: [IonicApp]
})
export class AppModule {}
api-call.ts
import { AndroidPermissions } from '@ionic-native/android-permissions';
export class ApiCallPage {
constructor(private androidPermissions: AndroidPermissions) {
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.INTERNET).then(
result => console.log('Has permission?', result.hasPermission),
err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.INTERNET)
);
}
}
目标设备(AVD管理器中的设备和仿真器)具有 API 22(Android 5.1)。
config.xml
<access origin="*" />
<preference name="android-minSdkVersion" value="19" />
<plugin name="cordova-plugin-android-permissions" spec="1.0.0" />
<engine name="android" spec="^7.1.1" />
最后一个(引擎名称)可能是cordova-android版本的,不一定是5.1。在 package.json 中,其依赖项为"cordova-android": "^7.1.1"
。
...两个文件都包含(不是手写的):
<uses-permission android:name="android.permission.INTERNET" />
不是CORS问题。 REST API在与网络浏览器不同的服务器上运行,并且可以与网络浏览器一起使用。
我想我做了一切。有什么遗漏或有问题吗?
要访问Ionic(科尔多瓦)互联网,您需要做什么?
[UPDATE] 该应用程序信息向我显示该应用程序具有完全网络访问权限。现在我很茫然。
在API中,我在引导时记录了每个请求。来自设备的应用程序请求未到达。浏览器中的应用程序到达。
答案 0 :(得分:0)
这是一个CORS问题,但不是在API方面,而是在客户端。
在config.xml <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
中解决了我的问题。
对我来说,它是Android 5.1和8.0。