即使添加了控制台插件,console.log也无法在iOS Phonegap App中运行

时间:2014-02-17 10:18:33

标签: javascript ios cordova cordova-plugins

我在Cordova CLI中创建了一个Phonegap iOS应用程序。我已经添加了控制台插件,并且yes deviceready被成功调用,但是console.log不能正常工作,并且不会在XCode日志中打印任何内容。

插件安装: -

  

cordova -v
  3.3.1-0.3.1

     

sudo cordova插件添加org.apache.cordova.console
  通过插件注册表获取插件“org.apache.cordova.console”   为ios开始安装“org.apache.cordova.console”   准备ios项目
  oros.apache.cordova.console安装在ios上。

     

sudo cordova plugins ls
  ['org.apache.cordova.console',
    'org.apache.cordova.device',
    'org.apache.cordova.dialogs',
    'org.apache.cordova.geolocation',
    'org.apache.cordova.globalization',
    'org.apache.cordova.inappbrowser',
    'org.apache.cordova.media',
    'org.apache.cordova.network信息',
    'org.apache.cordova.splashscreen',
    'org.apache.cordova.vibration']

Java脚本: -

var app = {
    initialize: function() {
       this.bindEvents();
    },
    bindEvents: function() {
       document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function() {
       app.receivedEvent('deviceready');
    },
    receivedEvent: function(id) {
       console.log('Device Ready Received'); //It is not working
       alert("Device ready called");  //It is Working
    }
};

6 个答案:

答案 0 :(得分:3)

我通过执行这些步骤解决了这个问题

第1步:

我只是从另一个可以运行console.log的cordova项目中复制一个目录

sudo cp -r DIFF_CORDOVA_PROJECT_PATH/platforms/ios/www/plugins/org.apache.cordova.console CURRENT_CORDOVA_PROJECT_PATH/platforms/ios/www/plugins/

第2步:

在module.exports JSON数组下的CURRENT_CORDOVA_PROJECT_PATH / platforms / ios / www / cordova_plugins.js文件中添加代码

{
    "file": "plugins/org.apache.cordova.console/www/console-via-logger.js",
    "id": "org.apache.cordova.console.console",
    "clobbers": [
        "console"
    ]
},
{
    "file": "plugins/org.apache.cordova.console/www/logger.js",
    "id": "org.apache.cordova.console.logger",
    "clobbers": [
        "cordova.logger"
    ]
}

第3步:

在module.exports.metadata JSON数组中的同一个cordova_plugins.js文件中添加元数据: -

“org.apache.cordova.console”:“0.2.7”

答案 1 :(得分:1)

在我的情况下,原因可能是因为该插件是第一次从Windows机器安装而且以前仅适用于Android平台。 当我尝试从我的Macintosh重新安装它时,我遇到了同样的Shashi问题。

这是由于编译源列表中缺少源文件CDVLogger.m引起的。因此,我建议通过以下方式检查此文件是否已添加:

点击Xcode资源管理器中的根项目文件>构建阶段>编译来源部分

如果CDVLogger.m文件不存在,请添加它并尝试再次运行该项目。这为我解决了这个问题。

编辑:此外,请确保您的index.html页面包含此HTML:

<div id="deviceready" class="blink">
    <p class="event listening">Connecting to Device</p>
    <p class="event received">Device is Ready</p>
</div>

答案 2 :(得分:1)

我尝试了很多在stackoverflow中发布的解决方案,但没有任何对我有用。把cordova.js放在我个人的JS文件夹console.log之后工作正常。

<script charset="utf-8" src="cordova.js"></script>

答案 3 :(得分:0)

在代码部分

中添加<script type="text/javascript" src="cordova.js"></script>

答案 4 :(得分:0)

确保执行以下操作:

function onDeviceReady() {
if (window.cordova.logger) {
    window.cordova.logger.__onDeviceReady();
} } document.addEventListener('deviceready', onDeviceReady, false);`

答案 5 :(得分:-3)

就我而言,以下div缺失

<div id="deviceready" class="blink">
  <p class="event listening">Connecting to Device</p>
  <p class="event received">Device is Ready</p>
</div>