我有一个离子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