Android 经常检查互联网连接
我正在用ionic框架开发一个Android应用程序,需要检查互联网连接,但要稳定。例如,如果用户登录后没有连接,我想显示一条消息或任何消息。我曾经想过Android 经常检查互联网连接,android,angularjs,ionic-framework,Android,Angularjs,Ionic Framework,我正在用ionic框架开发一个Android应用程序,需要检查互联网连接,但要稳定。例如,如果用户登录后没有连接,我想显示一条消息或任何消息。我曾经想过 <div class="bar bar-subheader" id="alerta_no_internet" ng-show="!online"> <p>Not connected to Internet </p> </div 未连接到Internet 有几种方法可以做到这一点: 您可以在服
<div class="bar bar-subheader" id="alerta_no_internet" ng-show="!online">
<p>Not connected to Internet </p>
</div
未连接到Internet
有几种方法可以做到这一点:
您可以在服务器上存储资产(可能是1px x 1px
GIF
图像),并不断对此进行轮询(每x
秒连续请求一次)。当然,您要确保此图像未被缓存。如果请求失败,您可以假定网络不可用。这很容易实现,但效率不高,因为轮询通过网络发送大量HTTP头
这要高效得多-在客户端和服务器中实现WebSocket
连接,并在打开应用程序时打开套接字。如果插座断开,您可以显示连接丢失
消息。这不需要重复发送HTTP请求。这是更有效的,但需要更多的工作来实现这一点李>
您可以在Ionic中为其中任何一个编写服务
最简单地说,选项1可以是:
setInterval(ajaxCall, 3000); //3000 MS == 3 sec
function ajaxCall() {
$.ajax('/testConnectivityUrl').then(function(response) {
console.log("Still connected");
}, function(err) {
console.log("Lost connection");
}
}
我已经使用了jQuery,但您可以使用vanilla JS或Angular或Ionic服务或工厂来实现这一点。有几种方法:
您可以在服务器上存储资产(可能是1px x 1px
GIF
图像),并不断对此进行轮询(每x
秒连续请求一次)。当然,您要确保此图像未被缓存。如果请求失败,您可以假定网络不可用。这很容易实现,但效率不高,因为轮询通过网络发送大量HTTP头
这要高效得多-在客户端和服务器中实现WebSocket
连接,并在打开应用程序时打开套接字。如果插座断开,您可以显示连接丢失
消息。这不需要重复发送HTTP请求。这是更有效的,但需要更多的工作来实现这一点李>
您可以在Ionic中为其中任何一个编写服务
最简单地说,选项1可以是:
setInterval(ajaxCall, 3000); //3000 MS == 3 sec
function ajaxCall() {
$.ajax('/testConnectivityUrl').then(function(response) {
console.log("Still connected");
}, function(err) {
console.log("Lost connection");
}
}
我用过jQuery,但你可以用vanilla JS或Angular或Ionic服务或工厂来实现这一点。我对Ionic框架不太了解,但Android框架中的ConnectionManager确实发出了一种声音。您可以实现BroadcastReceiver
来监听这些更改:
<receiver android:name=".ConnectivityReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
确保在清单中声明internet和网络状态权限
:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
请注意,连接更改可能很频繁,因此监控这些更改的成本可能很高。根据最佳实践,您应该仅在需要时启用:
通常只需检查互联网连接就足够了
在开始更新之前,如果没有更新,则进一步暂停
更新,直到连接恢复
我对爱奥尼亚框架了解不多,但Android框架中的ConnectivityManager
确实发出了一种声音。您可以实现BroadcastReceiver
来监听这些更改:
<receiver android:name=".ConnectivityReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
确保在清单中声明internet和网络状态权限
:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
请注意,连接更改可能很频繁,因此监控这些更改的成本可能很高。根据最佳实践,您应该仅在需要时启用:
通常只需检查互联网连接就足够了
在开始更新之前,如果没有更新,则进一步暂停
更新,直到连接恢复
等待因为我可以经常运行一个函数?是的。在最简单的级别上,您可以运行如下函数:setInterval(ajaxCall,3000)//3000毫秒==3秒函数ajaxCall(){//在这里做AJAX工作}
等等!,因为我可以经常运行一个函数?是的。在最简单的级别上,您可以运行如下函数:setInterval(ajaxCall,3000)//3000毫秒==3秒函数ajaxCall(){//在这里做AJAX工作}