• 获取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了.

  • 相关阅读:
    How do I list all fields of an object in Objective-C?
    Duplicate the UIButton and Move it
    How to duplicate a UIButton in Objective C?
    SVN如何进行版本的还原
    OpenGL入门程序四:颜色模式
    OpenGL入门程序三:点、线、面的绘制
    OpenGL入门程序二:绘制简单的圆
    OpenGL入门程序一:绘制简单的矩形
    计算机图形学相关名词的简单理解
    C# 中的浅表副本与深表副本
  • 原文地址:https://www.cnblogs.com/striveLD/p/12797254.html
Copyright © 2020-2023  润新知