我听说iOS 5引入了一个功能,即iOS设备可以通过ExternalAccessory框架与停靠的配件共享其wifi配置。问题是,我在SDK文档中找不到任何有关实现此类方案的具体细节。
经过我的研究,我开始怀疑它是通过“iPhone配置实用程序”实现的,但这仍然似乎是在设备上实施的一种混乱方法。
有人有什么想法吗?
一旦wifi设置数据可用,将很容易将其打包并通过ExternalAccessory框架发送到设备,我将相应地构建协议支持。
谢谢
我听说iOS 5引入了一个功能,即iOS设备可以通过ExternalAccessory框架与停靠的配件共享其wifi配置。问题是,我在SDK文档中找不到任何有关实现此类方案的具体细节。
经过我的研究,我开始怀疑它是通过“iPhone配置实用程序”实现的,但这仍然似乎是在设备上实施的一种混乱方法。
有人有什么想法吗?
一旦wifi设置数据可用,将很容易将其打包并通过ExternalAccessory框架发送到设备,我将相应地构建协议支持。
谢谢
configureAccessory
是iOS 8.0中引入的方法(属于ExternalAccessory
),您可以使用它来配置WiFi配件:
这是 EAWiFiUnconfiguredAccessoryBrowser
类的一部分:
https://developer.apple.com/documentation/externalaccessory/eawifiunconfiguredaccessorybrowser
而showBluetoothAccessoryPicker
是用于蓝牙产品的一个函数:
这是 EAAccessoryManager
类的一部分:
https://developer.apple.com/documentation/externalaccessory/eaaccessorymanager
我怀疑苹果公司是否会允许普通开发者访问私人数据,例如wifi连接设置。也许可信任的第三方配件提供商可以,但你可能不行。
Wifi设置是私人的,并包含密码。一个普通(非高级)用户使用更多或更少相同/类似的密码,包括他们的Wifi网络。如果一个应用程序可以轻松读取它,那么它可能会被严重利用。
同样,您无法获取Apple id,更别说密码了。
你看过这个吗:iPhone无需私有库获取SSID?
询问应用用户安全网络密码是否不可行?
你至少可以获取未加密网络的SSID,并使用getter将其传递给你的附件,例如:
#import <SystemConfiguration/CaptiveNetwork.h>
@implementation DeviceWifiSSID
//https://dev59.com/fG435IYBdhLWcg3w0ThP#5198968
+(NSString *)deviceSSID
{
NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
id info = nil;
for (NSString *ifnam in ifs) {
info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
if ([info objectForKey:@"SSID"] != nil)
{
return [info objectForKey:@"SSID"];
}
}
return nil;
}
@end