连接到 wifi 网络时的事件侦听器
Event listener when connecting to a wifi network
我正在为 android 使用 cordova 构建一个应用程序。我想知道是否有任何方法可以添加事件侦听器以在用户连接到 wifi 网络时通知我。例如,当 he/she 正在使用 phone 数据并连接到 wifi 网络时,我希望在用户再次从 wifi 切换到数据时收到通知。
我能想到的唯一方法是每 X 毫秒创建一个 setInterval
并使用 plugin cordova-plugin-network-information
检查网络信息。但是这样做似乎效率很低,我想立即得到通知。
那么有什么way/plugin在网络变化的时候添加事件监听器吗?
编辑:我没有使用ionic,只是backbone和jquery。
谢谢!
如果您使用的是 Ionic,那么您可以这样做:
// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
console.log('network connected!');
// We just got a connection but we need to wait briefly
// before we determine the connection type. Might need to wait.
// prior to doing any api requests as well.
setTimeout(() => {
if (this.network.type === 'wifi') {
console.log('we got a wifi connection, woohoo!');
}
}, 3000);
});
// stop connect watch
connectSubscription.unsubscribe();
(来自 Ionic Native Documentation 的代码)
Cordova 有一个名为 cordova-plugin-network-information 的插件,您可以从 Github
下载
有了它你可以写出这样的东西:
document.addEventListener("online", onOnline, false);
function onOnline() {
if(checkConnection===Connection.WIFI){
// Code
}
}
function checkConnection() {
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';
console.log("Connection: "+states[networkState])
return networkState
}
我还没有测试 Cordova 示例
据我所知,您只会在应用程序运行 online/offline 时收到通知,并且通过 Internet 快速提醒证实了我的疑虑。我想了解连接类型的方法是每秒检查网络是否已使用 setTimeout
或 setInterval
.
更改
我正在为 android 使用 cordova 构建一个应用程序。我想知道是否有任何方法可以添加事件侦听器以在用户连接到 wifi 网络时通知我。例如,当 he/she 正在使用 phone 数据并连接到 wifi 网络时,我希望在用户再次从 wifi 切换到数据时收到通知。
我能想到的唯一方法是每 X 毫秒创建一个 setInterval
并使用 plugin cordova-plugin-network-information
检查网络信息。但是这样做似乎效率很低,我想立即得到通知。
那么有什么way/plugin在网络变化的时候添加事件监听器吗?
编辑:我没有使用ionic,只是backbone和jquery。
谢谢!
如果您使用的是 Ionic,那么您可以这样做:
// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
console.log('network connected!');
// We just got a connection but we need to wait briefly
// before we determine the connection type. Might need to wait.
// prior to doing any api requests as well.
setTimeout(() => {
if (this.network.type === 'wifi') {
console.log('we got a wifi connection, woohoo!');
}
}, 3000);
});
// stop connect watch
connectSubscription.unsubscribe();
(来自 Ionic Native Documentation 的代码)
Cordova 有一个名为 cordova-plugin-network-information 的插件,您可以从 Github
下载有了它你可以写出这样的东西:
document.addEventListener("online", onOnline, false);
function onOnline() {
if(checkConnection===Connection.WIFI){
// Code
}
}
function checkConnection() {
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';
console.log("Connection: "+states[networkState])
return networkState
}
我还没有测试 Cordova 示例
据我所知,您只会在应用程序运行 online/offline 时收到通知,并且通过 Internet 快速提醒证实了我的疑虑。我想了解连接类型的方法是每秒检查网络是否已使用 setTimeout
或 setInterval
.