2012-07-30 10 views
6

Potrzebuję przykładowy kod obj-c, który skanuje i łączy się z Wi-Fi. Prywatne API jest ok, nie zamierzam publikować aplikacji w appStore. Znalazłem aplikację w cydii o nazwie "WiFiFoFum", która może skanować i łączyć, niestety nie mogę znaleźć kodu źródłowego tej aplikacji. Ktoś wie, gdzie mogę znaleźć ten kod? DziękiGdzie znajdę kod Obj-C iOS do skanowania i łączenia się z wifi (prywatne API)

+1

każdej aktualizacji na ten temat dla iOS 8? Próbowałem https://github.com/devinshively/wifiAssociate, nie działa na iOS 8. – divyum

+0

Nie, nie testowałem go na iOS 8. – almas

Odpowiedz

6

znaleźć odpowiedź tutaj: http://code.google.com/p/iphone-wireless/issues/detail?id=20

To działa perfekcyjnie na moim iPhone 4 V5.1.1. Mogę skanować i łączyć się z sieciami. Można pobrać projekt tutaj https://github.com/devinshively/wifiAssociate

Oto cytat:

Apple80211Associate nadal działa (przynajmniej na 3.1.2). Między iPhone OS 2 i 3, ramy zmieniła nazwę, dlatego należy powiązać swoje funkcje w następujący sposób:

void *airportHandle; 
int  (*Apple80211Open)(void *); 
int  (*Apple80211BindToInterface)(void *, NSString *); 
int  (*Apple80211Close)(void *); 
int  (*Apple80211Info)(void *, NSDictionary**); 
int  (*Apple80211Associate)(void *, NSDictionary*, void *); 
int  (*Apple80211Scan)(void *, NSArray **, void *); 

libHandle  = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY); 
Apple80211Open       = dlsym(libHandle, "Apple80211Open"); 
Apple80211BindToInterface  = dlsym(libHandle, "Apple80211BindToInterface"); 
Apple80211Scan       = dlsym(libHandle, "Apple80211Scan"); 
Apple80211Close       = dlsym(libHandle, "Apple80211Close"); 
Apple80211Info       = dlsym(libHandle, "Apple80211GetInfoCopy"); 
Apple80211Associate      = dlsym(libHandle, "Apple80211Associate"); 

Najbardziej znaczącą zmianą od v2 do v3 jest parametr SCAN_RSSI_THRESHOLD (używany dla funkcji skanowania) . Wykorzystuje on liczbę dodatnią, daleki od fizycznego dB, który powinien być
, a teraz zajmuje dB sygnału. Jeśli z niego skorzystać, można ustawić go do -100: Tutaj jest kod snipped (wiśnia odebrał z mojego kodu, tak jak ma to niesprawdzone):

void *airportHandle; 

NSArray *keys = [NSArray arrayWithObjects:@"SCAN_RSSI_THRESHOLD", @"SSID_STR", nil]; 
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithInt:-100], ssid, nil]; 

NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 
NSArray *found; 


int openResult = Apple80211Open(&airportHandle); 
NSLog(@"Openning wifi interface %@", (openResult == [email protected]"succeeded":@"failed")); 

int bindResult = Apple80211BindToInterface(airportHandle, @IF_NAME); 

int scanResult = Apple80211Scan(airportHandle, &found, params); 

NSDictionary *network; 

// get the first network found 
network = [found objectAtIndex:0]; 
int associateResult = Apple80211Associate(airportHandle, network,NULL); 

Apple80211Close(airportHandle); 
1

Objective-C jest skompilowany, więc nie można po prostu uzyskać kodu źródłowego programów, jak w języku skryptowym. Możesz sprawdzić, czy "WiFiFoFum" jest open source, i możesz być w stanie pobrać źródło z github autora. W przeciwnym razie można spojrzeć na prywatnych ram w katalogu /System/Library/PrivateFrameworks i zrzucić pliki nagłówkowe z nich za pomocą class-dump-z jak ten

$ class-dump-z -H <private framework> 

bez nawiasów trójkątnych oczywiście.

edit:

tylko sprawdzone, nie wygląda to open source.

+0

Nie jestem zbyt dobry w inżynierii wstecznej, więc nawet jeśli otrzymam pliki nagłówków (są one dostępne do pobrania), po prostu nie wiem, jak z nich korzystać. Te metody pobierają pewne parametry (struktury) i nie wiem, jakie one są. Dlatego chciałbym mieć gotowy do użycia przykład kodu w obj-c – almas

+0

Nie widzisz implementacji metod, które z jakiegoś powodu nazywają się prywatnymi (i nieudokumentowanymi). Nazwy i parametry są zazwyczaj dobrym wskaźnikiem działania tej funkcji. Poszukaj dowolnych struktur, których nie jesteś pewien, a jeśli naprawdę potrzebujesz, możesz użyć mobilnego substratu, aby napisać poprawkę, aby przechwycić te metody i znaleźć więcej informacji na temat tego, co jest im przekazywane i co powracają. –

Powiązane problemy