Tag: 可达性

从不调用可达性通知

我很难在代码中使用可达性。 我希望通过在启动时发起一个观察员,然后只是接收更改通知来保持它非常简单。 在下面的代码中,reachabilityChanged方法永远不会被调用。 我已经尝试了很多迭代,但这是最简单的版本。 它编译和运行。 请帮忙… ** * * AppDelegate.h代码* ** * #import <UIKit/UIKit.h> #ifdef PHONEGAP_FRAMEWORK #import <PhoneGap/PGViewController.h> #import <PhoneGap/PGURLProtocol.h> #import <PhoneGap/Reachability.h> #else #import "PGViewController.h" #import "PGURLProtocol.h" #import "Reachability.h" #endif @interface AppDelegate : NSObject < UIApplicationDelegate, UIWebViewDelegate, PGCommandDelegate> { NSString* invokeString; } @property (nonatomic, copy) NSString* invokeString; @property (nonatomic, strong) IBOutlet UIWindow* window; @property (nonatomic, […]

我应该在每个UIViewController中侦听可达性更新吗?

我看到很多Reachability示例,其中只有当可访问性状态更改时才显示消息。 但是最近,我在Foursquare的应用程序中看到,每当用户尝试进行需要Internet连接的操作时,他们都会显示一条消息。 我认为这是更强大和更好的用户体验提醒用户,他不能做任何事情,没有互联网。 主要是因为用户可以在应用程序之间切换,做别的事情,忘记他回来时没有任何联系。 另外,只要他们获得连接,我可以看到他们从互联网获取数据并刷新UI。 我真正想要的是做到这一点的最好方法。 这是怎么完成的? 他们有一个普遍的UIViewController,每次需要连接时都检查可达性吗? 或者,在每个互联网请求取消请求并显示消息之前,他们是否有一种代理类? 你们是怎么处理的? 谢谢。 编辑: 我提出的解决scheme是使用AFNetworking,它也提供了可达性状态。 基本上我创build了一个AFHTTPClient并设置一个可达性callback块来监听状态的变化。 AFHTTPClient对象是应用程序范围的(一种单例)。 (事实上​​,我有一个AFHTTPClient每个主机我需要达到a.com,b.com …)。 然后,当我需要执行一个请求时,我创build了一个新的AFHTTPRequestOperation(AFJSONRequestOperation,在我的情况下),并将其排入我的AFHTTPClient对象。 在操作的失败块中,我检查主机是否可以通过AFHTTPClient的networkReachabilityStatus属性访问。 如果无法访问,则显示一条消息,指示用户没有互联网连接。 我把它包起来,所以我不必每次创build一个操作就这样做。 所以现在在应用程序中,每当用户在没有连接的情况下尝试做某件事时,他都会记住他没有互联网接入的信息。 我也使用可达性callback来重新加载屏幕上的数据,一旦我得到连接(或更确切地说,我应该有一个连接)。 我不知道这是否是最好的做法,但我认为很高兴知道一旦有新的连接可用,应用程序将负责重新加载重要数据。 如果有人通过示例代码感兴趣,我可以提供。

如何在Alamofire中使用NetworkReachabilityManager

我想在Objective-C中使用类似于AFNetworkingfunction,在Swift中使用Alamofire NetworkReachabilityManager: //Reachability detection [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: { [self LoadNoInternetView:NO]; break; } case AFNetworkReachabilityStatusReachableViaWiFi: { [self LoadNoInternetView:NO]; break; } case AFNetworkReachabilityStatusNotReachable: { break; } default: { break; } } }]; 我正在使用监听器来了解networking状态的变化 let net = NetworkReachabilityManager() net?.startListening() 有人可以描述如何支持这些用例吗?

使用Apple的Reachability在Swift中检查远程服务器的可达性

我正在开发用Swift编写的iOS应用程序,它与本地networking上的HTTP服务器进行通信,并使用Apple的Reachability类来确定运行HTTP服务器的远程机器是否在线。 代码如下: … let RemoteHost: String = "192.168.178.130" var RemoteReachability: Reachability! = nil var RemoteIsReachable: Bool = false init() { super.init() self.RemoteReachability = Reachability(hostName: self.RemoteHost) NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityChanged:", name: kReachabilityChangedNotification, object: self.RemoteReachability) self.RemoteReachability.startNotifier() self.RemoteIsReachable = (self.RemoteReachability.currentReachabilityStatus().value == ReachableViaWiFi.value) } func reachabilityChanged(notification: NSNotification) { let ReachabilityInst: Reachability = notification.object as Reachability self.RemoteIsReachable = (ReachabilityInst.currentReachabilityStatus().value == ReachableViaWiFi.value) […]

iOS检测连接速度或types

可能重复: iPhone检测3G或WiFi 有没有办法获得当前的networking速度,或者如果设备在EDGE / 3G / GPRS? 我可以使用Reachability来区分WiFI和WMAN,但这对我的应用程序来说还不够。

build立与AFNetworking 2.0的可达性

我正在尝试使用新的2.0 AFNetworking设置可达性。 在我的AppDelegate我初始化sharedManager。 // Instantiate Shared Manager [AFNetworkReachabilityManager sharedManager]; 然后在相关的VC方法中检查是否isReachable: // Double check with logging if ([[AFNetworkReachabilityManager sharedManager] isReachable]) { NSLog(@"IS REACHABILE"); } else { NSLog(@"NOT REACHABLE"); } 目前这在模拟器中没有像预期的那样工作,但我想这将需要在设备上而不是模拟器上进行testing。 问题我想要做的是监视VC内的连接。 所以我在viewDidLoad中运行以下代码: // Start monitoring the internet connection [[AFNetworkReachabilityManager sharedManager] startMonitoring]; 我将如何注册更改? 一旦networking连接发生变化,将会调用什么,我无法从文档中看到。

可达性飞机模式(3G)与WiFi

我知道如果手机可以访问Wifi或3Gnetworking,可达码将会提供。 但是,如果手机有3G和Wifi,则可达性代码默认为说手机已启用Wifi,并且无法检测3Gnetworking是否启用(飞行模式开启或closures)。 我需要找出具体的3G模式是否打开或closures的Wifi也打开。 这里是代码: Reachability *reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus status = [reachability currentReachabilityStatus]; NSLog(@"status: %u", status); if(status == NotReachable) //status = 0 { //No internet NSLog(@"nothing is reachable"); } if (status == ReachableViaWiFi) //status = 1 { //WiFi NSLog(@"Wifi is available"); } if (status == ReachableViaWWAN) //status = 2 { //3G NSLog(@"3G […]

如何从iOS Reachability Class获取networking连接通知的更改?

嗨,我想捕获每当用户在我的应用程序中获得networking连接,我已经添加了苹果可达性类和以下是我在我的appDelegate类didFinishLaunchingWithOptions方法中使用的代码段, Reachability* reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; 和我的reachabilityChangedselect器的方法如下 – (void)reachabilityChanged:(NSNotification*)notification { Reachability* reachability = notification.object; if(reachability.currentReachabilityStatus == NotReachable) NSLog(@"Internet off"); else NSLog(@"Internet on"); } 但在这里我没有得到任何forms的通知,当我closures我的飞行模式,当我在我的手机networking连接。 我错过了什么?

如何使用iOS可达性

我正在开发一个使用networking的iPhone应用程序。 iPhone通过HTTP请求与我的服务器通信,应该在WiFi和3G上工作。 我目前使用NSURLConnection initWithRequest向我的服务器发送asynchronous请求,并获得响应(但我很快将移动到ASIHTTPRequest库) 我明白,与这种types的应用程序(需要互联网连接的应用程序),我应该(必须)使用可达性。 在search网页并查看Apple的Reachability示例代码后,我仍然不明白一些基本的东西: 可达性的主要目的是什么? 在苹果的例子中,他们检测与主机,WiFi和3G的networking问题,并向用户呈现适当的消息。 这是Reachability的主要目的,向用户显示一条消息? 还是我需要使用它为更实际的情况? 例如,如果NSURLConnaction请求失败,我需要使用Reachability以某种方式重新发送请求? 可达性的正确使用是什么? 在应用程序启动时仅使用一个实例是否很常见,然后再听networking更改? 还是应该在每个networking请求之前检查自己的可达性状态? 是否足够使用reachabilityWithHostName还是我还需要reachabilityForLocalWiFi和reachabilityForInternetConnection ? 还有一件事 ,我明白苹果可以拒绝使用networking的应用程序,而不使用可达性。 我应该执行什么“ 必须 ”做的方法? 只是通知用户目前没有互联网就足够了吗?

如何使用可达性类来检测有效的Internet连接?

我是iOS开发新手,正努力让reachability.h类工作。 这是我的视图控制器的代码: – (void)viewWillAppear:(BOOL)animated { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; internetReachable = [Reachability reachabilityForInternetConnection]; [internetReachable startNotifier]; } – (void)checkNetworkStatus:(NSNotification *)notice { NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; NSLog(@"Network status: %i", internetStatus); } 它看起来不错,但在运行应用程序并切换到该视图时,xcode控制台中没有任何显示。 我正在使用Reachability 2.2和iOS 4.2。 有什么明显的,我做错了吗?