我的应用程序需要检测后台更改的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;
}
我该如何解决?