UIDevice+Extensions.swift 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import SwiftUI
  2. extension UIDevice {
  3. var getDeviceId: String {
  4. var systemInfo = utsname()
  5. uname(&systemInfo)
  6. let machineMirror = Mirror(reflecting: systemInfo.machine)
  7. let identifier = machineMirror.children.reduce("") { identifier, element in
  8. guard let value = element.value as? Int8, value != 0 else { return identifier }
  9. return identifier + String(UnicodeScalar(UInt8(value)))
  10. }
  11. func mapToDevice(identifier: String) -> String {
  12. switch identifier {
  13. case "iPhone10,4":
  14. return "iPhone 8"
  15. case "iPhone10,5":
  16. return "iPhone 8 Plus"
  17. case "iPhone10,6":
  18. return "iPhone X"
  19. case "iPhone11,2":
  20. return "iPhone Xs"
  21. case "iPhone11,8":
  22. return "iPhone XR"
  23. case "iPhone12,1":
  24. return "iPhone 11"
  25. case "iPhone12,5":
  26. return "iPhone 11 Pro Max"
  27. case "iPhone12,8":
  28. return "iPhone SE (2nd Gen)"
  29. case "iPhone13,1":
  30. return "iPhone 12 mini"
  31. case "iPhone13,2":
  32. return "iPhone 12"
  33. case "iPhone13,3":
  34. return "iPhone 12 Pro"
  35. case "iPhone13,4":
  36. return "iPhone 12 Pro Max"
  37. case "iPhone14,2":
  38. return "iPhone 13 Pro"
  39. case "iPhone14,3":
  40. return "iPhone 13 Pro Max"
  41. case "iPhone14,4":
  42. return "iPhone 13 mini"
  43. case "iPhone14,5":
  44. return "iPhone 13"
  45. case "iPhone14,6":
  46. return "iPhone SE (3rd Gen)"
  47. case "iPhone14,7":
  48. return "iPhone 14"
  49. case "iPhone14,8":
  50. return "iPhone 14 Plus"
  51. case "iPhone15,2":
  52. return "iPhone 14 Pro"
  53. case "iPhone15,3":
  54. return "iPhone 14 Pro Max"
  55. default:
  56. return identifier
  57. }
  58. }
  59. return mapToDevice(identifier: identifier)
  60. }
  61. var getOSInfo: String {
  62. let os = ProcessInfo.processInfo.operatingSystemVersion
  63. return String(os.majorVersion) + "." + String(os.minorVersion) + "." + String(os.patchVersion)
  64. }
  65. }