如何在后台检测WiFi网络状态?

时间:2016-11-07 10:44:24

标签: ios objective-c wifi reachability

我的应用程序需要检测后台更改的WiFi状态,并且我使用的逻辑与Apple Sample“Reachability”相同。当设备中没有SIM卡或关闭“设置”中的移动数据时,我会在“设置”中打开/关闭“Wi-Fi”。它可以在后台很好地检测WiFi状态。

但是,在“设置”中启用移动数据时,它始终无法正常工作。

以下密钥代码。当“移动数据”打开时,“networkReachabilityCallBack”功能无法运行。

if (proxyReachability) {
     NSLog(@"----setupNetworkReachabilityCallback------SCNetworkReachabilityUnscheduleFromRunLoop");
    [LinphoneLogger logc:LinphoneLoggerLog format:"Cancelling old network reachability"];

    SCNetworkReachabilityUnscheduleFromRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
    CFRelease(proxyReachability);
    proxyReachability = nil;
}
proxyReachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress);
if (!SCNetworkReachabilitySetCallback(proxyReachability, (SCNetworkReachabilityCallBack)networkReachabilityCallBack, ctx)){
    [LinphoneLogger logc:LinphoneLoggerError format:"Cannot register reachability cb: %s", SCErrorString(SCError())];
    return;
}
if(!SCNetworkReachabilityScheduleWithRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)){
    [LinphoneLogger logc:LinphoneLoggerError format:"Cannot register schedule reachability cb: %s", SCErrorString(SCError())];
    return;
}

我该如何解决?

0 个答案:

没有答案