@@ -224,6 +224,14 @@ public enum Device {
224
224
///
225
225
/// 
226
226
case iPadPro12Inch3
227
+ /// Device is an [iPad Pro 11-inch (2nd generation)](https://support.apple.com/kb/SP814)
228
+ ///
229
+ /// 
230
+ case iPadPro11Inch2
231
+ /// Device is an [iPad Pro 12.9-inch (4th generation)](https://support.apple.com/kb/SP815)
232
+ ///
233
+ /// 
234
+ case iPadPro12Inch4
227
235
/// Device is a [HomePod](https://support.apple.com/kb/SP773)
228
236
///
229
237
/// 
@@ -368,6 +376,8 @@ public enum Device {
368
376
case " iPad7,3 " , " iPad7,4 " : return iPadPro10Inch
369
377
case " iPad8,1 " , " iPad8,2 " , " iPad8,3 " , " iPad8,4 " : return iPadPro11Inch
370
378
case " iPad8,5 " , " iPad8,6 " , " iPad8,7 " , " iPad8,8 " : return iPadPro12Inch3
379
+ case " iPad8,9 " , " iPad8,10 " : return iPadPro11Inch2
380
+ case " iPad8,11 " , " iPad8,12 " : return iPadPro12Inch4
371
381
case " AudioAccessory1,1 " : return homePod
372
382
case " i386 " , " x86_64 " : return simulator ( mapToDevice ( identifier: ProcessInfo ( ) . environment [ " SIMULATOR_MODEL_IDENTIFIER " ] ?? " iOS " ) )
373
383
default : return unknown ( identifier)
@@ -463,6 +473,8 @@ public enum Device {
463
473
case . iPadPro10Inch: return 10.5
464
474
case . iPadPro11Inch: return 11.0
465
475
case . iPadPro12Inch3: return 12.9
476
+ case . iPadPro11Inch2: return 11.0
477
+ case . iPadPro12Inch4: return 12.9
466
478
case . homePod: return - 1
467
479
case . simulator( let model) : return model. diagonal
468
480
case . unknown: return - 1
@@ -536,6 +548,8 @@ public enum Device {
536
548
case . iPadPro10Inch: return ( width: 3 , height: 4 )
537
549
case . iPadPro11Inch: return ( width: 139 , height: 199 )
538
550
case . iPadPro12Inch3: return ( width: 512 , height: 683 )
551
+ case . iPadPro11Inch2: return ( width: 139 , height: 199 )
552
+ case . iPadPro12Inch4: return ( width: 512 , height: 683 )
539
553
case . homePod: return ( width: 4 , height: 5 )
540
554
case . simulator( let model) : return model. screenRatio
541
555
case . unknown: return ( width: - 1 , height: - 1 )
@@ -575,7 +589,7 @@ public enum Device {
575
589
576
590
/// All iPads
577
591
public static var allPads : [ Device ] {
578
- return [ . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
592
+ return [ . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
579
593
}
580
594
581
595
/// All X-Series Devices
@@ -591,7 +605,7 @@ public enum Device {
591
605
592
606
/// All Pro Devices
593
607
public static var allProDevices : [ Device ] {
594
- return [ . iPhone11Pro, . iPhone11ProMax, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
608
+ return [ . iPhone11Pro, . iPhone11ProMax, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
595
609
}
596
610
597
611
/// All mini Devices
@@ -683,12 +697,12 @@ public enum Device {
683
697
684
698
/// All Face ID Capable Devices
685
699
public static var allFaceIDCapableDevices : [ Device ] {
686
- return [ . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadPro11Inch, . iPadPro12Inch3]
700
+ return [ . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
687
701
}
688
702
689
703
/// All Devices with Touch ID or Face ID
690
704
public static var allBiometricAuthenticationCapableDevices : [ Device ] {
691
- return [ . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
705
+ return [ . iPhone5s, . iPhone6, . iPhone6Plus, . iPhone6s, . iPhone6sPlus, . iPhone7, . iPhone7Plus, . iPhoneSE, . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
692
706
}
693
707
694
708
/// Returns whether or not the device has Touch ID
@@ -723,7 +737,7 @@ public enum Device {
723
737
724
738
/// All devices that feature a screen with rounded corners.
725
739
public static var allDevicesWithRoundedDisplayCorners : [ Device ] {
726
- return [ . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadPro11Inch, . iPadPro12Inch3]
740
+ return [ . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
727
741
}
728
742
729
743
/// Returns whether or not the device has a screen with rounded corners.
@@ -746,10 +760,20 @@ public enum Device {
746
760
return [ . iPhone8, . iPhone8Plus, . iPhoneX, . iPhoneXS, . iPhoneXSMax, . iPhoneXR, . iPhone11, . iPhone11Pro, . iPhone11ProMax]
747
761
}
748
762
749
- /// Returns whether or not the device supports wireless charging
763
+ /// Returns whether or not the device supports wireless charging.
750
764
public var supportsWirelessCharging : Bool {
751
765
return isOneOf ( Device . allDevicesWithWirelessChargingSupport) || isOneOf ( Device . allDevicesWithWirelessChargingSupport. map ( Device . simulator) )
752
766
}
767
+
768
+ /// All devices that have a LiDAR sensor.
769
+ public static var allDevicesWithALidarSensor : [ Device ] {
770
+ return [ . iPadPro11Inch2, . iPadPro12Inch4]
771
+ }
772
+
773
+ /// Returns whether or not the device has a LiDAR sensor.
774
+ public var hasLidarSensor : Bool {
775
+ return isOneOf ( Device . allDevicesWithALidarSensor) || isOneOf ( Device . allDevicesWithALidarSensor. map ( Device . simulator) )
776
+ }
753
777
#elseif os(tvOS)
754
778
/// All TVs
755
779
public static var allTVs : [ Device ] {
@@ -936,6 +960,8 @@ public enum Device {
936
960
case . iPadPro10Inch: return 264
937
961
case . iPadPro11Inch: return 264
938
962
case . iPadPro12Inch3: return 264
963
+ case . iPadPro11Inch2: return 264
964
+ case . iPadPro12Inch4: return 264
939
965
case . homePod: return - 1
940
966
case . simulator( let model) : return model. ppi
941
967
case . unknown: return nil
@@ -1036,6 +1062,8 @@ extension Device: CustomStringConvertible {
1036
1062
case . iPadPro10Inch: return " iPad Pro (10.5-inch) "
1037
1063
case . iPadPro11Inch: return " iPad Pro (11-inch) "
1038
1064
case . iPadPro12Inch3: return " iPad Pro (12.9-inch) (3rd generation) "
1065
+ case . iPadPro11Inch2: return " iPad Pro (11-inch) (2nd generation) "
1066
+ case . iPadPro12Inch4: return " iPad Pro (12.9-inch) (4th generation) "
1039
1067
case . homePod: return " HomePod "
1040
1068
case . simulator( let model) : return " Simulator ( \( model) ) "
1041
1069
case . unknown( let identifier) : return identifier
@@ -1118,6 +1146,8 @@ extension Device: CustomStringConvertible {
1118
1146
case . iPadPro10Inch: return " iPad Pro (10.5-inch) "
1119
1147
case . iPadPro11Inch: return " iPad Pro (11-inch) "
1120
1148
case . iPadPro12Inch3: return " iPad Pro (12.9-inch) (3rd generation) "
1149
+ case . iPadPro11Inch2: return " iPad Pro (11-inch) (2nd generation) "
1150
+ case . iPadPro12Inch4: return " iPad Pro (12.9-inch) (4th generation) "
1121
1151
case . homePod: return " HomePod "
1122
1152
case . simulator( let model) : return " Simulator ( \( model) ) "
1123
1153
case . unknown( let identifier) : return identifier
@@ -1402,7 +1432,7 @@ extension Device {
1402
1432
1403
1433
/// All Apple Pencil Capable Devices
1404
1434
public static var allApplePencilCapableDevices : [ Device ] {
1405
- return [ . iPad6, . iPadAir3, . iPad7, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
1435
+ return [ . iPad6, . iPadAir3, . iPad7, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
1406
1436
}
1407
1437
1408
1438
/// Returns supported version of the Apple Pencil
@@ -1418,6 +1448,8 @@ extension Device {
1418
1448
case . iPadPro10Inch: return . firstGeneration
1419
1449
case . iPadPro11Inch: return . secondGeneration
1420
1450
case . iPadPro12Inch3: return . secondGeneration
1451
+ case . iPadPro11Inch2: return . secondGeneration
1452
+ case . iPadPro12Inch4: return . secondGeneration
1421
1453
case . simulator( let model) : return model. applePencilSupport
1422
1454
default : return [ ]
1423
1455
}
@@ -1483,6 +1515,8 @@ extension Device {
1483
1515
case . iPhoneXS: return [ . wide, . telephoto]
1484
1516
case . iPhoneXSMax: return [ . wide, . telephoto]
1485
1517
case . iPhone11: return [ . wide, . ultraWide]
1518
+ case . iPadPro11Inch2: return [ . wide, . ultraWide]
1519
+ case . iPadPro12Inch4: return [ . wide, . ultraWide]
1486
1520
case . iPhone11Pro: return [ . wide, . telephoto, . ultraWide]
1487
1521
case . iPhone11ProMax: return [ . wide, . telephoto, . ultraWide]
1488
1522
default : return [ ]
@@ -1491,18 +1525,18 @@ extension Device {
1491
1525
1492
1526
/// All devices that feature a camera
1493
1527
public static var allDevicesWithCamera : [ Device ] {
1494
- 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, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
1528
+ 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, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
1495
1529
}
1496
1530
1497
1531
/// All devices that feature a normal camera
1498
1532
@available ( * , deprecated, renamed: " allDevicesWithWideCamera " )
1499
1533
public static var allDevicesWithNormalCamera : [ Device ] {
1500
- 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, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
1534
+ 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, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
1501
1535
}
1502
1536
1503
1537
/// All devices that feature a wide camera
1504
1538
public static var allDevicesWithWideCamera : [ Device ] {
1505
- 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, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3]
1539
+ 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, . iPad2, . iPad3, . iPad4, . iPadAir, . iPadAir2, . iPad5, . iPad6, . iPadAir3, . iPad7, . iPadMini, . iPadMini2, . iPadMini3, . iPadMini4, . iPadMini5, . iPadPro9Inch, . iPadPro12Inch, . iPadPro12Inch2, . iPadPro10Inch, . iPadPro11Inch, . iPadPro12Inch3, . iPadPro11Inch2 , . iPadPro12Inch4 ]
1506
1540
}
1507
1541
1508
1542
/// All devices that feature a telephoto camera
@@ -1512,7 +1546,7 @@ extension Device {
1512
1546
1513
1547
/// All devices that feature an ultra wide camera
1514
1548
public static var allDevicesWithUltraWideCamera : [ Device ] {
1515
- return [ . iPhone11, . iPhone11Pro, . iPhone11ProMax]
1549
+ return [ . iPhone11, . iPhone11Pro, . iPhone11ProMax, . iPadPro11Inch2 , . iPadPro12Inch4 ]
1516
1550
}
1517
1551
1518
1552
/// Returns whether or not the current device has a camera
0 commit comments