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

我该如何解决?