Skip to content

Commit 0746499

Browse files
authored
feat: Add support for latest iOS devices (iPhone 17 generation)
feat: Add support to latest devices
2 parents 73787b2 + 3a61e8e commit 0746499

21 files changed

+751
-15
lines changed

Sources/DeviceIdentificator/DeviceModel+Capabilities.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ public extension DeviceModel {
4646
.iPad(.air13InchM2Cellular),
4747
.iPad(.mini6Wifi),
4848
.iPad(.mini6Cellular),
49-
.iPad(.mini7Wifi),
50-
.iPad(.mini7Cellular),
5149
.iPad(.pro1_11inchWifi),
5250
.iPad(.pro1_11inchWifiTera),
5351
.iPad(.pro1_11inchCellular),
@@ -135,4 +133,4 @@ public extension DeviceModel {
135133
return false
136134
}
137135
}
138-
}
136+
}

Sources/DeviceIdentificator/Models/AppleWatchModel+Name.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ public extension DeviceModel.AppleWatchModel {
4747
case .SE2_44mmCellular: return "Apple Watch SE2 44mm"
4848
case .ultra: return "Apple Watch Ultra 1"
4949
case .ultra2: return "Apple Watch Ultra 2"
50+
case .series10_42mmGPS: return "Apple Watch Series 10 42mm"
51+
case .series10_46mmGPS: return "Apple Watch Series 10 46mm"
52+
case .series10_42mmCellular: return "Apple Watch Series 10 42mm"
53+
case .series10_46mmCellular: return "Apple Watch Series 10 46mm"
54+
case .ultra3: return "Apple Watch Ultra 3"
55+
case .series11_42mmGPS: return "Apple Watch Series 11 42mm"
56+
case .series11_46mmGPS: return "Apple Watch Series 11 46mm"
57+
case .series11_42mmCellular: return "Apple Watch Series 11 42mm"
58+
case .series11_46mmCellular: return "Apple Watch Series 11 46mm"
5059
}
5160
}
5261
}

Sources/DeviceIdentificator/Models/AppleWatchModel+Processor.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ public extension DeviceModel.AppleWatchModel {
3737
case .series9_41mmCellular: return .appleS9
3838
case .series9_45mmGPS: return .appleS9
3939
case .series9_45mmCellular: return .appleS9
40+
case .series10_42mmGPS: return .appleS10
41+
case .series10_42mmCellular: return .appleS10
42+
case .series10_46mmGPS: return .appleS10
43+
case .series10_46mmCellular: return .appleS10
44+
case .series11_42mmGPS: return .appleS10
45+
case .series11_42mmCellular: return .appleS10
46+
case .series11_46mmGPS: return .appleS10
47+
case .series11_46mmCellular: return .appleS10
4048
case .SE_40mmGPS: return .appleS5
4149
case .SE_40mmCellular: return .appleS5
4250
case .SE_44mmGPS: return .appleS5
@@ -47,6 +55,7 @@ public extension DeviceModel.AppleWatchModel {
4755
case .SE2_44mmCellular: return .appleS8
4856
case .ultra: return .appleS8
4957
case .ultra2: return .appleS9
58+
case .ultra3: return .appleS10
5059
}
5160
}
5261
}

Sources/DeviceIdentificator/Models/AppleWatchModel.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,14 @@ public extension DeviceModel {
4646
case series9_41mmCellular = "Watch7,3"
4747
case series9_45mmCellular = "Watch7,4"
4848
case ultra2 = "Watch7,5"
49+
case series10_42mmGPS = "Watch7,8"
50+
case series10_46mmGPS = "Watch7,9"
51+
case series10_42mmCellular = "Watch7,10"
52+
case series10_46mmCellular = "Watch7,11"
53+
case ultra3 = "Watch7,12"
54+
case series11_42mmGPS = "Watch7,17"
55+
case series11_46mmGPS = "Watch7,18"
56+
case series11_42mmCellular = "Watch7,19"
57+
case series11_46mmCellular = "Watch7,20"
4958
}
5059
}

Sources/DeviceIdentificator/Models/IPadModel+Name.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public extension DeviceModel.IPadModel {
2828
case .gen9Cellular: return "iPad 9G (Cellular)"
2929
case .gen10Wifi: return "iPad 10G (Wifi)"
3030
case .gen10Cellular: return "iPad 10G (Cellular)"
31+
case .gen11Wifi: return "iPad 11G (Wifi)"
32+
case .gen11Cellular: return "iPad 11G (Cellular)"
3133

3234
// Minis
3335
case .mini1Wifi: return "iPad Mini 1 (Wifi)"
@@ -45,8 +47,8 @@ public extension DeviceModel.IPadModel {
4547
case .mini5Cellular: return "iPad Mini 5 (Cellular)"
4648
case .mini6Wifi: return "iPad Mini 6 (Wifi)"
4749
case .mini6Cellular: return "iPad Mini 6 (Cellular)"
48-
case .mini7Wifi: return "iPad Mini 7 (Wifi)"
49-
case .mini7Cellular: return "iPad Mini 7 (Cellular)"
50+
case .miniA17ProWifi: return "iPad Mini A17 Pro (Wifi)"
51+
case .miniA17ProCellular: return "iPad Mini A17 Pro (Cellular)"
5052

5153
// Airs
5254
case .air1Wifi: return "iPad Air 1 (Wifi)"
@@ -62,8 +64,12 @@ public extension DeviceModel.IPadModel {
6264
case .air5Cellular: return "iPad Air 5 (Cellular)"
6365
case .air11InchM2Wifi: return "iPad Air M2 11\" (Cellular)"
6466
case .air11InchM2Cellular: return "iPad Air M2 11\" (Cellular)"
65-
case .air13InchM2Wifi: return "iPad Air M2 13\" (Cellular)"
67+
case .air13InchM2Wifi: return "iPad Air M2 13\" (Wifi)"
6668
case .air13InchM2Cellular: return "iPad Air M2 13\" (Cellular)"
69+
case .air11InchM3Wifi: return "iPad Air M3 11\" (Wifi)"
70+
case .air11InchM3Cellular: return "iPad Air M3 11\" (Cellular)"
71+
case .air13InchM3Wifi: return "iPad Air M3 13\" (Wifi)"
72+
case .air13InchM3Cellular: return "iPad Air M3 13\" (Cellular)"
6773

6874
// Pros
6975
case .pro1_9d7inchWifi: return "iPad Pro 1G 9.7\" (Wifi)"

Sources/DeviceIdentificator/Models/IPadModel+Processor.swift

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,54 @@ import Foundation
33
public extension DeviceModel.IPadModel {
44
var processor: DeviceModel.Processor {
55
switch self {
6-
default:
7-
return .appleA10XFusion
6+
// iPads
7+
case .gen1Wifi, .gen1Cellular: return .appleA4
8+
case .gen2Wifi, .gen2GSM, .gen2CDMA, .gen2NewRev: return .appleA5
9+
case .gen3Wifi, .gen3CDMA, .gen3GSM: return .appleA5X
10+
case .gen4Wifi, .gen4GSM, .gen4CDMA: return .appleA6X
11+
case .gen5Wifi, .gen5Cellular: return .appleA9
12+
case .gen6Wifi, .gen6Cellular: return .appleA10Fusion
13+
case .gen7Wifi, .gen7Cellular: return .appleA10Fusion
14+
case .gen8Wifi, .gen8Cellular: return .appleA12Bionic
15+
case .gen9Wifi, .gen9Cellular: return .appleA13Bionic
16+
case .gen10Wifi, .gen10Cellular: return .appleA14Bionic
17+
case .gen11Wifi, .gen11Cellular: return .appleA14Bionic // Assumed, based on iPad 10
18+
19+
// Minis
20+
case .mini1Wifi, .mini1GSM, .mini1CDMA: return .appleA5
21+
case .mini2Wifi, .mini2GSMCDMA, .mini2China: return .appleA7
22+
case .mini3Wifi, .mini3GSMCDMA, .mini3China: return .appleA7
23+
case .mini4Wifi, .mini4Cellular: return .appleA8
24+
case .mini5Wifi, .mini5Cellular: return .appleA12Bionic
25+
case .mini6Wifi, .mini6Cellular: return .appleA15Bionic
26+
case .miniA17ProWifi, .miniA17ProCellular: return .appleA17Pro
27+
28+
// Airs
29+
case .air1Wifi, .air1GSMCDMA, .air1China: return .appleA7
30+
case .air2Wifi, .air2Cellular: return .appleA8X
31+
case .air3Wifi, .air3Cellular: return .appleA12Bionic
32+
case .air4Wifi, .air4Cellular: return .appleA14Bionic
33+
case .air5Wifi, .air5Cellular: return .appleM1
34+
case .air11InchM2Wifi, .air11InchM2Cellular,
35+
.air13InchM2Wifi, .air13InchM2Cellular: return .appleM2
36+
case .air11InchM3Wifi, .air11InchM3Cellular,
37+
.air13InchM3Wifi, .air13InchM3Cellular: return .appleM3
38+
39+
// Pros
40+
case .pro1_9d7inchWifi, .pro1_9d7inchCellular,
41+
.pro1_12d9inchWifi, .pro1_12d9inchCellular: return .appleA9X
42+
case .pro1_10d5inchWifi, .pro1_10d5inchCellular,
43+
.pro2_12d9inchWifi, .pro2_12d9inchCellular: return .appleA10XFusion
44+
case .pro1_11inchWifi, .pro1_11inchWifiTera, .pro1_11inchCellular, .pro1_11inchCellularTera,
45+
.pro3_12d9inchWifi, .pro3_12d9inchWifiTera, .pro3_12d9inchCellular, .pro3_12d9inchCellularTera: return .appleA12XBionic
46+
case .pro2_11inchWifi, .pro2_11inchCellular,
47+
.pro4_12d9inchWifi, .pro4_12d9inchCellular: return .appleA12ZBionic
48+
case .pro3_11inchWifi, .pro3_11inchWifiTera, .pro3_11inchCellular, .pro3_11inchCellularTera,
49+
.pro5_12d9inchWifi, .pro5_12d9inchWifiTera, .pro5_12d9inchCellular, .pro5_12d9inchCellularTera: return .appleM1
50+
case .pro4_11inchWifi, .pro4_11inchCellular,
51+
.pro6_12d9inchWifi, .pro6_12d9inchCellular: return .appleM2
52+
case .pro_11inchM4Wifi, .pro_11inchM4Cellular,
53+
.pro_13inchM4Wifi, .pro_13inchM4Cellular: return .appleM4
854
}
955
}
1056
}

Sources/DeviceIdentificator/Models/IPadModel.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public extension DeviceModel {
2727
case gen9Cellular = "iPad12,2"
2828
case gen10Wifi = "iPad13,18"
2929
case gen10Cellular = "iPad13,19"
30+
case gen11Wifi = "iPad15,7"
31+
case gen11Cellular = "iPad15,8"
3032

3133
// Minis
3234
case mini1Wifi = "iPad2,5"
@@ -44,8 +46,8 @@ public extension DeviceModel {
4446
case mini5Cellular = "iPad11,2"
4547
case mini6Wifi = "iPad14,1"
4648
case mini6Cellular = "iPad14,2"
47-
case mini7Wifi = "iPad16,1"
48-
case mini7Cellular = "iPad16,2"
49+
case miniA17ProWifi = "iPad16,1"
50+
case miniA17ProCellular = "iPad16,2"
4951

5052
// Airs
5153
case air1Wifi = "iPad4,1"
@@ -63,6 +65,10 @@ public extension DeviceModel {
6365
case air11InchM2Cellular = "iPad14,9"
6466
case air13InchM2Wifi = "iPad14,10"
6567
case air13InchM2Cellular = "iPad14,11"
68+
case air11InchM3Wifi = "iPad15,3"
69+
case air11InchM3Cellular = "iPad15,4"
70+
case air13InchM3Wifi = "iPad15,5"
71+
case air13InchM3Cellular = "iPad15,6"
6672

6773
// Pros
6874
case pro1_9d7inchWifi = "iPad6,3"

Sources/DeviceIdentificator/Models/IPhoneModel+Name.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ public extension DeviceModel.IPhoneModel {
6060
case .iPhone16Pro: return "iPhone 16 Pro"
6161
case .iPhone16ProMax: return "iPhone 16 Pro Max"
6262
case .iPhone16e: return "iPhone 16e"
63+
case .iPhone17: return "iPhone 17"
64+
case .iPhone17Pro: return "iPhone 17 Pro"
65+
case .iPhone17ProMax: return "iPhone 17 Pro Max"
66+
case .iPhoneAir: return "iPhone Air"
6367
}
6468
}
6569
}

Sources/DeviceIdentificator/Models/IPhoneModel+Processor.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ public extension DeviceModel.IPhoneModel {
6060
case .iPhone16Pro: return .appleA18Pro
6161
case .iPhone16ProMax: return .appleA18Pro
6262
case .iPhone16e: return .appleA18
63+
case .iPhone17: return .appleA19
64+
case .iPhone17Pro: return .appleA19Pro
65+
case .iPhone17ProMax: return .appleA19Pro
66+
case .iPhoneAir: return .appleA19
6367
}
6468
}
6569
}

Sources/DeviceIdentificator/Models/IPhoneModel.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,9 @@ public extension DeviceModel {
5959
case iPhone16Pro = "iPhone17,1"
6060
case iPhone16ProMax = "iPhone17,2"
6161
case iPhone16e = "iPhone17,5"
62+
case iPhone17 = "iPhone18,3"
63+
case iPhone17Pro = "iPhone18,1"
64+
case iPhone17ProMax = "iPhone18,2"
65+
case iPhoneAir = "iPhone18,4"
6266
}
6367
}

0 commit comments

Comments
 (0)