@@ -184,6 +184,10 @@ public enum Device {
184
184
///
185
185
/// 
186
186
case iPad7
187
+ /// Device is an [iPad (8th generation)](https://support.apple.com/kb/SP822)
188
+ ///
189
+ /// 
190
+ case iPad8
187
191
/// Device is an [iPad Mini](https://support.apple.com/kb/SP661)
188
192
///
189
193
/// 
@@ -298,6 +302,22 @@ public enum Device {
298
302
///
299
303
/// 
300
304
case appleWatchSeries5_44mm
305
+ /// Device is an [Apple Watch Series 6](https://support.apple.com/kb/SP826)
306
+ ///
307
+ /// 
308
+ case appleWatchSeries6_40mm
309
+ /// Device is an [Apple Watch Series 6](https://support.apple.com/kb/SP826)
310
+ ///
311
+ /// 
312
+ case appleWatchSeries6_44mm
313
+ /// Device is an [Apple Watch SE](https://support.apple.com/kb/SP827)
314
+ ///
315
+ /// 
316
+ case appleWatchSE_40mm
317
+ /// Device is an [Apple Watch SE](https://support.apple.com/kb/SP827)
318
+ ///
319
+ /// 
320
+ case appleWatchSE_44mm
301
321
#endif
302
322
303
323
/// Device is [Simulator](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/iOS_Simulator_Guide/Introduction/Introduction.html)
@@ -370,6 +390,7 @@ public enum Device {
370
390
case " iPad7,5 " , " iPad7,6 " : return iPad6
371
391
case " iPad11,3 " , " iPad11,4 " : return iPadAir3
372
392
case " iPad7,11 " , " iPad7,12 " : return iPad7
393
+ case " iPad11,6 " , " iPad11,7 " : return iPad8
373
394
case " iPad2,5 " , " iPad2,6 " , " iPad2,7 " : return iPadMini
374
395
case " iPad4,4 " , " iPad4,5 " , " iPad4,6 " : return iPadMini2
375
396
case " iPad4,7 " , " iPad4,8 " , " iPad4,9 " : return iPadMini3
@@ -408,6 +429,10 @@ public enum Device {
408
429
case " Watch4,2 " , " Watch4,4 " : return appleWatchSeries4_44mm
409
430
case " Watch5,1 " , " Watch5,3 " : return appleWatchSeries5_40mm
410
431
case " Watch5,2 " , " Watch5,4 " : return appleWatchSeries5_44mm
432
+ case " Watch6,1 " , " Watch6,3 " : return appleWatchSeries6_40mm
433
+ case " Watch6,2 " , " Watch6,4 " : return appleWatchSeries6_44mm
434
+ case " Watch5,9 " , " Watch5,11 " : return appleWatchSE_40mm
435
+ case " Watch5,10 " , " Watch5,12 " : return appleWatchSE_44mm
411
436
case " i386 " , " x86_64 " : return simulator ( mapToDevice ( identifier: ProcessInfo ( ) . environment [ " SIMULATOR_MODEL_IDENTIFIER " ] ?? " watchOS " ) )
412
437
default : return unknown ( identifier)
413
438
}
@@ -468,6 +493,7 @@ public enum Device {
468
493
case . iPad6: return 9.7
469
494
case . iPadAir3: return 10.5
470
495
case . iPad7: return 10.2
496
+ case . iPad8: return 10.2
471
497
case . iPadMini: return 7.9
472
498
case . iPadMini2: return 7.9
473
499
case . iPadMini3: return 7.9
@@ -499,6 +525,10 @@ public enum Device {
499
525
case . appleWatchSeries4_44mm: return 2.0
500
526
case . appleWatchSeries5_40mm: return 1.8
501
527
case . appleWatchSeries5_44mm: return 2.0
528
+ case . appleWatchSeries6_40mm: return 1.8
529
+ case . appleWatchSeries6_44mm: return 2.0
530
+ case . appleWatchSE_40mm: return 1.8
531
+ case . appleWatchSE_44mm: return 2.0
502
532
case . simulator( let model) : return model. diagonal
503
533
case . unknown: return - 1
504
534
}
@@ -544,6 +574,7 @@ public enum Device {
544
574
case . iPad6: return ( width: 3 , height: 4 )
545
575
case . iPadAir3: return ( width: 3 , height: 4 )
546
576
case . iPad7: return ( width: 3 , height: 4 )
577
+ case . iPad8: return ( width: 3 , height: 4 )
547
578
case . iPadMini: return ( width: 3 , height: 4 )
548
579
case . iPadMini2: return ( width: 3 , height: 4 )
549
580
case . iPadMini3: return ( width: 3 , height: 4 )
@@ -575,6 +606,10 @@ public enum Device {
575
606
case . appleWatchSeries4_44mm: return ( width: 4 , height: 5 )
576
607
case . appleWatchSeries5_40mm: return ( width: 4 , height: 5 )
577
608
case . appleWatchSeries5_44mm: return ( width: 4 , height: 5 )
609
+ case . appleWatchSeries6_40mm: return ( width: 4 , height: 5 )
610
+ case . appleWatchSeries6_44mm: return ( width: 4 , height: 5 )
611
+ case . appleWatchSE_40mm: return ( width: 4 , height: 5 )
612
+ case . appleWatchSE_44mm: return ( width: 4 , height: 5 )
578
613
case . simulator( let model) : return model. screenRatio
579
614
case . unknown: return ( width: - 1 , height: - 1 )
580
615
}
@@ -596,7 +631,7 @@ public enum Device {
596
631
597
632
/// All iPads
598
633
public static var allPads : [ Device ] {
599
- return [ . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
634
+ return [ . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPad8 , . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
600
635
}
601
636
602
637
/// All X-Series Devices
@@ -699,7 +734,7 @@ public enum Device {
699
734
700
735
/// All Touch ID Capable Devices
701
736
public static var allTouchIDCapableDevices : [ Device ] {
702
- return [ . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneSE2, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch]
737
+ return [ . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneSE2, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPad8 , . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch]
703
738
}
704
739
705
740
/// All Face ID Capable Devices
@@ -709,7 +744,7 @@ public enum Device {
709
744
710
745
/// All Devices with Touch ID or Face ID
711
746
public static var allBiometricAuthenticationCapableDevices : [ Device ] {
712
- return [ . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPhoneSE2, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
747
+ return [ . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPhoneSE2, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPad8 , . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
713
748
}
714
749
715
750
/// Returns whether or not the device has Touch ID
@@ -794,7 +829,7 @@ public enum Device {
794
829
#elseif os(watchOS)
795
830
/// All Watches
796
831
public static var allWatches : [ Device ] {
797
- return [ . appleWatchSeries0_38mm, . appleWatchSeries0_42mm, . appleWatchSeries1_38mm, . appleWatchSeries1_42mm, . appleWatchSeries2_38mm, . appleWatchSeries2_42mm, . appleWatchSeries3_38mm, . appleWatchSeries3_42mm, . appleWatchSeries4_40mm, . appleWatchSeries4_44mm, . appleWatchSeries5_40mm, . appleWatchSeries5_44mm]
832
+ return [ . appleWatchSeries0_38mm, . appleWatchSeries0_42mm, . appleWatchSeries1_38mm, . appleWatchSeries1_42mm, . appleWatchSeries2_38mm, . appleWatchSeries2_42mm, . appleWatchSeries3_38mm, . appleWatchSeries3_42mm, . appleWatchSeries4_40mm, . appleWatchSeries4_44mm, . appleWatchSeries5_40mm, . appleWatchSeries5_44mm, . appleWatchSeries6_40mm , . appleWatchSeries6_44mm , . appleWatchSE_40mm , . appleWatchSE_44mm ]
798
833
}
799
834
800
835
/// All simulator Watches
@@ -957,6 +992,7 @@ public enum Device {
957
992
case . iPad6: return 264
958
993
case . iPadAir3: return 264
959
994
case . iPad7: return 264
995
+ case . iPad8: return 264
960
996
case . iPadMini: return 163
961
997
case . iPadMini2: return 326
962
998
case . iPadMini3: return 326
@@ -988,6 +1024,10 @@ public enum Device {
988
1024
case . appleWatchSeries4_44mm: return 326
989
1025
case . appleWatchSeries5_40mm: return 326
990
1026
case . appleWatchSeries5_44mm: return 326
1027
+ case . appleWatchSeries6_40mm: return 326
1028
+ case . appleWatchSeries6_44mm: return 326
1029
+ case . appleWatchSE_40mm: return 326
1030
+ case . appleWatchSE_44mm: return 326
991
1031
case . simulator( let model) : return model. ppi
992
1032
case . unknown: return nil
993
1033
}
@@ -1060,6 +1100,7 @@ extension Device: CustomStringConvertible {
1060
1100
case . iPad6: return " iPad (6th generation) "
1061
1101
case . iPadAir3: return " iPad Air (3rd generation) "
1062
1102
case . iPad7: return " iPad (7th generation) "
1103
+ case . iPad8: return " iPad (8th generation) "
1063
1104
case . iPadMini: return " iPad Mini "
1064
1105
case . iPadMini2: return " iPad Mini 2 "
1065
1106
case . iPadMini3: return " iPad Mini 3 "
@@ -1091,6 +1132,10 @@ extension Device: CustomStringConvertible {
1091
1132
case . appleWatchSeries4_44mm: return " Apple Watch Series 4 44mm "
1092
1133
case . appleWatchSeries5_40mm: return " Apple Watch Series 5 40mm "
1093
1134
case . appleWatchSeries5_44mm: return " Apple Watch Series 5 44mm "
1135
+ case . appleWatchSeries6_40mm: return " Apple Watch Series 6 40mm "
1136
+ case . appleWatchSeries6_44mm: return " Apple Watch Series 6 44mm "
1137
+ case . appleWatchSE_40mm: return " Apple Watch SE 40mm "
1138
+ case . appleWatchSE_44mm: return " Apple Watch SE 44mm "
1094
1139
case . simulator( let model) : return " Simulator ( \( model. description) ) "
1095
1140
case . unknown( let identifier) : return identifier
1096
1141
}
@@ -1145,6 +1190,7 @@ extension Device: CustomStringConvertible {
1145
1190
case . iPad6: return " iPad (6th generation) "
1146
1191
case . iPadAir3: return " iPad Air (3rd generation) "
1147
1192
case . iPad7: return " iPad (7th generation) "
1193
+ case . iPad8: return " iPad (8th generation) "
1148
1194
case . iPadMini: return " iPad Mini "
1149
1195
case . iPadMini2: return " iPad Mini 2 "
1150
1196
case . iPadMini3: return " iPad Mini 3 "
@@ -1176,6 +1222,10 @@ extension Device: CustomStringConvertible {
1176
1222
case . appleWatchSeries4_44mm: return " Apple Watch Series 4 44mm "
1177
1223
case . appleWatchSeries5_40mm: return " Apple Watch Series 5 40mm "
1178
1224
case . appleWatchSeries5_44mm: return " Apple Watch Series 5 44mm "
1225
+ case . appleWatchSeries6_40mm: return " Apple Watch Series 6 40mm "
1226
+ case . appleWatchSeries6_44mm: return " Apple Watch Series 6 44mm "
1227
+ case . appleWatchSE_40mm: return " Apple Watch SE 40mm "
1228
+ case . appleWatchSE_44mm: return " Apple Watch SE 44mm "
1179
1229
case . simulator( let model) : return " Simulator ( \( model. safeDescription) ) "
1180
1230
case . unknown( let identifier) : return identifier
1181
1231
}
@@ -1438,7 +1488,7 @@ extension Device {
1438
1488
1439
1489
/// All Apple Pencil Capable Devices
1440
1490
public static var allApplePencilCapableDevices : [ Device ] {
1441
- return [ . iPad6, . iPadAir3, . iPad7, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
1491
+ return [ . iPad6, . iPadAir3, . iPad7, . iPad8 , . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
1442
1492
}
1443
1493
1444
1494
/// Returns supported version of the Apple Pencil
@@ -1447,6 +1497,7 @@ extension Device {
1447
1497
case . iPad6: return . firstGeneration
1448
1498
case . iPadAir3: return . firstGeneration
1449
1499
case . iPad7: return . firstGeneration
1500
+ case . iPad8: return . firstGeneration
1450
1501
case . iPadMini5: return . firstGeneration
1451
1502
case . iPadPro9Inch: return . firstGeneration
1452
1503
case . iPadPro12Inch: return . firstGeneration
@@ -1505,6 +1556,7 @@ extension Device {
1505
1556
case . iPad6: return [ . wide]
1506
1557
case . iPadAir3: return [ . wide]
1507
1558
case . iPad7: return [ . wide]
1559
+ case . iPad8: return [ . wide]
1508
1560
case . iPadMini: return [ . wide]
1509
1561
case . iPadMini2: return [ . wide]
1510
1562
case . iPadMini3: return [ . wide]
@@ -1532,7 +1584,7 @@ extension Device {
1532
1584
1533
1585
/// All devices that feature a camera
1534
1586
public static var allDevicesWithCamera : [ Device ] {
1535
- return [ . iPodTouch5, . iPodTouch6, . iPodTouch7, . iPhone4, . iPhone4s, . iPhone5, . iPhone5c, . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPhoneSE2, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
1587
+ return [ . iPodTouch5, . iPodTouch6, . iPodTouch7, . iPhone4, . iPhone4s, . iPhone5, . iPhone5c, . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPhoneSE2, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPad8 , . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
1536
1588
}
1537
1589
1538
1590
/// All devices that feature a normal camera
@@ -1543,7 +1595,7 @@ extension Device {
1543
1595
1544
1596
/// All devices that feature a wide camera
1545
1597
public static var allDevicesWithWideCamera : [ Device ] {
1546
- return [ . iPodTouch5, . iPodTouch6, . iPodTouch7, . iPhone4, . iPhone4s, . iPhone5, . iPhone5c, . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPhoneSE2, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
1598
+ return [ . iPodTouch5, . iPodTouch6, . iPodTouch7, . iPhone4, . iPhone4s, . iPhone5, . iPhone5c, . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPhoneSE2, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPad8 , . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2, . iPadPro12Inch4]
1547
1599
}
1548
1600
1549
1601
/// All devices that feature a telephoto camera
0 commit comments