MobileGestalt
LibMobileGestalt.dylib stanowi centralne repozytorium dla wszystkich właściwościach iOS. Może być analogiczny do Gestalt systemu OS X, który jest częścią CoreServices. Gestalt systemu OS X jest udokumentowany, na przykład Gestalt Manager i został wycofany z 10.8. MobileGestalt jest całkowicie nieudokumentowane przez Apple, ponieważ jest prywatną biblioteką.
MobileGestalt umożliwia testowanie właściwości systemu, które mogą, ale nie muszą być kompatybilne z różnymi symulatorami.
Sporo procesów systemowych i aplikacji w iOS opiera się na MobileGestalt, który znajduje się pod adresem /usr/lib/libMobileGestalt.dylib. Jest to bardziej podstawowa biblioteka, ale jej udostępnione interfejsy API są zgodne z konwencjami platformy Apple i MGna przykład używają prefiksu API MGIsDeviceOneOfType.
Jeśli szukasz MobileGestalt w systemie plików iOS, nie znajdziesz go - podobnie jak wszystkie prywatne frameworki i biblioteki, został on wstępnie powiązany z /System/Library/Caches/...etc. Jeśli lubisz hakowanie i testowanie za pomocą pióra, możesz użyć narzędzi do ich wyodrębnienia.
MobileGestalt dostarcza wielu informacji - około 200 zapytań - dotyczących różnych aspektów systemu. Tu jest kilka.
libMobileGestalt.dylib
//Answers to MG queries
MGCopyAnswer(@"5MSZn7w3nnJp22VbpqaxLQ");
MGCopyAnswer(@"7mV26K/1a+wTtqiunvHMUQ");
MGCopyAnswer(@"BasebandAPTimeSync");
MGCopyAnswer(@"BasebandPostponementStatus");
MGCopyAnswer(@"BasebandPostponementStatusBlob");
MGCopyAnswer(@"BasebandSecurityInfoBlob");
MGCopyAnswer(@"BasebandStatus");
MGCopyAnswer(@"BuildVersion");
MGCopyAnswer(@"CoreRoutineCapability");
MGCopyAnswer(@"DeviceClass");
MGCopyAnswer(@"DeviceClassNumber");
MGCopyAnswer(@"DeviceName");
MGCopyAnswer(@"DeviceSupports1080p");
MGCopyAnswer(@"DeviceSupports720p");
MGCopyAnswer(@"DiskUsage");
MGCopyAnswer(@"GSDeviceName");
MGCopyAnswer(@"HWModelStr");
MGCopyAnswer(@"HasBaseband");
MGCopyAnswer(@"InternalBuild");
MGCopyAnswer(@"InverseDeviceID");
MGCopyAnswer(@"IsSimulator");
MGCopyAnswer(@"MLBSerialNumber");
MGCopyAnswer(@"MaxH264PlaybackLevel");
MGCopyAnswer(@"MinimumSupportediTunesVersion");
MGCopyAnswer(@"PasswordConfigured");
MGCopyAnswer(@"PasswordProtected");
MGCopyAnswer(@"ProductType");
MGCopyAnswer(@"ProductVersion");
MGCopyAnswer(@"RegionCode");
MGCopyAnswer(@"RegionalBehaviorNTSC");
MGCopyAnswer(@"RegionalBehaviorNoPasscodeLocationTiles");
MGCopyAnswer(@"ReleaseType");
MGCopyAnswer(@"SIMStatus");
Istnieją setki więcej np AirplaneMode, MobileEquipmentIdentifieritp
MobileGestalt utrzymuje tabelę kodów selektorów OSType. na przykład c: 890 w wiadomości: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType nie jest obsługiwane na tej platformie. W tym przypadku MGIsDeviceOneOfTypejest to metoda biblioteki MobileGestalt .
Zamiast sprawdzania wersji symulatora istnieje oddzielny selektor do bezpośredniego sprawdzania możliwości symulatora. Komunikaty najprawdopodobniej wskazują na niezgodności między wersjami symulatora a wersjami Xcode i / lub nieobsługiwanymi interfejsami API w symulatorze.