• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 cordova 3.5.0 中未调用离线和在线事件

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:04:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 cordova 3.5.0 开发我的 phonegap 应用程序。在那我想在网络服务调用之前检查互联网连接。所以我使用命令 cordova plugin add org.apache.cordova.network-information 添加了网络状态插件。插件成功安装在我的应用程序中。

添加插件后,我添加了 2 个 EventListener,一个用于在线,另一个用于离线。

var app = {
    // Application Constructor
    initialize: function() {
        console.log('App initializing...');
        this.bindEvents();
    },
    // Bind Event Listeners
    //
    // Bind any events that are required on startup. Common events are:
    // 'load', 'deviceready', 'offline', and 'online'.
    bindEvents: function() {
        //This is to allow testing in desktop browser where there is no device ready event
        if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) {
            document.addEventListener('deviceready', this.onDeviceReady, false);
    document.addEventListener("offline", onOffline, false);
    document.addEventListener("online", onOnline, false);

        } else {
            this.onDeviceReady();
        }

    },
    // deviceready Event Handler
    //
    // The scope of 'this' is the event. In order to call the 'receivedEvent'
    // function, we must explicity call 'app.receivedEvent(...);'
    onDeviceReady: function() {
        StatusBar.overlaysWebView(false);
        app.receivedEvent('deviceready');
    },
 onOnline:function(){
     console.log("Online");
    }.
   onOffline: function(){
     console.log("Offline");
    },
    // Update DOM on a Received Event
    receivedEvent: function(id) {
        require(['router'], function(Router){
            Router.getInstance();
            console.log('Backbone callback...');
        });
    }
    };

所以我使用了另一种方法来检查 Phonegap 文档中提到的在线状态

function checkConnection() {
    var networkState = navigator.network.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.NONE]     = 'No network connection';

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

始终返回连接到互联网的模式,例如“WiFi 连接”。虽然我改变了我断开的互联网连接。

帮我解决这个问题。



Best Answer-推荐答案


我遇到了同样的问题nline/offline 事件没有触发,有时当它离线时,应用程序崩溃了......

解决方案: - 适当的权限标签必须紧跟在标签之后,在 AndroidManifest.xml 文件中......它可能看起来很荒谬,但否则事件不会触发。

最后,您的文件将如下所示:

<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="br.com.burkard.app" xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />

关于ios - 在 cordova 3.5.0 中未调用离线和在线事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935014/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap