iOS上如何知道网络状态是不是为WiFi热点

Posted

技术标签:

【中文标题】iOS上如何知道网络状态是不是为WiFi热点【英文标题】:How to know if the network state is WiFi hotspot on iOSiOS上如何知道网络状态是否为WiFi热点 【发布时间】:2017-11-28 08:36:52 【问题描述】:

现在只能识别 WiFi/2G/3G/4G,但是当状态为 WiFi 热点时,AFNetworkReachabilityManagerReachability 也识别状态为 WiFi。请帮我实现这个要求,非常感谢。

【问题讨论】:

detect hotspot enabling in ios with private api's 的可能重复项。这个问题还包括一个不使用私有 API 的答案。 @RemcoBeugels 这个问题是关于检测当前手机上是否启用了热点。我认为 OP 是在询问是否检测当前手机是否连接到热点(与正确的接入点相比)。 【参考方案1】:

我找到了正确的方法:

- (void)startMonitorWifiChange 
    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
                                    NULL,
                                    &onNotifyCallback,
                                    CFSTR("com.apple.system.config.network_change"),
                                    NULL,
                                    CFNotificationSuspensionBehaviorDeliverImmediately);

static void onNotifyCallback(CFNotificationCenterRef center,
                             void *observer,
                             CFStringRef name,
                             const void *object,
                             CFDictionaryRef userInfo) 
    if (CFStringCompare(name, CFSTR("com.apple.system.config.network_change"), kCFCompareCaseInsensitive) == kCFCompareEqualTo) 
        //TODO when wifi changed
        [[BaiduLocationManager sharedManager].baiduLocationManager requestNetworkState];
    
    else 
        NBLog(@"intercepted %@", name);
    

- (void)stopMonitorWifiChange 
    CFNotificationCenterRemoveObserver(CFNotificationCenterGetDarwinNotifyCenter(),
                                       NULL,
                                       CFSTR("com.apple.system.config.network_change"),
                                       NULL);

【讨论】:

以上是关于iOS上如何知道网络状态是不是为WiFi热点的主要内容,如果未能解决你的问题,请参考以下文章

设置Wifi热点,提示“无法启动承载网络”怎么办

设置无线热点为啥无法启动承载网络

Ubuntu系统如何共享WIFI热点

iOS:如何查询 WiFi 状态

如何用android手机当wifi热点

WiFi和VPN会有冲突吗