Angular & Ionic, HTTP Не работает в реальном устройстве IOS

У меня проблема в моем приложении, когда я запускаю приложение на локальном хосте, он работает без проблем, и я вижу список каналов, но когда я пытаюсь проверить приложение на физическом устройстве, он ничего не показывает. Я думаю, проблема связана с методом, который я использую для отправки данных json через http.

(function () {
'use strict';

angular.module('testApp').controller('ChannelCtrl', ['$state', 'testApi', ChannelCtrl]);

function ChannelCtrl($state, testApi) {
    var vm = this;

myscreenApi.getChannels().then(function(data){
         vm.channels = data;
     });

    vm.selectLeague = function(id){
        testApi.setChannelId(id);
        $state.go("app.video");
    }

};
})();

и эта моя функция, чтобы получить channeleldata​​p >

function getChannels() {
        var deferred = $q.defer(),
            cacheKey = "leagues",
            ChannelsData = null;

        if (ChannelsData) {
            console.log("Found data inside cache", ChannelsData);
            deferred.resolve(ChannelsData);
            $window.alert("From Cache");
        } else {
            $http.get("http://example.com/api/videos/getchannels")
                .success(function(data) {
                    console.log("Received data via HTTP");
                    self.leaguesCache.put(cacheKey, data);
                    $window.alert("From HTTP");
                    deferred.resolve(data);
                })
                .error(function(dataerr) {
                    console.log("Error while making HTTP call.");
                    $window.alert("Error baba daram " + dataerr);
                    deferred.reject();
                });
        }
        return deferred.promise;
    }

когда я отправляю данные с помощью JSON.parse(), он работает правильно.

vm.channels = JSON.parse('[{"Name":"MyScreen News","ID":46,"Thumbnail":"CB46.jpg","Videos":null}]');

В целом, я использовал веб-API ASP.NET, который отправляет данные JSON. Приложение хорошо работает на нашем рабочем столе, однако запущенное приложение не может извлекать данные с нашего хоста. Более того, когда я вставляю данные в программу напрямую, он работает на обеих платформах. Кроме того, файл с ионной конфигурацией, представленный ниже:

  <content src="index.html"/>
  <access origin="*"/>
  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="BackupWebStorage" value="none"/>
  <feature name="StatusBar">
    <param name="ios-package" value="CDVStatusBar" onload="true"/>
  </feature>

Это все.;)

Ответ 1

Если вы используете одну из последних версий кордовы, вам, возможно, придется установить список плагинов Cordova:

cordova plugin add cordova-plugin-whitelist

Если вы используете IIS Express, вы можете найти несколько проблем.
Я подробно описал здесь .

Ответ 2

При работе на тестовом сервере была такая же проблема. Кажется, что iOS 9 добавил уровень безопасности в свои приложения, не позволяя приложению подключаться к серверу через HTTP, а не HTTPS.

Чтобы исправить это, вы должны добавить This Patch в свою сборку iOS info.plist.

Помните, что это решение INSECURE и не должно использоваться в производственных веб-сервисах.

Ответ 3

У меня была такая же проблема. Если вы используете кордову выше 4.0, вам нужно будет запустить cordova plugin add cordova-plugin-whitelist

Вы можете проверить свою версию cordova, запустив cordova -v

Счастливое кодирование.