PhoneGap Angular iOS App仅显示白屏

时间:2016-06-30 17:07:00

标签: javascript ios angularjs cordova

我们使用Angular构建了一个HTML / JS iOS应用程序,它完全适用于桌面浏览器,但是当我将其作为PhoneGap项目包装并尝试在我的设备上运行时,它只会加载闪烁的启动画面到空白屏幕。我一直在寻找与路由类似的问题?我无法弄明白。有人可以帮忙吗?

HTML

<html>
<head>

    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />

    <link rel="stylesheet" type="text/css" href="css/index.css">
    <link rel="stylesheet" type="text/css" href="css/nav.css">
    <link rel="stylesheet" type="text/css" href="css/bootstrap-grid-12.css">
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">

    <script type="text/javascript" src="scripts/app.js"></script>
    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="scripts/platformOverrides.js"></script>
    <script type="text/javascript" src="scripts/index.js"></script>
    <script type="text/javascript" src="scripts/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/jquery-ui.js"></script>
    <script type="text/javascript" src="scripts/main.js"></script>
    <script type="text/javascript">

    var is_ios = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);

    if (is_ios) {

        $('<link rel="stylesheet" type="text/css" href="css/iosbugfix.css" />').appendTo("head");

    };

    </script>

    <base href="/">

</head>

<body ng-app="appItmt" ng-controller="dataController">

    <div ng-view></div>

</body>

</html>

app.js

(function () {
    var itmtApp = angular.module("appItmt", ["ngRoute", "cgBusy"]);

    itmtApp.config([
        '$routeProvider', '$locationProvider',
        function($routeProvider, $locationProvider) {
            $routeProvider
                .when('/how-to/', {
                    templateUrl: 'how-to.html',
                    controller: 'dataController'
                })
                 .when('/privacy/', {
                     templateUrl: 'privacy.html',
                     controller: 'dataController'
                 })
                 .when('/about/', {
                     templateUrl: 'about.html',
                     controller: 'dataController'
                 })
                 .otherwise({
                     templateUrl: 'main.html',
                     controller: 'dataController'

                 });

            $locationProvider.html5Mode(true);
        }
    ]);
}());

3 个答案:

答案 0 :(得分:0)

您应该在运行JavaScript之前等待deviceready事件。有关此here的信息,请参阅Cordova文档。

这标志着PhoneGap / Cordova准备好了,运行JavaScript是安全的。

答案 1 :(得分:0)

尝试以下代码可能有所帮助:

  1. 在yourapp / platforms / ios / cordova /中更改config.xml并添加以下首选项:

    <preference name="ShowSplashScreenSpinner" value="false" />

  2. 将以下代码添加到app.js:

    angular.module('starter.controllers', []) .run(function($ionicPlatform) { $ionicPlatform.ready(function() { setTimeout(function() { navigator.splashscreen.hide(); }, 100); }); })

  3. 尝试重建您的应用:$ ionic build ios

    并尝试$ ionic emulate ios

    希望这有帮助。

答案 2 :(得分:0)

我遇到了同样的问题。使调试变得更糟的原因是应用程序可以使用ionic run android运行,但不会运行ionic build android

我发现我的应用程序无法正常工作 <base href="/"> 这同时意味着我必须删除 $locationProvider.html5Mode(true);

然后我找到了答案here

构建应用基础时,应更改为<base href=".">