CpuMapManager.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. //
  2. // CpuMapManager.swift
  3. // Pods
  4. //
  5. // Created by 100Years on 2025/6/10.
  6. //
  7. import UIKit
  8. public class CpuMapManager: NSObject {
  9. static let shared = CpuMapManager()
  10. }
  11. extension UIDevice {
  12. var modelIdentifier: String {
  13. var systemInfo = utsname()
  14. uname(&systemInfo)
  15. let machineMirror = Mirror(reflecting: systemInfo.machine)
  16. let identifier = machineMirror.children.reduce("") { (identifier, element) in
  17. guard let value = element.value as? Int8, value != 0 else {
  18. return identifier
  19. }
  20. return identifier + String(UnicodeScalar(UInt8(value)))
  21. }
  22. return identifier
  23. }
  24. /// 数据来源 https://www.jianshu.com/p/d9068fee295e
  25. public var modelName: String {
  26. let identifier = modelIdentifier
  27. switch identifier {
  28. case "iPhone8,1":
  29. return "iPhone 6s"
  30. case "iPhone8,2":
  31. return "iPhone 6s Plus"
  32. case "iPhone8,4":
  33. return "iPhone SE"
  34. case "iPhone9,1":
  35. return "iPhone 7"; //国行、日版、港行
  36. case "iPhone9,2":
  37. return "iPhone 7 Plus"; //国行、港行
  38. case "iPhone9,3":
  39. return "iPhone 7"; //美版、台版
  40. case "iPhone9,4":
  41. return "iPhone 7 Plus"; //美版、台版
  42. case "iPhone10,1":
  43. return "iPhone 8"; //国行(A1863)、日行(A1906)
  44. case "iPhone10,2":
  45. return "iPhone 8 Plus"; //国行(A1864)、日行(A1898)
  46. case "iPhone10,3":
  47. return "iPhone X"; //国行(A1865)、日行(A1902)
  48. case "iPhone10,4":
  49. return "iPhone 8"; //美版(Global/A1905)
  50. case "iPhone10,5":
  51. return "iPhone 8 Plus"; //美版(Global/A1897)
  52. case "iPhone10,6":
  53. return "iPhone X";//美版(Global/A1901)
  54. // 刘海屏(除SE外)
  55. case "iPhone11,8":
  56. return "iPhone XR"
  57. case "iPhone11,2":
  58. return "iPhone XS"
  59. case "iPhone11,6":
  60. return "iPhone XS Max"
  61. case "iPhone11,4":
  62. return "iPhone XS Max"
  63. case "iPhone12,1":
  64. return "iPhone 11"
  65. case "iPhone12,3":
  66. return "iPhone 11 Pro"
  67. case "iPhone12,5":
  68. return "iPhone 11 Pro Max"
  69. case "iPhone12,8":
  70. return "iPhone SE2"; //(2nd generation)
  71. case "iPhone13,1":
  72. return "iPhone 12 mini"
  73. case "iPhone13,2":
  74. return "iPhone 12"
  75. case "iPhone13,3":
  76. return "iPhone 12 Pro"
  77. case "iPhone13,4":
  78. return "iPhone 12 Pro Max"
  79. case "iPhone14,2":
  80. return "iPhone 13 Pro"
  81. case "iPhone14,3":
  82. return "iPhone 13 Pro Max"
  83. case "iPhone14,4":
  84. return "iPhone 13 mini"
  85. case "iPhone14,5":
  86. return "iPhone 13"
  87. case "iPhone14,6":
  88. return "iPhone SE3"; //(2nd generation)
  89. case "iPhone14,7":
  90. return "iPhone 14"
  91. case "iPhone14,8":
  92. return "iPhone 14 Plus"
  93. // 灵动岛
  94. case "iPhone15,2":
  95. return "iPhone 14 Pro"
  96. case "iPhone15,3":
  97. return "iPhone 14 Pro Max"
  98. case "iPhone16,2":
  99. return "iPhone 15 Pro Max"
  100. case "iPhone16,1":
  101. return "iPhone 15 Pro"
  102. case "iPhone15,5":
  103. return "iPhone 15 Plus"
  104. case "iPhone15,4":
  105. return "iPhone 15"
  106. case "iPhone17,3":
  107. return "iPhone 16"
  108. case "iPhone17,4":
  109. return "iPhone 16 Plus"
  110. case "iPhone17,1":
  111. return "iPhone 16 Pro"
  112. case "iPhone17,2":
  113. return "iPhone 16 Pro Max"
  114. default:
  115. return "--"
  116. }
  117. }
  118. }