首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理网络连接

处理网络连接
EN

Stack Overflow用户
提问于 2017-02-23 20:48:55
回答 2查看 809关注 0票数 0

我有一个Ionic 2应用程序,我需要知道是否有互联网连接(一般,任何类型),它是不工作的。

如果我这样做了:

代码语言:javascript
复制
if (Network.connection) {
   this.af.auth.subscribe(user => {
        if (user) {
            this.hasSession = true;
        } else {
            this.hasSession = false;
        }
    });
} else {
  // Go to home
}

docs说要使用Network.type,但是编辑器说这个属性不存在,而对于Network.connection (它的描述说它返回一个带有internet类型的字符串)总是返回undefined

编辑:

代码语言:javascript
复制
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:从‘离子-本机’导入{网络};
  • 浏览器控制台: ionViewWillEnter错误:无法读取未定义的属性“类型”
EN

回答 2

Stack Overflow用户

发布于 2017-02-23 20:55:46

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

代码语言:javascript
复制
declare var navigator: any;
declare var Connection: any;

这比允许您执行以下操作更重要:

代码语言:javascript
复制
let networkState = navigator.connection.type;
let isOnline = networkState != Connection.NONE;

编辑

为了使用上面的内容,您还应该安装以下cordova插件:

代码语言:javascript
复制
ionic plugin add cordova-plugin-network-information --save
票数 0
EN

Stack Overflow用户

发布于 2017-02-23 21:38:36

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

代码语言:javascript
复制
if (Network.type == 'NONE') {
  //some code
} else {
 // Go to home
}

您还可以查看Ionic中的网络插件文档,查看您可以比较哪些连接类型,如4g、3g、wifi、2g、以太网等。如果您愿意,您也可以创建一个Network.onDisconnect().subscribe()来查看用户是否断开连接,以便将他发送到主页。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42425907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档