前段时间我给公司做iPhone程序的时候,提交到App Store被拒绝,原因之一就是因为我没有检测网络情况,当网络不能正常访问的时候,系统不会提示。大致说说我们手机程序的情况吧,实际上是一个内嵌Web浏览器的程序,程序在启动的时候,会加载一个本地的loading.html,然后再跳转到我们的网站,用户实际上是在手机网站上操作,但对于用户一说,他们是不知道的。
一般情况下,我们检测网络都是通过调用手机的API检测网络,然后它告诉我们正常,我们就认为是正常的。且不论这种检测的方案需要较复杂的代码,还有一个问题就是——这种检测正确吗?当手机网络正常,但你的服务器出问题的时候呢?手机的API是不能检测出来的,因为它只检测网络是否通而已。再者,你如何写一个通用代码,可以在iPhone及Android上使用?答案就是——javascript。
我之前有谈到,iPhone和Android都对Javascript有较好的支持,支持ajax及timeout,那么,我们就可以利用这样一个特性,请看以下步骤:
- 首先你的手机应该是需要用到UIWebView(iphone)或者WebView(Android & OPhone),或者是其它支持javasciprt及timeout的内嵌浏览器
- 我们在web服务器上放一个js文件,只需要一句代码,location.href="http://iove.net"
- 在客户端写如下代码:
<script language="javascript"> function showError() { //android用如下代码,需要在程序中添加jssalert事件 window.demo.connectError("Can't connect server, please check network."); //iphone用如下代码 alert("Can't connect server, please check network."); } window.setTimeout("showError()", 10000); </script> <script src="http://m.jsj.com.cn/agent.js"></script>
什么意思呢?原理大概是这样的,我们在服务器上放了一个js,然后使用location.href跳转到转个网站,然后在手机加载的html中,加一个延时,如果10秒钟还停在本页,就说明网络是有问题的。代码很简单,只是取了一个巧而已。
注意:本文为我的独立博客镜像博客,自发表不再更新,原文可能随时被更新,敬请访问原文。同时,请大家不要在此评论,如果有什么看法,请点击这里:http://iove.net/1705/
本文来自http://iove.net,欢迎转载,转载敬请保留相关链接,否则视为侵权,原文链接:http://iove.net/1705/
浙公网安备 33010602011771号