Ios 无法调用可达性通知。使用tonymillion/可达性

Ios 无法调用可达性通知。使用tonymillion/可达性,ios,cocoa-touch,reachability,Ios,Cocoa Touch,Reachability,我正在使用此库在设备上的连接状态更改时获得通知。我不明白这为什么不起作用!我所做的正是我在github文档中看到的 当应用程序启动时,会发布通知,但当我打开设置、打开/关闭飞行模式并返回应用程序(不关闭)时,不会调用通知 我还订阅了UIApplicationWillEnterForegroundNotification通知。。。应用程序中确实存在这两种方法。。。我错过什么了吗 这在我的viewDidLoad中: self.reach = [Reachability reachabilityWit

我正在使用此库在设备上的连接状态更改时获得通知。我不明白这为什么不起作用!我所做的正是我在github文档中看到的

当应用程序启动时,会发布通知,但当我打开设置、打开/关闭飞行模式并返回应用程序(不关闭)时,不会调用通知

我还订阅了UIApplicationWillEnterForegroundNotification通知。。。应用程序中确实存在这两种方法。。。我错过什么了吗

这在我的viewDidLoad中:

self.reach = [Reachability reachabilityWithHostname:kServerURL];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(reachabilityChangedInApp:)
                                             name:kReachabilityChangedNotification
                                           object:nil];
[self.reach startNotifier];

[[NSNotificationCenter defaultCenter] addObserver:self
                                        selector:@selector(initializeDateRelatedStuff:)
                                            name:UIApplicationWillEnterForegroundNotification
                                          object:nil];
这是我的决定

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

谢谢

问题是,您的应用程序很可能不是后台应用程序,因此,一旦按下home(主页)按钮激活飞行模式,应用程序就会暂停。由于可达性发生变化时,应用程序未运行,因此不会收到任何通知。但是,当应用程序处于前台时,网络可达性发生变化时,您将收到通知


因此,除了您已经实现的功能外,您可能还需要检查应用程序进入前台时的可访问性。

kServerURL是NSString吗?另外,reachabilityChangedInApp的代码是什么:?是的,它是一个带有google URL的NSString。它只是一个调用一些依赖于网络的方法的函数。但是等等。。。“非后台应用程序”是什么意思?当我打开我的应用程序时,它会在原来的位置启动。这不是UIApplicationExitsOnSuspend>true。谢谢你的邀请!是的,当你打开你的应用程序时,它从你离开的地方开始。但这并不意味着您的应用程序在按下home按钮后继续运行。你可能想检查一下。如果您没有请求额外的后台执行时间(比如音频或导航应用程序),则您的应用程序在不在前台时将被挂起。在这种状态下,您无法处理任何通知。