MobileGestalt
Il libMobileGestalt.dylib fornisce un repository centrale per tutte le proprietà del iOS. Può essere analogo a Gestalt di OS X, di cui fa parte CoreServices
. Gestalt di OS X è documentato ad esempio Gestalt Manager ed è stato deprecato a partire dalla 10.8. MobileGestalt non è completamente documentato da Apple in quanto è una libreria privata.
MobileGestalt consente di testare le proprietà del sistema che possono o non possono essere compatibili su diversi simulatori.
Parecchi processi di sistema e app in iOS si basano su MobileGestalt, che si trova in /usr/lib/libMobileGestalt.dylib. È più una libreria di base, ma le sue API esposte seguono le convenzioni del framework Apple e utilizza, MG
ad esempio, il prefisso API MGIsDeviceOneOfType
.
Se cerchi MobileGestalt sul filesystem iOS non lo troverai - come tutti i framework e le librerie private, è stato pre-collegato a /System/Library/Caches/...etc. Se ti piace l'hacking e il test con la penna, puoi utilizzare gli strumenti per estrarlo.
MobileGestalt fornisce molte informazioni - circa 200 query circa - su vari aspetti del sistema. Eccone alcuni.
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");
Ce ne sono altre centinaia AirplaneMode
, ad esempio MobileEquipmentIdentifier
, ecc.
MobileGestalt mantiene una tabella dei codici del selettore OSType. ad esempio c: 890 nel messaggio: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType non è supportato su questa piattaforma. In questo caso MGIsDeviceOneOfType
è un metodo della libreria MobileGestalt .
Invece di controllare la versione del simulatore, è disponibile un selettore separato per interrogare direttamente le capacità del simulatore. I messaggi molto probabilmente indicano incompatibilità tra le versioni del simulatore e le versioni di Xcode e / o API non supportate sul simulatore.