【问题标题】:Reachability notification not getting called. Using tonymillion/Reachability未调用可达性通知。使用 tonymillion/Reachability
【发布时间】:2013-08-05 17:44:14
【问题描述】:

我正在使用这个库来在设备上的连接状态发生变化时得到通知。我不明白为什么这不起作用!我正在做的正是我在 github 的文档中阅读的内容!

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

我还订阅了获取 UIApplicationWillEnterForegroundNotification 通知...这两种方法都存在于应用程序中...我错过了什么吗?!?

这是在我看来DidLoad:

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];
}

谢谢!!

【问题讨论】:

  • kServerURL 是 NSString 吗?另外,reachabilityChangedInApp: 的代码是什么?
  • 是的,它是一个带有谷歌 URL 的 NSString。它只是一个调用一些网络相关方法的函数。

标签: ios cocoa-touch reachability


【解决方案1】:

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

因此,除了您已经实现的内容之外,您可能还想检查应用进入前台时的可达性。

【讨论】:

  • 但是等等……“不是后台应用程序”是什么意思?当我打开我的应用程序时,它会从它离开的地方开始。这不是 UIApplicationExitsOnSuspend > true。感谢您的提问!
  • 是的,当您打开您的应用程序时,它会从您离开的地方开始。但这并不意味着您的应用程序在您按下主页按钮后继续运行。您可能想查看App States and Multitasking Guide。如果您没有为后台执行请求额外的时间(例如,音频或导航应用程序可以这样做),则您的应用程序在不在前台时会暂停。而且在这种状态下你不能处理任何通知。
猜你喜欢
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
相关资源
最近更新 更多