【问题标题】:How to check network provider name in iOS programming?如何在 iOS 编程中检查网络提供商名称?
【发布时间】:2012-03-09 16:15:55
【问题描述】:

我需要检查设备是否已正确连接到“My-Wifi”网络。如果它已连接,那么我将向服务器发送一些数据,否则不会。

现在我正在使用 Reachability 类检查 Internet 连接。

那么如何检查呢?

【问题讨论】:

  • Reachability 也允许检查 WiFi。

标签: ios client-server wifi network-connection


【解决方案1】:

您可以使用CNCopySupportedInterfaces()电话。

CFArrayRef interfaces = CNCopySupportedInterfaces();
CFIndex count = CFArrayGetCount(interfaces);

for (int i = 0; i < count; i++) {
    CFStringRef interface = CFArrayGetValueAtIndex(interfaces, i);
    CFDictionaryRef netinfo = CNCopyCurrentNetworkInfo(interface);
    if (netinfo && CFDictionaryContainsKey(netinfo, kCNNetworkInfoKeySSID)) {
        NSString *ssid = (__bridge NSString *)CFDictionaryGetValue(netinfo, kCNNetworkInfoKeySSID);
        // Compare with your needed ssid here
    }

    if (netinfo)
        CFRelease(netinfo);
}
CFRelease(interfaces);

根据我的经验,数组中通常会有一个接口,如果您已连接,则该接口将是一个有效的结构;如果您没有连接,该接口将是一个有效的结构或NULL。我还是让 for 循环在那里以防万一。

只有在使用 ARC 时,才需要在里面添加 __bridge

【讨论】:

  • 嘿,如何使用 __bridge,是的,我正在为我的项目使用 ARC。我该怎么办?
  • 当您想从不返回 ARC 支持的对象所有权的函数中进行转换时,您可以像我提供的示例中那样使用。对于 ssid cast,Xcode 实际上为我插入了 __bridge。
  • 我遇到错误该怎么办,“使用未声明的标识符 '__bridge'”
  • 检查答案here。您要么不需要 __bridge,要么需要打开 ARC。
  • 是的,我确实启用了 ARC,但出现了该错误。即使我删除了__bridge,错误也会变为“错误:自动引用计数不允许将非Objective-C的'NSString *'强制转换为Objective-C指针”
猜你喜欢
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 2011-10-10
  • 1970-01-01
相关资源
最近更新 更多