首先强调一点,我谈论的是Mac OS X SDK,而不是iPhone。
为了确定“连接性”并获取标志,我做了类似于以下操作:
#import <SystemConfiguration/SystemConfiguration.h>
const char *hostName = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef target = SCNetworkReachabilityCreateWithName(NULL, hostName);
SCNetworkConnectionFlags flags = 0;
SCNetworkReachabilityGetFlags(target, &flags);
这对于获取 Google 可达性的信息来说没问题(这正是我想知道的)。
是否有一种方法可以添加一个观察者来跟踪这些变化?我一直在研究 SCDynamicStore
,但我发现 Apple 提供的单一 example 和文档有点令人不知所措。
理想情况下,我希望能够设置一个函数来处理标志更改,但只要能够通知 IP 是“掉落”/释放还是被获取就足够了。 (然后我可以在触发 IP 获取的函数中硬编码可达性)。
如果需要详细解释,请不要犹豫敲我。
if ((flags & kSCNetworkReachabilityFlagsIsDirect) == kSCNetworkReachabilityFlagsIsDirect)
和kSCNetworkReachabilityFlagsIsWWAN
kSCNetworkReachabilityFlagsIsDirect
。目前尝试断开/重连/使主机在/etc/hosts中不可用并未向我的应用程序推送任何通知。 - Josh