内嵌手机浏览器如何检测网络是否正常


2009-12-4 15:50 手机 没有评论765

  前段时间我给公司做iPhone程序的时候,提交到App Store被拒绝,原因之一就是因为我没有检测网络情况,当网络不能正常访问的时候,系统不会提示。大致说说我们手机程序的情况吧,实际上是一个内嵌Web浏览器的程序,程序在启动的时候,会加载一个本地的loading.html,然后再跳转到我们的网站,用户实际上是在手机网站上操作,但对于用户一说,他们是不知道的。

一般情况下,我们检测网络都是通过调用手机的API检测网络,然后它告诉我们正常,我们就认为是正常的。且不论这种检测的方案需要较复杂的代码,还有一个问题就是——这种检测正确吗?当手机网络正常,但你的服务器出问题的时候呢?手机的API是不能检测出来的,因为它只检测网络是否通而已。再者,你如何写一个通用代码,可以在iPhone及Android上使用?答案就是——javascript。

我之前有谈到,iPhone和Android都对Javascript有较好的支持,支持ajax及timeout,那么,我们就可以利用这样一个特性,请看以下步骤:

  1. 首先你的手机应该是需要用到UIWebView(iphone)或者WebView(Android & OPhone),或者是其它支持javasciprt及timeout的内嵌浏览器
  2. 我们在web服务器上放一个js文件,只需要一句代码,location.href=”http://iove.net”
  3. 在客户端写如下代码:
<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秒钟还停在本页,就说明网络是有问题的。代码很简单,只是取了一个巧而已。

无觅相关文章插件,快速提升流量

嗯,或者你也可以收听我的微博,腾讯微博(主要用这个,其他的看我的个人介绍)

我写博客常常出现错别字,常常错得还很离谱,有时候我自己看了第二遍都骂我自个儿,但我又不习惯重复审查,纠结啊...各位看到啥错别字或者不明白的地方,请给我留言指出来,感谢感谢。

  

  • 评论敬告那些为做SEO而评论的朋友,本博不欢迎此类评论,请不要利用本博做关键字,一律封杀。

    绝不跨省追捕
    不会发垃圾邮件
    增加你的流量