处理网络连接



我有一个离子2应用程序,我需要知道是否有互联网连接(通常,任何类型),并且它不起作用。

如果我这样做:

if (Network.connection) {
   this.af.auth.subscribe(user => {
        if (user) {
            this.hasSession = true;
        } else {
            this.hasSession = false;
        }
    });
} else {
  // Go to home
}

文档说要使用Network.type,但编辑说该属性不存在,并且使用Network.connection(其描述说它返回带有Internet类型的字符串)始终返回undefined

编辑:

import { Network } from 'ionic-native';
declare var navigator: any;
declare var Connection: any;
@Component({
    ......
})
export class .... {
    constructor(....) {}
    ionViewDidLoad(): void {
        this.retrieveAllPractises();
    }
    public retrieveAllPractises(): void {
        let networkState = navigator.connection.type;
        let isOnline = networkState != Connection.NONE;
        this.showLoading();
        if (isOnline) {
            firebase.database().ref('/audios').once('value')
                .then((snapshot) => {
                    let retrievedArray = snapshot.val();
                    for (let entry of retrievedArray) {
                        let practise: Practise = {
                            id: entry.id,
                            img: '',
                            children : entry.children,
                            name : entry.name,
                            new :  entry.new,
                            permission : entry.permission,
                            type : entry.type
                        };
                        practise.img = this.practiseImg(practise);
                        this.practises.push(practise);
                    }
                    this.addDownloadItem();
                    this.hideLoading();
                });
        } else {
            this.addDownloadItem();
            this.hideLoading();
            this.showOfflineStatusMsg();
        }
    }
}

使用此代码:

  • 控制台抛出我:未使用的导入:'网络'l10:从'ionic-native'导入{network};
  • 浏览器控制台:ionviewwillenter错误:无法读取未定义
  • 的属性'类型'

Network.type使您的ionic-native版本必须高于2.2.12,然后您可以使用

if (Network.type == 'NONE') {
  //some code
} else {
 // Go to home
}

您还可以检查Ionic中的网络插件文档,以查看可以比较哪些连接类型,例如4G,3G,WiFi,2G,2G,以太网等。如果需要,也可以创建一个Network.onDisconnect().subscribe()来观察用户是否断开连接,以便将其发送到主页。

希望它有帮助。

在您的组件/服务中,上面的类别定义添加:

declare var navigator: any;
declare var Connection: any;

哪个让您进行以下操作:

let networkState = navigator.connection.type;
let isOnline = networkState != Connection.NONE;

编辑

为了使用上面,您还应安装以下Cordova插件:

ionic plugin add cordova-plugin-network-information --save

相关内容

  • 没有找到相关文章

最新更新