Comment puis-je détecter si un utilisateur exécute l'application sur un iPhone 4 ou 3G / 3GS? P>
Je dois détecter le matériel, pas la version iOS. P>
Merci pour une aide. P>
3 Réponses :
N'hésitez pas à utiliser cette classe - j'ai trouvé ça ici A> Utilisation p> uidevicehardware.h p> uidevicehardware.m p>
Beaucoup mieux que ma réponse, mais quelqu'un doit exécuter ceci sur un iPhone 4 et voir quelle est la chaîne de la machine pour ce modèle. Je pense que cela pourrait être "iPhone3,1".
+1 Bon point. Je suis trop fatigué maintenant, mais je vais essayer demain et poster les résultats-- Sauf si quelqu'un me ne me frappe
Je voudrais juste utiliser hw.machine (et hw.model). iphone1,1 est également appelé "iPhone original" ou "iPhone 2G" (non officiel) et Apple répertorie "iPod Touch Touch 2nd Generation" et "IPod Touch 3rd Generation", dont l'une est manquante ici (probablement iPod2,2)
Et qu'en est-il de l'iPad? Et cette méthode ne parvient pas à détecter la version correcte du simulateur. Des indices?
C'est un peu laborieux, mais << a href = "http://www.eboutymac.com/" rel = "nofollow noreferrer"> evermac.com > a les chaînes de plate-forme répertoriées pour chaque périphérique iOS. Par exemple, << a href = "http://www.everymac.com/systems/apple/consumer_electronics/stats/ipod-touch-4th-gen-4g-facetime-specs.html" rel = "NORELON NOREFERRER"> everymac.com/systems/apple/consumer_electronics/stats/... > pour iPod Touch 4th Gen. Je n'ai pas été en mesure de trouver une liste indexée sur la chaîne de plate-forme.
#import <sys/utsname.h> + (NSString*)deviceModelName { struct utsname systemInfo; uname(&systemInfo); NSString *modelName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; if([modelName isEqualToString:@"i386"]) { modelName = @"iPhone Simulator"; } else if([modelName isEqualToString:@"iPhone1,1"]) { modelName = @"iPhone"; } else if([modelName isEqualToString:@"iPhone1,2"]) { modelName = @"iPhone 3G"; } else if([modelName isEqualToString:@"iPhone2,1"]) { modelName = @"iPhone 3GS"; } else if([modelName isEqualToString:@"iPhone3,1"]) { modelName = @"iPhone 4"; } else if([modelName isEqualToString:@"iPhone4,1"]) { modelName = @"iPhone 4S"; } else if([modelName isEqualToString:@"iPod1,1"]) { modelName = @"iPod 1st Gen"; } else if([modelName isEqualToString:@"iPod2,1"]) { modelName = @"iPod 2nd Gen"; } else if([modelName isEqualToString:@"iPod3,1"]) { modelName = @"iPod 3rd Gen"; } else if([modelName isEqualToString:@"iPad1,1"]) { modelName = @"iPad"; } else if([modelName isEqualToString:@"iPad2,1"]) { modelName = @"iPad 2(WiFi)"; } else if([modelName isEqualToString:@"iPad2,2"]) { modelName = @"iPad 2(GSM)"; } else if([modelName isEqualToString:@"iPad2,3"]) { modelName = @"iPad 2(CDMA)"; } return modelName; }
C'est simple ... après la dernière "si sinon", vous pouvez ajouter autre {modèleName = @ "iphone 5";}
N'utilisez pas d'autre sinon code> sans un
si code> pour l'iPhone 5. Tous les périphériques inconnus renverront incorrectement à être appelés iPhone 5.
Vous pouvez utiliser ce code pour détecter la version iPhone OS.
Version flottante = [[[[[[Uidevice CurrentDevice] Systemversion] Floatvalue];
Vous pouvez appeler ActualDevice sur Uidevice et regardez la propriété de modèle. EDIT: B> Bien que ... Les docs suggèrent que cela n'inclut pas le numéro de modèle exact.