Advertisement
Guest User

Untitled

a guest
Feb 5th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. #import <sys/utsname.h>
  2.  
  3. typedef NS_ENUM(NSUInteger, AADeviceModel) {
  4. AADeviceModelUnknown,
  5. AADeviceModeliPhone4S,
  6. AADeviceModeliPodTouch5 = AADeviceModeliPhone4S,
  7. AADeviceModeliPad2 = AADeviceModeliPhone4S,
  8. AADeviceModeliPadMini = AADeviceModeliPad2,
  9. AADeviceModeliPad3,
  10. AADeviceModeliPhone5,
  11. AADeviceModeliPhone5c = AADeviceModeliPhone5,
  12. AADeviceModeliPad4,
  13. AADeviceModeliPhone5s,
  14. AADeviceModeliPadAir = AADeviceModeliPhone5s,
  15. AADeviceModeliPadMini2 = AADeviceModeliPadAir,
  16. AADeviceModeliPadMini3 = AADeviceModeliPadMini2,
  17. AADeviceModeliPhone6,
  18. AADeviceModeliPhone6Plus = AADeviceModeliPhone6,
  19. AADeviceModeliPadMini4 = AADeviceModeliPhone6,
  20. AADeviceModeliPadAir2,
  21. AADeviceModeliPhone6s,
  22. AADeviceModeliPhone6sPlus = AADeviceModeliPhone6,
  23. AADeviceModeliPadPro,
  24. }
  25.  
  26. - (AADeviceModel)currentDeviceModel
  27. {
  28. NSError *error = nil;
  29. NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(iPod|iPhone|iPad)(\\d+),\\d+"
  30. options:0
  31. error:&error];
  32.  
  33. if (error) {
  34. return AADeviceModelUnknown;
  35. }
  36.  
  37. struct utsname systemInfo;
  38. uname(&systemInfo);
  39.  
  40. NSString *deviceName = [NSString stringWithCString:systemInfo.machine
  41. encoding:NSUTF8StringEncoding];
  42.  
  43. NSArray<NSTextCheckingResult *> *matches = [regex matchesInString:deviceName
  44. options:NSMatchingProgress
  45. range:NSMakeRange(0, deviceName.length)];
  46.  
  47. for (NSTextCheckingResult *match in matches) {
  48. if (match.numberOfRanges < 3) {
  49. continue;
  50. }
  51.  
  52. NSRange deviceTypeRange = [match rangeAtIndex:1];
  53. NSString *deviceType = [deviceName substringWithRange:deviceTypeRange];
  54.  
  55. NSRange deviceGenRange = [match rangeAtIndex:2];
  56. NSInteger deviceGeneration = [[deviceName substringWithRange:deviceGenRange] integerValue];
  57.  
  58. if ([deviceType isEqualToString:@"iPod"]) {
  59. if (deviceGeneration <= 5) {
  60. return AADeviceModeliPodTouch5;
  61. }
  62. return AADeviceModeliPodTouch6;
  63. } else if ([deviceType isEqualToString:@"iPhone"]) {
  64. if (deviceGeneration <= 4) {
  65. return AADeviceModeliPhone4S;
  66. } else if (deviceGeneration == 5) {
  67. return AADeviceModeliPhone5;
  68. } else if (deviceGeneration == 6) {
  69. return AADeviceModeliPhone6;
  70. }
  71. return AADeviceModeliPhone6s;
  72. } else if ([deviceType isEqualToString:@"iPad"]) {
  73. if (deviceGeneration <= 2) {
  74. return AADeviceModeliPad2;
  75. } else if (deviceGeneration == 3) {
  76. return AADeviceModeliPad3;
  77. } else if (deviceGeneration == 4) {
  78. return AADeviceModeliPad4;
  79. } else if (deviceGeneration == 5) {
  80. return AADeviceModeliPadAir;
  81. } else if (deviceGeneration == 6) {
  82. return AADeviceModeliPadAir2;
  83. }
  84. return AADeviceModeliPadPro;
  85. }
  86. }
  87.  
  88. return AADeviceModelUnknown;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement