QSLDeviceTool.swift 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // QSLDeviceTool.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by mac on 2024/4/10.
  6. //
  7. import Foundation
  8. import UIKit
  9. import AdSupport
  10. /// 设备各种信息
  11. class QSLDeviceTool: NSObject {
  12. // MARK: 1、App 名称
  13. /// App 名称
  14. var appDisplayName: String {
  15. return (Bundle.main.infoDictionary!["CFBundleDisplayName"] as? String) ?? ""
  16. }
  17. // MARK: 2、App 平台 安卓为1 iOS为2
  18. /// App 平台
  19. var platform: Int {
  20. return 2;
  21. }
  22. // MARK: 3、渠道名称
  23. /// 渠道名称
  24. var channelName: String {
  25. return "appstore";
  26. }
  27. // MARK: 4、版本
  28. /// 版本
  29. var OSVersion: String {
  30. return String.init(format: "%@%@", UIDevice.current.systemName, UIDevice.current.systemVersion)
  31. }
  32. // MARK: 5、包名
  33. /// 包名
  34. var packageName: String {
  35. return Bundle.appBundleIdentifier;
  36. }
  37. // MARK: 6、版本号 1.0.0
  38. /// 版本号
  39. var appVersionName: String {
  40. return Bundle.appVersion;
  41. }
  42. // MARK: 6、版本号 100
  43. /// 版本号
  44. var appVersionCode: String {
  45. let versionSubStrings = self.appDisplayName.components(separatedBy: ".")
  46. var versionCode = ""
  47. for subString in versionSubStrings {
  48. versionCode.append(subString)
  49. }
  50. if versionSubStrings.count < 3 {
  51. versionCode.append("0")
  52. }
  53. return versionCode
  54. }
  55. // MARK: 7、品牌
  56. /// 品牌
  57. var brand: String {
  58. return "Apple"
  59. }
  60. // MARK: 8、idfa
  61. /// idfa
  62. var idfa: String {
  63. return ASIdentifierManager.shared().advertisingIdentifier.uuidString;
  64. }
  65. // MARK: 8、idfv
  66. /// idfv
  67. var idfv: String {
  68. return UIDevice.current.identifierForVendor?.uuidString ?? "";
  69. }
  70. // MARK: 9、型号
  71. /// 型号
  72. var model: String {
  73. var systemInfo = utsname()
  74. uname(&systemInfo)
  75. let machineMirror = Mirror(reflecting: systemInfo.machine)
  76. let identifier = machineMirror.children.reduce("") { identifier, element in
  77. guard let value = element.value as? Int8, value != 0 else { return identifier }
  78. return identifier + String(UnicodeScalar(UInt8(value)))
  79. }
  80. return identifier
  81. }
  82. }