zoukankan      html  css  js  c++  java
  • 获取Wi-Fi的SSID

    前几天做项目的时候,碰到一个问题,获取wifi的SSID,其实就是获取Wi-Fi的名字

    iOS12以前

    在iOS13之前获取wifi的SSID很简单,苹果提供了接口CNCopyCurrentNetworkInfo,直接调用就可以拿到了,附上代码:

    -(NSString *)getSSIDWhenAuth {

      NSString *ssidNameStr = @"GET_SSID_FAILED";

      NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();

      for (NSString *ifname in ifs) {

        NSDictionary *ifDic = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);

        if(ifDic[@"SSID"]){

          ssidNameStr = ifDic[@"SSID"];

        }

      }

      return ssidNameStr;

    }

    是不是很简单,后来苹果处于对安全的考虑,这样是不行滴.

    iOS12以后,Xcode11之前

    在iOS 12中,经断点调试发现info为nil。猜测是CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。通过查看官方文档,发现文档中增加了Important字样的描述:

    Important To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.
    重要描述 在iOS 12+中使用此方法需要在Xcode中为应用授权获取WiFi信息的能力。授权后,Xcode会自动在App ID和应用的权限列表中增加获取WiFi信息的权限。
     
    下面就开始操作
    Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON

    按照上述方案操作完毕后,会发现工程的.entitlements文件中多了一对Key-Value

    接下来就可以正常获取ssid了,不过我现在环境是iOS13+,Xcode11+,发现Xcode没有Access WiFi Information开关了,查了很多资料,需要在开发者账号里配置.

    iOS12以后,Xcode11之后,重新创建证书

    步骤1、登录开发者账号

    步骤2、钥匙串生成CSR文件

    步骤3、创建证书

     

     

     

     

    步骤4:创建完下载证书双击安装到Xcode

    步骤5:

    双击2位置,这时会在下面多出一条Access WiFi Information,这时就可以正常获取到ssid了.

  • 相关阅读:
    fiddler居然有mac版本了
    java学习笔记02 导入,方法调用,私有公有,静态非静态
    apscheduler笔记
    java学习笔记01 类型,List,Set,循环
    fiddler笔记
    为什么有些端口不能用?
    ubuntu借网
    filecoin
    django密码生成
    python-panda
  • 原文地址:https://www.cnblogs.com/striveLD/p/12797254.html
Copyright © 2011-2022 走看看