Angularjs 角度及;Ionic,HTTP在实际设备IOS中无法工作

Angularjs 角度及;Ionic,HTTP在实际设备IOS中无法工作,angularjs,ionic-framework,ionic,Angularjs,Ionic Framework,Ionic,我的应用程序有问题,当我在本地主机上运行应用程序时,它工作正常,我可以看到频道列表,但当我尝试用物理设备测试应用程序时,它不会显示任何内容。我认为问题来自于通过http发送json数据的方法 (function () { 'use strict'; angular.module('testApp').controller('ChannelCtrl', ['$state', 'testApi', ChannelCtrl]); function ChannelCtrl($state, testA

我的应用程序有问题,当我在本地主机上运行应用程序时,它工作正常,我可以看到频道列表,但当我尝试用物理设备测试应用程序时,它不会显示任何内容。我认为问题来自于通过http发送json数据的方法

(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");
    }

};
})();
这是我获取通道数据的功能

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}]');
总的来说,我使用了ASP.NETWebAPI,它通过JSON发送数据。该应用程序在我们的桌面上运行良好,但正在运行的应用程序无法从我们的主机检索数据。此外,当我直接在程序中注入数据时,它可以在两个平台上工作。除此之外,下面还提供了ionic配置文件:

  <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>


就这些

如果您使用的是最新版本的cordova,您可能需要安装:

如果使用IIS Express,您可能会发现一些问题。

我已经详细解释了。

在测试服务器上工作时遇到了完全相同的问题。iOS 9似乎通过不允许应用程序通过HTTP而不是HTTPS连接到服务器,为他们的应用程序增加了一层安全性

要解决此问题,您必须将添加到info.plist iOS版本中


请记住,此解决方案是不安全的,不应在生产web服务中使用。

我也遇到了同样的问题。如果您使用的cordova高于4.0,则必须运行
cordova插件添加cordova插件白名单

您可以通过运行
cordova-v


愉快的编码。

您是否尝试过在启动应用程序时使用adb logcat查看错误?是的,我有,没有错误当然是一个愚蠢的问题,但您的物理设备上是否有互联网连接?(你们称之为)是的,互联网在设备上是正常的。正如我在config.xml中的详细代码中所解释的,我已经做到了;(没关系。你可能想看。请将此标记为已解决,这正是解决方案。@Nima你好,Nima,我知道这是一个旧问题,但你解决了这个问题吗?我正在经历一个类似的问题,非常感谢你的帮助。@LeftyX我也面临同样的问题,我也阅读了yoy提供的供参考的链接。)o按照进行了更改,但仍然不起作用。我的问题是,我已经安装了上述插件,尽管它没有通过,我的代码是$http.get({console.log(“Insert”)angular.forEach(response.data,function(res,key){var query=“Insert或REPLACE-INTO-adminshop1(shopid,url)值(?,)”执行(db,query,[res.shopid,res.url,res.shopname,res.Description,res.type]),然后(函数(res){if(response.data.length==key+1){$rootScope.selectAll();}},函数(err){};});
cordova plugin add cordova-plugin-whitelist