我有一个商业应用程序有一个完全正当的理由看到它所连接的网络的SSID:如果它连接到第三方硬件设备的Adhoc网络,它需要以不同于它的方式运行连接到互联网.
我所看到的有关获取SSID的所有内容都告诉我必须使用Apple80211,我理解这是一个私有库.我还读到,如果我使用私人图书馆Apple将不会批准该应用程序.
我被困在苹果和硬地之间,还是我在这里缺少什么?
直到今天,我使用CaptiveNetwork接口显示当前连接的Wifi的名称.iOS 9 Prerelease参考已经说过,CaptiveNetwork方法现在被删除了,但它们仍然在开始时工作.
有了最新版本,Apple似乎已经阻止了这个电话(可能是出于隐私问题?).
有没有其他方法来获得当前Wifi的名称?
这就是我今天获得SSID的方式,但你现在只获得nil:
#import <SystemConfiguration/CaptiveNetwork.h>
NSString *wifiName = nil;
NSArray *interFaceNames = (__bridge_transfer id)CNCopySupportedInterfaces();
for (NSString *name in interFaceNames) {
NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)name);
if (info[@"SSID"]) {
wifiName = info[@"SSID"];
}
}
Run Code Online (Sandbox Code Playgroud) 是否可以在不使用私有库的情况下获取iPhone上所有可用SSID 的列表?
我在没有私有库的情况下阅读iPhone获取SSID,这是关于获取有关当前网络的详细信息.
这个答案提到:
如果您越狱设备,您可以使用Apple80211私有框架查找可用的Wi-Fi网络及其信号强度.但这也意味着您的应用会被拒绝.
Apple拥有CaptiveNetwork API,但似乎没有一个解决方案来获取所有可用网络的列表.似乎只能通过使用Apple80211私有库或连接到所有这些库来实现.
我错过了什么,或者没有解决方案?
这不是几十个类似问题的重复(太多无法列出),因为我有证据表明可以发布显示wifi网络列表的应用程序.
因此,它已被广泛接受和理解,如果不使用私有api,您将无法获得所有wifi网络的列表.使用私有API会导致应用程序被应用商店审核拒绝.
然而,谷歌在已发布的2016年10月26日他们的谷歌主页的应用程序最近做了它,所以它必须能够现在.怎么样?!?
注意 - 他们的App Store列表显示该应用支持iOS 8.0或更高版本.我需要进一步测试此功能是否仅存在于iOS 10版本的应用程序中,或者实际上是否也存在于iOS 8和9上.
(我在图像中显示了我的wifi名称和mac地址)
我正在使用Objective-C,所以如果您在Swift中提交解决方案,请提交一个ObjC!
我想定期扫描附近的Wi-Fi网络SSID(不连接它)并实现SSID过滤器(一个或多个).找到匹配后,将启动后端API调用.
我已经对iOS 10中的Hotspot Helper框架进行了快速研究.我发现,这些API并非设计用于我已经确定的用途.
看起来,iOS 11现在允许应用程序以编程方式管理Wi-Fi配置.Apple为热点配置方法和属性添加了网络扩展.请单击此处查看更改.
我的问题是,我可以通过新的iOS 11热点配置类实现我的目标吗?或者这是否提供已知网络的SSID或当前连接的网络?
对此的任何帮助都非常感谢.
ios ×5
iphone ×3
ssid ×3
objective-c ×2
bssid ×1
cocoa-touch ×1
ios10 ×1
ios11 ×1
ios9 ×1
xcode ×1