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