我看到很多可达性的例子,人们只在可达性状态改变时显示消息。但最近我在Foursquare应用程序中看到,他们每次用户尝试执行需要互联网连接的操作时都会显示一条消息。我认为这更加健壮,也更好的用户体验,提醒用户没有互联网就无法进行任何操作。主要是因为用户可以在应用之间切换,做其他事情,当他回来时忘记了他没有连接。
同时,一旦他们恢复了连接,我可以看到他们从互联网获取数据并刷新UI。
我真正想知道的是如何以最佳方式实现这一点。怎么做?他们是否有一个通用的UIViewController,在每次需要连接时检查可达性?还是在每个Internet请求之前都有一种代理类取消请求并显示消息?你们是如何处理这个问题的?
谢谢。
编辑:
我想出的解决方案是使用AFNetworking,它也在盒子里提供可达性状态。基本上,我创建了一个AFHTTPClient,并在其上设置了一个可达性回调块来监听状态更改。AFHTTPClient对象是应用程序范围的(一种单例)。 (实际上,我对于每个需要访问的主机都有一个AFHTTPClient:a.com,b.com ...)。
然后,当我需要执行请求时,我创建一个新的AFHTTPRequestOperation(在我的情况下是AFJSONRequestOperation),并将其排队到我的AFHTTPClient对象上。在操作的失败块中,我检查使用AFHTTPClient的networkReachabilityStatus属性是否可达主机。如果不可达,我向用户显示没有互联网连接的消息。
我将其封装起来,以便每次创建操作时都不必这样做。因此,现在在应用程序中,每当用户在没有连接时尝试做某事时,他都会收到一条消息,提醒他没有互联网访问权限。我还使用可达性回调来重新加载屏幕上的数据,一旦我恢复了连接(或者说一旦我应该有连接)。
我不知道这是否是最佳实践,但我认为知道应用程序在新连接可用时立即重新加载重要数据是很好的。
如果有人对示例代码感兴趣,我可以提供它。
同时,一旦他们恢复了连接,我可以看到他们从互联网获取数据并刷新UI。
我真正想知道的是如何以最佳方式实现这一点。怎么做?他们是否有一个通用的UIViewController,在每次需要连接时检查可达性?还是在每个Internet请求之前都有一种代理类取消请求并显示消息?你们是如何处理这个问题的?
谢谢。
编辑:
我想出的解决方案是使用AFNetworking,它也在盒子里提供可达性状态。基本上,我创建了一个AFHTTPClient,并在其上设置了一个可达性回调块来监听状态更改。AFHTTPClient对象是应用程序范围的(一种单例)。 (实际上,我对于每个需要访问的主机都有一个AFHTTPClient:a.com,b.com ...)。
然后,当我需要执行请求时,我创建一个新的AFHTTPRequestOperation(在我的情况下是AFJSONRequestOperation),并将其排队到我的AFHTTPClient对象上。在操作的失败块中,我检查使用AFHTTPClient的networkReachabilityStatus属性是否可达主机。如果不可达,我向用户显示没有互联网连接的消息。
我将其封装起来,以便每次创建操作时都不必这样做。因此,现在在应用程序中,每当用户在没有连接时尝试做某事时,他都会收到一条消息,提醒他没有互联网访问权限。我还使用可达性回调来重新加载屏幕上的数据,一旦我恢复了连接(或者说一旦我应该有连接)。
我不知道这是否是最佳实践,但我认为知道应用程序在新连接可用时立即重新加载重要数据是很好的。
如果有人对示例代码感兴趣,我可以提供它。