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)
Odpowiedz
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);
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.
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
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ą. –
- 1. Zwiększenie szybkości skanowania WiFi
- 2. Gdzie znajdę klucz API i tajny klucz API dla Facebooka?
- 3. gdzie znajdę identyfikator projektu dla api gitlab?
- 4. Gdzie znajdę dzienniki System.out.println()?
- 5. Gdzie znajdę polecenie MysqlDumpSlow?
- 6. Używanie C# lub Powershell do skanowania wszystkich dostępnych sieci bezprzewodowych i łączenia się z konkretnym SSID
- 7. Wifi - wyniki skanowania odbiornik nie działa
- 8. Interfejs API Bluetooth Android do łączenia się z wieloma urządzeniami
- 9. Używanie Node.js do łączenia się z interfejsem REST API
- 10. Gdzie znajdę wyjaśnienie wszystkich pól macierzy transformacji?
- 11. Interfejs API linii papilarnych z Androidem i klucze prywatne/publiczne
- 12. Gdzie znajdę zawartość $ this-> getAbsoluteFooter() Magento
- 13. Java - Wifi API
- 14. Aplikacje AppStore/iOS i kod interpretowany - gdzie narysują linię?
- 15. Gdzie znajdę tekst atrybucji Usług Google Play?
- 16. zapobiega odbiciu (objc/runtime) na iOS
- 17. iOS 7, prywatne API rozłączanie połączeń CTCallDisconnect nie działa
- 18. YouYube API Oglądaj prywatne filmy
- 19. Jak skompilować kod objc w systemie Linux?
- 20. Używanie HttpURLConnection i HttpsURLConnection do łączenia się z https?
- 21. Czy istnieje interfejs API do łączenia się z usługą iCloud i uzyskiwania kontaktów oraz zmiany kontaktów?
- 22. #typedef i KVC w ObjC
- 23. Android 2.3 wifi hotspot API
- 24. Gdzie znajdę standardową implementację map opartą na Trie w Javie?
- 25. Otwarte ustawienia Wifi przez "prefs: root = WIFI" nie powiodło się w iOS 10
- 26. Jak chronić prywatne REST API
- 27. Gdzie są przykłady kodu do łączenia testów z Sauce Connect?
- 28. Gdzie znajduje się skompilowany kod JIT?
- 29. Gdzie znajdę metadane serwera Sql dla typów danych kolumn?
- 30. Gdzie znajduje się kod źródłowy ConstraintLayout?
każdej aktualizacji na ten temat dla iOS 8? Próbowałem https://github.com/devinshively/wifiAssociate, nie działa na iOS 8. – divyum
Nie, nie testowałem go na iOS 8. – almas