ios - 如何同步检查互联网连接?

标签 ios connection afnetworking reachability

如何同步检测网络?我希望网络检查阻塞调用线程并返回正确的结果

我试过了 tonymillion's ReachabilityAFNetworkReachabilityManager但他们都使用回调 block 。表示回调前可达性状态未知。

我想在 applicationDidFinishLaunchingWithOptions: 检查网络,但此时,可达性为 AFNetworkReachabilityStatusUnknown (AFNetworkReachabilityManager) 或不可靠(tonymillion 的 Reachability)

我看到唯一的方法是像这样对某些主机(例如 google.com)执行 NSURLConnection Check for internet connection - iOS SDK

有没有更好的办法?

最佳答案

回答我自己的问题:靠谱

阅读此 Technical Q&A QA1693 Synchronous Networking On The Main Thread

reachability — The System Configuration framework reachability API () operates synchronously by default. Thus, seemingly innocuous routines like SCNetworkReachabilityGetFlags can get you killed by the watchdog. If you're using the reachability API, you should use it asynchronously. This involves using the SCNetworkReachabilityScheduleWithRunLoop routine to schedule your reachability queries on the run loop

所以我们可以这样使用它iOS: Check whether internet connection is available

- (BOOL) isConnectionAvailable
{
    SCNetworkReachabilityFlags flags;
        BOOL receivedFlags;

        SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [@"dipinkrishna.com" UTF8String]);
        receivedFlags = SCNetworkReachabilityGetFlags(reachability, &flags);
        CFRelease(reachability);

        if (!receivedFlags || (flags == 0) )
        {
            return FALSE;
        } else {
        return TRUE;
    }
}

关于ios - 如何同步检查互联网连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535842/

相关文章:

objective-c - 在 UITableView 中禁用滑动删除手势

ios - 可编码 swift 4

java - 建议的 Ping 和 URL 连接超时是多少?

ios - 当应用程序有互联网连接时,将离线核心数据与服务器同步

iphone - 同步 AFNetworking 调用

ios - 设置后缺少 AFNetworking 请求 header

ios - 为什么我的场景相机在使用 SCNTechnique 时只显示黑屏?

ios - 尝试创建 iOS 应用程序存档时出错 : "Unable to create a provisioning profile because your team has no devices registered."

c# - C# 中的 MySql 连接

mysql - NodeJS mysql 模块将 localhost 转换为 127.0.0.1 并且连接失败