Ionic 3 android разрешений интернет - PullRequest
0 голосов
/ 23 ноября 2018

Я пишу приложение, которое отправляет запросы в API REST.

Вызовы API работают в веб-браузере , но не в эмуляторе и не на устройстве.

Ionic CLI 4.4.0

Cordova 8.1.2

Что я сделал:

Я использую разрешения для 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".

  • / платформы / android / приложение / сборка / посредники / манифесты / full / debug / AndroidManifest.xml
  • / platform / android / app / src / main / AndroidManifest.xml

... оба файла включают в себя (не написано от руки):

<uses-permission android:name="android.permission.INTERNET" />

Это не проблема CORS .API REST работает на сервере, отличном от веб-браузера, и работает с веб-браузером.

Я думаю, что все сделал.Что-то отсутствует или не так?

Что нужно сделать, чтобы иметь доступ к Интернету через Ionic (cordova)?

[ОБНОВЛЕНИЕ] Информация о приложении показывает мне разрешения, которыеприложение имеет полный доступ к сети.Теперь я в растерянности.

screenshot CAT S30 App-Info

В API я регистрирую каждый запрос во время загрузки.Запрос приложения с устройства не поступает.Приложение в браузере прибывает.

1 Ответ

0 голосов
/ 23 ноября 2018

Это была проблема CORS, но не на стороне API, а на стороне клиента.

В config.xml <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> решает мою проблему.

Посмотрите на выпуск github ionic-team

Для меня это был Android 5.1 & 8.0.

...