当用户的设备突然连接到 wifi 时,是否会发送通知?还是这种性质的东西?
我希望我的应用程序委托中的某个选择器/方法在用户连接到无线时运行。我怎么知道什么时候执行我的选择器?
** 编辑 **
如果有人需要,我最终找到了一个IOS 5 ARC 友好版本的可达性。
当用户的设备突然连接到 wifi 时,是否会发送通知?还是这种性质的东西?
我希望我的应用程序委托中的某个选择器/方法在用户连接到无线时运行。我怎么知道什么时候执行我的选择器?
** 编辑 **
如果有人需要,我最终找到了一个IOS 5 ARC 友好版本的可达性。
您应该从此处包含 Reachability 标头和实现。
前段时间我做了一个项目,我需要检查我是否在某些时候连接到 WiFi。以下是一些可能对您有用的代码:
- (BOOL) connectedToNetwork
{
// Create zero addy
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
// Recover reachability flags
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags)
{
printf("Error. Could not recover network reachability flags\n");
return 0;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;
return ((isReachable && !needsConnection) && !(nonWiFi)) ? YES : NO;
}
如果连接到 WiFi,则返回 true。
检测何时发生更改的一种方法是运行NSTimer并检查结果是否随时间变化。不过,您不希望过于频繁地运行它。