为了便于私人使用,我尝试使用以下代码加载WiFi管理器(iOS 6.1):
airportHandle = 0;
libHandle = 0;
libHandle = dlopen(
"/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager"
//"/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfifuration"
, RTLD_LAZY);
if(libHandle != 0)
{
disassociate = (int (*)())dlsym(libHandle, "Apple80211Disassociate");
open = (int (*)(void*))dlsym(libHandle, "Apple80211Open");
bind = (int (*)(void*, NSString*))dlsym(libHandle, "Apple80211BindToInterface");
close = (int (*)(void*))dlsym(libHandle, "Apple80211Close");
scan = (int (*)(void*, NSArray**, void*))dlsym(libHandle, "Apple80211Scan");
associate = (int (*)(void*, void*, NSString*))dlsym(libHandle, "Apple80211Associate");
info = (int (*)(void*, NSDictionary**))dlsym(libHandle, "Apple80211GetInfoCopy");
GetPower = (int (*)(void*, char*))dlsym(libHandle, "Apple80211GetPower");
SetPower = (int (*)(void*, char))dlsym(libHandle, "Apple80211SetPower");
listinfo = (int (*)(void*, NSDictionary**))dlsym(libHandle, "Apple80211GetIfListCopy");
open(&airportHandle);
bind(airportHandle, @"en0");
}然而,libHandle是NULL。
我是否需要使用越狱设备,还是没有办法只停留在Private API。
谢谢,
发布于 2014-04-23 15:37:29
这不是答案,而是要看的方向。
据我所知,苹果公司曾多次(从一个框架到另一个框架)移动WiFi API。因此,很可能这条路径("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager")已经过时了。
您应该能够使用dlopen,即使在没有越狱的iOS设备上也可以获得一个句柄。所以,这不是问题。不过,我不知道你所提及的这些空气污染指数是否不受居留权的保障。
如果您有iOS 6模拟器,我建议您去那里,并尝试grepr并找到这些API的应用程序。
顺便说一下。看看这个问题。他声称他的代码在iOS 6- Iphone 802.11 Scan上工作。
https://stackoverflow.com/questions/23245276
复制相似问题