前段时间我给公司做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/],原文链接:http://iove.net/archives/1280.html,网站转载请注明来源于涂雅并保留原文链接,否则视为侵权。
嗯,或者你也可以收听我的微博,腾讯微博(主要用这个,其他的看我的个人介绍)
我写博客常常出现错别字,常常错得还很离谱,有时候我自己看了第二遍都骂我自个儿,但我又不习惯重复审查,纠结啊...各位看到啥错别字或者不明白的地方,请给我留言指出来,感谢感谢。
gmail.com
最新评论