Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

console.log is not working in iOS Phonegap App even after adding the console plugin

I have created a Phonegap iOS App in Cordova CLI . I have added the console plugin and yes deviceready is called successfully but console.log is not working and does not print any thing in XCode log.

Plugin Installation :-

cordova -v
3.3.1-0.3.1

sudo cordova plugins add org.apache.cordova.console
Fetching plugin "org.apache.cordova.console" via plugin registry
Starting installation of "org.apache.cordova.console" for ios
Preparing ios project
org.apache.cordova.console installed on 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-information',
'org.apache.cordova.splashscreen',
'org.apache.cordova.vibration' ]

Java Script :-

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
    }
};
like image 485
Shashi Avatar asked Feb 17 '14 10:02

Shashi


3 Answers

I have solved this issue by doing these steps

Step 1 :

I Just copy a directory from another cordova project where console.log was working

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

Step 2 :

Add the Code in CURRENT_CORDOVA_PROJECT_PATH/platforms/ios/www/cordova_plugins.js file under module.exports JSON array

{
    "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"
    ]
}

Step 3 :

Adding Meta data on the same cordova_plugins.js file in module.exports.metadata JSON Array :-

"org.apache.cordova.console": "0.2.7"

like image 55
Shashi Avatar answered Oct 17 '22 17:10

Shashi


In my case the reason was probably because the plugin was installed from a Windows machine the first time and it work previously only for the Android platform. when I try to reinstall it from my Macintosh I encountered the same problem of Shashi.

This has been caused from the missing of the source file CDVLogger.m in the compile source list. So I recommend to check if this file is already added by:

Click on root Project file in the Xcode explorer > Build Phases > Compile Sources section

If the CDVLogger.m file is not present add it and try to Run the project again. This fixed the issue for me.

EDIT: In addition be sure that your index.html page contains this HTML:

<div id="deviceready" class="blink">
    <p class="event listening">Connecting to Device</p>
    <p class="event received">Device is Ready</p>
</div>
like image 45
Joe Aspara Avatar answered Oct 17 '22 18:10

Joe Aspara


I tried a lot of solutions posted here in stackoverflow but nothing was working for me. After putting the cordova.js outside of my personal JS folder console.log was working fine.

<script charset="utf-8" src="cordova.js"></script>
like image 25
mboeckle Avatar answered Oct 17 '22 17:10

mboeckle