Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check internet connection on iOS app with Cordova Phonegap 3.3.0 not working

I have tried following this guide on Cordova docs, but it doesn't seem to work.

Here is my code:

I have added <plugin name="NetworkStatus" value="CDVConnection" /> to config.xml.

and this script to my index.html:

    <script type="text/javascript">


        document.addEventListener("deviceready", onDeviceReady, false);

        // device APIs are available
        //
        function onDeviceReady() {
            alert("1"); // runs this alert
            checkConnection();
        }

        function checkConnection() {
            var networkState = Connection.CELL;
            alert("2"); // doesn't run this

            var states = {};
            states[Connection.UNKNOWN]  = 'Unknown connection';
            states[Connection.ETHERNET] = 'Ethernet connection';
            states[Connection.WIFI]     = 'WiFi connection';
            states[Connection.CELL_2G]  = 'Cell 2G connection';
            states[Connection.CELL_3G]  = 'Cell 3G connection';
            states[Connection.CELL_4G]  = 'Cell 4G connection';
            states[Connection.CELL]     = 'Cell generic connection';
            states[Connection.NONE]     = 'No network connection';

            alert('Connection type: ' + states[networkState]);
        }

    </script>

var networkState = Connection.CELL; seems to cause the problem as it doesn't run the following alert, I have also tried navigator.connection.type but the same thing happened.

When I run the app in Chrome the console outputs the following error:

Uncaught ReferenceError: Connection is not defined 

Anybody know how to solve this problem?

Cheers

like image 328
smj2393 Avatar asked Dec 19 '13 12:12

smj2393


People also ask

How do I check my Cordova Internet connection?

networkInfo function will return info about current network connection once button is clicked. We are calling type method. The other functions are onOffline and onOnline.

Is Apache Cordova still supported?

Effective immediately, App Center will no longer offer the option to create Apache Cordova apps through the portal, CLI or API. Starting April 1, 2022, the App Center service will no longer accept calls from the Cordova SDK.

Why network Information plugin is used?

The Network Information plugin provides access to network data on a device, such as connection type or when the device comes online or offline.


1 Answers

I finally solved the problem!! - by starting all over again from scratch and doing the following:

Command line:

sudo npm install -g cordova
cordova create hello com.example.hello HelloWorld
cd hello
cordova platform add ios
cordova platforms ls //This will list ios
cordova plugin add org.apache.cordova.network-information
cordova build

Then drag my files (HTML, Javascript etc) into the platforms/ios/www/ folder.

Open up hello.xcodeproj in xcode.

Edit config.xml and add the lines:

<feature name="NetworkStatus">
    <param name="ios-package" value="CDVConnection" />
</feature>

Then in my index file I used the JavaScript:

    <script type="text/javascript">
        document.addEventListener("deviceready", onDeviceReady, false);
        // device APIs are available
        function onDeviceReady() {
            if(navigator.network.connection.type == Connection.NONE){
                alert("nocon");
            }else{
                alert("yescon");
            }
        }
    </script>

Then run it in the iPhone / iPad simulator and it will output "yescon" if there is a connection and "nocon" if there isn't!!

Hope this helps!

like image 82
smj2393 Avatar answered Sep 23 '22 00:09

smj2393