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");
}
};
})();
и эта моя функция, чтобы получить channeleldatap >
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
Счастливое кодирование.