【问题标题】:Checking internet connection in PhoneGap app在 PhoneGap 应用程序中检查互联网连接
【发布时间】:2014-05-21 07:09:09
【问题描述】:

我正在尝试确定应用程序启动时设备是否已连接到互联网。 据我所知,javascript代码应该是这样的:

function isOnline() {
    var networkState = navigator.network.connection.type;
    if (networkState == Connection.NONE) {
        return false;
    };
    return true;
}

到目前为止,我只在 iOS 上尝试过。 不幸的是,navigator.network 是未定义的。

我知道我必须在 config.xml 文件中添加网络模块。 根据PhoneGap页面(http://docs.phonegap.com/en/3.0.0/cordova_connection_connection.md.html), 我就是这样做的:

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

<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.NetworkManager" />
</feature>

有人知道我错过了什么吗?

【问题讨论】:

    标签: ios cordova network-connection


    【解决方案1】:

    试试这个。

    在此处安装此 cordova 插件。

    https://github.com/apache/cordova-plugin-network-information

    并将这段代码添加到js文件中

    document.addEventListener("deviceready", onDeviceReady, false);
    // device APIs are available
    //
    
    function onDeviceReady() {
        isOnline();
    }
    
    function isOnline() {
        var networkState = navigator.connection.type;
        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';
        if ((states[networkState]) == states[Connection.NONE]) {
            alert('No Internet Connection. Click OK to exit app');
            navigator.app.exitApp();
        }
    }
    

    【讨论】:

    • 谢谢,我去看看。
    【解决方案2】:

    试试这个:

    function checkConnection() {
            return navigator.connection.type === "none" || navigator.network.connection.type === null ||
                    navigator.connection.type === "unknown" ? false : true;
        }
    

    记得在设备就绪事件触发后检查这个。

    【讨论】:

    • 谢谢,但是在Android和iOS下navigator.connection.type也是未定义的。我在设备读取触发后进行检查。
    • 你用的是哪个phonegap版本?
    • 我用的是 3.3.0。我发现使用 XMLHttpRequest 检查服务器是可行的,但简单地使用属性会更优雅。
    • 是的,我使用上面的代码,虽然它在 phonegap 2.9 中。您是否在android清单文件中设置了权限?
    • 目前我没有安卓清单文件。 iOS 呢?我那里也需要这样的文件吗?
    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2012-03-09
    相关资源
    最近更新 更多