Cordova HttpClient вызывает сбой в устройстве IOS, но работает в Android - PullRequest
0 голосов
/ 29 октября 2018

Я знаю, что это было задано до HTTPS-запрос не выполняется только на iOS, Ionic 2 , но эти ответы не сработали для меня.

У меня уже есть настройка ниже в файле [myproject] -info.plist в проекте ios xcode10

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

И в моем проекте не установлен плагин wkwebview как здесь , вместо этого в моем проекте установлен плагин ionic-webview.

Конечной точкой является метод действия контроллера MVC, который размещается на сервере Windows. Я не смог отладить в Windows приложение IOS с помощью chrome: // inspect, как я это делаю для тестирования Android. Хотя приложение может получить доступ к другим статическим ссылкам, таким как изображения, но это вызовы веб-службы не удается.

В коде Angular ниже показано, как вызовы веб-службы выполняются с помощью HttpClient

var oDat = {
uuid: uuid
};
let headers = new HttpHeaders();
headers = headers.set(‘Content-Type’, ‘application/json; charset=utf-8’);
return this.http.post(this.apiUrl23, JSON.stringify(oDat), {headers: headers}).pipe(
map(this.extractData),
catchError(this.handleError)
);

Ниже приведен один из таких кодов абонентов, сработавших на страницах

  this.horoService.getPlan(this.device.uuid)
           .subscribe(res => {
                this.info2 = '';
                let pln: Plan = { uuid: res['uuid'], name: res['name'], credits: res['credits'], dobs: res['dobs'] };
                this.plan = pln;
                if(res['name'] == 'xxx.xxx.xxx.xxx'){
                    this.showSU = true;
                    this.showCR = false;
                    this.showASU = false;
                } else if(Number(res['credits']) == 0) {
                    this.showSU = false;
                    this.showCR = true;
                    this.showASU = false;
                } else {
                    this.showSU = true;
                    this.showCR = false;
                    this.showASU = true;
                }
            }, (err) => {
                    this.showSU = false;
                    this.showCR = false;
                    this.showASU = false;
                this.info2 = JSON.stringify(err);
            });    

Ниже приведена версия Cordova, используемая в моем проекте

Ionic:
   ionic (Ionic CLI)  : 4.2.1 (C:\Users\Hamsini\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.0

Cordova:

   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 6.3.0, ios 4.5.5
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.2, cordova-plugin-ionic-webview 1.2.1, (and 12 other plugins)

Сборка сделана на xCode10 и протестирована на ipad версии 9.3.5

Есть предположения?

ОБНОВЛЕНИЕ-30/10 Когда я работал с ionic serve, я мог видеть, что HTTPResponse возвращается правильно, но затем в обработчике .subscribe (err) он показывает Unknown URL, Unknown error

1 Ответ

0 голосов
/ 30 октября 2018

Я отвечаю на свой вопрос, поскольку это может кому-то помочь.

Похоже, что проблема связана с WKWebView после понижения до UIWebView , кажется, решена

На данный момент необходимы следующие шаги, пока Cordova не исправит проблему

В этом посте очень подробно рассказывается о проблеме совместимости с xCode10 и Cordova, прошло много времени с тех пор, как Cordova запустила, но ребята не нашли решения, которое обходится вокруг игнорирования новой архитектуры во время сборки. процесс, процесс развертывания, когда дело доходит до iOS, немного сложнее, так как он больше полагается на XCode платформу MAC, поэтому после сборки с помощью командной строки ниже

ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

Вы также должны убедиться, что в настройках сборки xCode выберите "Legacy Build System" , как показано здесь и здесь

Но могут быть и другие побочные эффекты, которые могут быть вызваны из-за этого понижения, например, нажатие на некоторую часть изображения SVG в приложении, которое не работает, которое раньше работало на устройствах Android, для которых даже прослушиватели динамически подключаются, не уверен если это из-за понижения версии if not not only работает для устройств iOS, так как я раньше не тестировал это приложение на других устройствах iOS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...