我看到很多Reachability示例,其中人们只在可达性状态发生变化时显示消息.
但最近,我在Foursquare应用程序中看到,每次用户尝试执行需要Internet连接的操作时,它们都会显示一条消息.
我认为这是一个更强大和更好的用户体验提醒用户他没有互联网不能做任何事情.主要是因为用户可以在应用程序之间切换,做其他事情并忘记他回来时没有联系.
一旦他们获得连接,我就可以看到他们从Internet获取数据并刷新UI.
我真正想要的是最好的方法.怎么做的?
他们是否有一个通用的UIViewController,每次需要连接时都会检查是否具有可达性?
或者,在每个取消请求并显示消息的Internet请求之前,他们是否有一种代理类?你们是如何处理的?
谢谢.
编辑:
我提出的解决方案是使用AFNetworking,它还在框中提供可达性状态.
基本上我创建了一个AFHTTPClient并在其上设置了一个可达性回调块来监听状态变化.AFHTTPClient对象是应用程序范围的(一种单例).(事实上,每个主机我有一个AFHTTPClient,我需要到达a.com,b.com ......).
然后,当我需要执行请求时,我创建了一个新的AFHTTPRequestOperation(在我的情况下是AFJSONRequestOperation),然后我将它排入AFHTTPClient对象.在操作的故障块中,我检查主机是否可以使用networkReachabilityStatus
AFHTTPClient 的属性访问.如果无法访问,我会显示一条消息,表明用户没有互联网连接.
我把它包起来,所以每次创建操作时我都不必这样做.所以现在在应用程序中,每当用户尝试在没有连接时做某事时,他都会收到一条消息,记住他没有互联网访问权限.
我还使用可达性回调在我获得连接后重新加载屏幕上的数据(或者更确切地说,一旦我应该有连接).
我不知道这是不是最佳做法,但我认为很高兴知道应用程序会在新连接可用时立即重新加载重要数据.
如果有人对示例代码感兴趣,我可以提供它.
我们向苹果提交了cordova phonegap应用程序,并拒绝了我们的应用程序不支持ipv6.这是我们第一次收到此错误,并且不确定解决此问题的确切步骤.
我们的应用程序使用亚马逊ec2,我们注意到亚马逊ec2不支持ipv6.所以我们想知道我们需要在哪里解决这个问题?在亚马逊或应用内?
如果它是亚马逊,我们如何解决它?我们试图通过添加ELB来解决亚马逊问题,但它还没有解决问题.
我们使用最新版本的cordova,所有库都是最新版本.请告诉我们