diff --git a/CHANGELOG.md b/CHANGELOG.md index e388aa6..3fb45e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## Version 4.8.0 + +Releasedate: 2022-10-28 + +```ruby +pod 'DeviceKit', '~> 4.8' +``` + +### New October 2022 devices + +This version adds support for the devices that were released in October 2022: ([#334](https://github.com/devicekit/DeviceKit/pull/334)) + +| Device | Case value | +| --- | --- | +| iPad (10th generation) | `Device.iPad10` | +| iPad Pro 11-inch (4th generation) | `Device.iPadPro11Inch4` | +| iPad Pro 12.9-inch (6th generation) | `Device.iPadPro12Inch6` | + ## Version 4.7.0 Releasedate: 2022-09-13 diff --git a/DeviceKit.podspec b/DeviceKit.podspec index 832c339..99c4c31 100644 --- a/DeviceKit.podspec +++ b/DeviceKit.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'DeviceKit' - s.version = '4.7.0' + s.version = '4.8.0' s.summary = 'DeviceKit is a ยต-framework that provides a value-type replacement of UIDevice.' s.description = <<-DESC diff --git a/DeviceKit.xcodeproj/project.pbxproj b/DeviceKit.xcodeproj/project.pbxproj index df3025e..6d06add 100644 --- a/DeviceKit.xcodeproj/project.pbxproj +++ b/DeviceKit.xcodeproj/project.pbxproj @@ -380,7 +380,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 4.7.0; + MARKETING_VERSION = 4.8.0; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = me.dennisweissmann.DeviceKit; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -437,7 +437,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 4.7.0; + MARKETING_VERSION = 4.8.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = me.dennisweissmann.DeviceKit; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/README.md b/README.md index ce4d058..4766f7a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ `DeviceKit` is a value-type replacement of [`UIDevice`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/). -## Current version 4.7. +## Current version 4.8. See our detailed [changelog](CHANGELOG.md) for the latest features, improvements and bug fixes. ## Features diff --git a/Source/Device.generated.swift b/Source/Device.generated.swift index e04be9c..461d53b 100644 --- a/Source/Device.generated.swift +++ b/Source/Device.generated.swift @@ -184,19 +184,19 @@ public enum Device { /// /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1136/en_US/iphone-se-3rd-gen-colors-240.png) case iPhoneSE3 - /// Device is an [iPhone 14](https://support.apple.com/kb/TODO) + /// Device is an [iPhone 14](https://support.apple.com/kb/SP873) /// /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1092/en_US/TODO) case iPhone14 - /// Device is an [iPhone 14 Plus](https://support.apple.com/kb/TODO) + /// Device is an [iPhone 14 Plus](https://support.apple.com/kb/SP874) /// /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1091/en_US/TODO) case iPhone14Plus - /// Device is an [iPhone 14 Pro](https://support.apple.com/kb/TODO) + /// Device is an [iPhone 14 Pro](https://support.apple.com/kb/SP875) /// /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1093/en_US/TODO) case iPhone14Pro - /// Device is an [iPhone 14 Pro Max](https://support.apple.com/kb/TODO) + /// Device is an [iPhone 14 Pro Max](https://support.apple.com/kb/SP876) /// /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1095/en_US/TODO) case iPhone14ProMax @@ -244,6 +244,10 @@ public enum Device { /// /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1096/en_US/ipad-9gen-240.png) case iPad9 + /// Device is an [iPad (10th generation)](https://support.apple.com/kb/SP884) + /// + /// ![Image](https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1096/en_US/TODO.png) + case iPad10 /// Device is an [iPad Air (4th generation)](https://support.apple.com/kb/SP828) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP828/sp828ipad-air-ipados14-960_2x.png) @@ -316,6 +320,14 @@ public enum Device { /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP844/ipad-pro-12-9_2x.png) case iPadPro12Inch5 + /// Device is an [iPad Pro 11-inch (4th generation)](https://support.apple.com/kb/SP882) + /// + /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP843/TODO.png) + case iPadPro11Inch4 + /// Device is an [iPad Pro 12.9-inch (6th generation)](https://support.apple.com/kb/SP883) + /// + /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP844/TODO.png) + case iPadPro12Inch6 /// Device is a [HomePod](https://support.apple.com/kb/SP773) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP773/homepod_space_gray_large_2x.jpg) @@ -406,23 +418,23 @@ public enum Device { /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP860/series7-480_2x.png) case appleWatchSeries7_45mm - /// Device is an [Apple Watch Series 8](https://support.apple.com/kb/TODO) + /// Device is an [Apple Watch Series 8](https://support.apple.com/kb/SP878) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP860/TODO) case appleWatchSeries8_41mm - /// Device is an [Apple Watch Series 8](https://support.apple.com/kb/TODO) + /// Device is an [Apple Watch Series 8](https://support.apple.com/kb/SP878) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP860/TODO) case appleWatchSeries8_45mm - /// Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/TODO) + /// Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/SP877) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP827/TODO) case appleWatchSE2_40mm - /// Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/TODO) + /// Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/SP877) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP827/TODO) case appleWatchSE2_44mm - /// Device is an [Apple Watch Ultra](https://support.apple.com/kb/TODO) + /// Device is an [Apple Watch Ultra](https://support.apple.com/kb/SP879) /// /// ![Image](https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP827/TODO) case appleWatchUltra @@ -513,6 +525,7 @@ public enum Device { case "iPad7,11", "iPad7,12": return iPad7 case "iPad11,6", "iPad11,7": return iPad8 case "iPad12,1", "iPad12,2": return iPad9 + case "iPad13,18", "iPad13,19": return iPad10 case "iPad13,1", "iPad13,2": return iPadAir4 case "iPad13,16", "iPad13,17": return iPadAir5 case "iPad2,5", "iPad2,6", "iPad2,7": return iPadMini @@ -531,6 +544,8 @@ public enum Device { case "iPad8,11", "iPad8,12": return iPadPro12Inch4 case "iPad13,4", "iPad13,5", "iPad13,6", "iPad13,7": return iPadPro11Inch3 case "iPad13,8", "iPad13,9", "iPad13,10", "iPad13,11": return iPadPro12Inch5 + case "iPad14,3", "iPad14,4": return iPadPro11Inch4 + case "iPad14,5", "iPad14,6": return iPadPro12Inch6 case "AudioAccessory1,1": return homePod case "i386", "x86_64", "arm64": return simulator(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "iOS")) default: return unknown(identifier) @@ -643,6 +658,7 @@ public enum Device { case .iPad7: return 10.2 case .iPad8: return 10.2 case .iPad9: return 10.2 + case .iPad10: return 10.9 case .iPadAir4: return 10.9 case .iPadAir5: return 10.9 case .iPadMini: return 7.9 @@ -661,6 +677,8 @@ public enum Device { case .iPadPro12Inch4: return 12.9 case .iPadPro11Inch3: return 11.0 case .iPadPro12Inch5: return 12.9 + case .iPadPro11Inch4: return 11.0 + case .iPadPro12Inch6: return 12.9 case .homePod: return -1 case .simulator(let model): return model.diagonal case .unknown: return -1 @@ -750,6 +768,7 @@ public enum Device { case .iPad7: return (width: 3, height: 4) case .iPad8: return (width: 3, height: 4) case .iPad9: return (width: 3, height: 4) + case .iPad10: return (width: 41, height: 59) case .iPadAir4: return (width: 41, height: 59) case .iPadAir5: return (width: 41, height: 59) case .iPadMini: return (width: 3, height: 4) @@ -768,6 +787,8 @@ public enum Device { case .iPadPro12Inch4: return (width: 512, height: 683) case .iPadPro11Inch3: return (width: 139, height: 199) case .iPadPro12Inch5: return (width: 512, height: 683) + case .iPadPro11Inch4: return (width: 139, height: 199) + case .iPadPro12Inch6: return (width: 512, height: 683) case .homePod: return (width: 4, height: 5) case .simulator(let model): return model.screenRatio case .unknown: return (width: -1, height: -1) @@ -818,7 +839,7 @@ public enum Device { /// All iPads public static var allPads: [Device] { - return [.iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPadAir4, .iPadAir5, .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPad10, .iPadAir4, .iPadAir5, .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// All X-Series Devices @@ -834,7 +855,7 @@ public enum Device { /// All Pro Devices public static var allProDevices: [Device] { - return [.iPhone11Pro, .iPhone11ProMax, .iPhone12Pro, .iPhone12ProMax, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPhone11Pro, .iPhone11ProMax, .iPhone12Pro, .iPhone12ProMax, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// All mini Devices @@ -921,17 +942,17 @@ public enum Device { /// All Touch ID Capable Devices public static var allTouchIDCapableDevices: [Device] { - return [.iPhone5s, .iPhone6, .iPhone6Plus, .iPhone6s, .iPhone6sPlus, .iPhone7, .iPhone7Plus, .iPhoneSE, .iPhone8, .iPhone8Plus, .iPhoneSE2, .iPhoneSE3, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPadAir4, .iPadAir5, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch] + return [.iPhone5s, .iPhone6, .iPhone6Plus, .iPhone6s, .iPhone6sPlus, .iPhone7, .iPhone7Plus, .iPhoneSE, .iPhone8, .iPhone8Plus, .iPhoneSE2, .iPhoneSE3, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPad10, .iPadAir4, .iPadAir5, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch] } /// All Face ID Capable Devices public static var allFaceIDCapableDevices: [Device] { - return [.iPhoneX, .iPhoneXS, .iPhoneXSMax, .iPhoneXR, .iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPhoneX, .iPhoneXS, .iPhoneXSMax, .iPhoneXR, .iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// All Devices with Touch ID or Face ID public static var allBiometricAuthenticationCapableDevices: [Device] { - return [.iPhone5s, .iPhone6, .iPhone6Plus, .iPhone6s, .iPhone6sPlus, .iPhone7, .iPhone7Plus, .iPhoneSE, .iPhone8, .iPhone8Plus, .iPhoneX, .iPhoneXS, .iPhoneXSMax, .iPhoneXR, .iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhoneSE2, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhoneSE3, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPadAir4, .iPadAir5, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPhone5s, .iPhone6, .iPhone6Plus, .iPhone6s, .iPhone6sPlus, .iPhone7, .iPhone7Plus, .iPhoneSE, .iPhone8, .iPhone8Plus, .iPhoneX, .iPhoneXS, .iPhoneXSMax, .iPhoneXR, .iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhoneSE2, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhoneSE3, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPad10, .iPadAir4, .iPadAir5, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// Returns whether or not the device has Touch ID @@ -966,7 +987,7 @@ public enum Device { /// All devices that feature a screen with rounded corners. public static var allDevicesWithRoundedDisplayCorners: [Device] { - return [.iPhoneX, .iPhoneXS, .iPhoneXSMax, .iPhoneXR, .iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadAir4, .iPadAir5, .iPadMini6, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPhoneX, .iPhoneXS, .iPhoneXSMax, .iPhoneXR, .iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPad10, .iPadAir4, .iPadAir5, .iPadMini6, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// Returns whether or not the device has a screen with rounded corners. @@ -996,7 +1017,7 @@ public enum Device { /// All devices that have a LiDAR sensor. public static var allDevicesWithALidarSensor: [Device] { - return [.iPhone12Pro, .iPhone12ProMax, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPhone12Pro, .iPhone12ProMax, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// Returns whether or not the device has a LiDAR sensor. @@ -1200,6 +1221,7 @@ public enum Device { case .iPad7: return 264 case .iPad8: return 264 case .iPad9: return 264 + case .iPad10: return 264 case .iPadAir4: return 264 case .iPadAir5: return 264 case .iPadMini: return 163 @@ -1218,6 +1240,8 @@ public enum Device { case .iPadPro12Inch4: return 264 case .iPadPro11Inch3: return 264 case .iPadPro12Inch5: return 264 + case .iPadPro11Inch4: return 264 + case .iPadPro12Inch6: return 264 case .homePod: return -1 case .simulator(let model): return model.ppi case .unknown: return nil @@ -1334,6 +1358,7 @@ extension Device: CustomStringConvertible { case .iPad7: return "iPad (7th generation)" case .iPad8: return "iPad (8th generation)" case .iPad9: return "iPad (9th generation)" + case .iPad10: return "iPad (10th generation)" case .iPadAir4: return "iPad Air (4th generation)" case .iPadAir5: return "iPad Air (5th generation)" case .iPadMini: return "iPad Mini" @@ -1352,6 +1377,8 @@ extension Device: CustomStringConvertible { case .iPadPro12Inch4: return "iPad Pro (12.9-inch) (4th generation)" case .iPadPro11Inch3: return "iPad Pro (11-inch) (3rd generation)" case .iPadPro12Inch5: return "iPad Pro (12.9-inch) (5th generation)" + case .iPadPro11Inch4: return "iPad Pro (11-inch) (4th generation)" + case .iPadPro12Inch6: return "iPad Pro (12.9-inch) (6th generation)" case .homePod: return "HomePod" case .simulator(let model): return "Simulator (\(model.description))" case .unknown(let identifier): return identifier @@ -1451,6 +1478,7 @@ extension Device: CustomStringConvertible { case .iPad7: return "iPad (7th generation)" case .iPad8: return "iPad (8th generation)" case .iPad9: return "iPad (9th generation)" + case .iPad10: return "iPad (10th generation)" case .iPadAir4: return "iPad Air (4th generation)" case .iPadAir5: return "iPad Air (5th generation)" case .iPadMini: return "iPad Mini" @@ -1469,6 +1497,8 @@ extension Device: CustomStringConvertible { case .iPadPro12Inch4: return "iPad Pro (12.9-inch) (4th generation)" case .iPadPro11Inch3: return "iPad Pro (11-inch) (3rd generation)" case .iPadPro12Inch5: return "iPad Pro (12.9-inch) (5th generation)" + case .iPadPro11Inch4: return "iPad Pro (11-inch) (4th generation)" + case .iPadPro12Inch6: return "iPad Pro (12.9-inch) (6th generation)" case .homePod: return "HomePod" case .simulator(let model): return "Simulator (\(model.safeDescription))" case .unknown(let identifier): return identifier @@ -1761,7 +1791,7 @@ extension Device { /// All Apple Pencil Capable Devices public static var allApplePencilCapableDevices: [Device] { - return [.iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPadAir4, .iPadAir5, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPad10, .iPadAir4, .iPadAir5, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// Returns supported version of the Apple Pencil @@ -1772,6 +1802,7 @@ extension Device { case .iPad7: return .firstGeneration case .iPad8: return .firstGeneration case .iPad9: return .firstGeneration + case .iPad10: return .firstGeneration case .iPadMini5: return .firstGeneration case .iPadPro9Inch: return .firstGeneration case .iPadPro12Inch: return .firstGeneration @@ -1786,6 +1817,8 @@ extension Device { case .iPadPro12Inch4: return .secondGeneration case .iPadPro11Inch3: return .secondGeneration case .iPadPro12Inch5: return .secondGeneration + case .iPadPro11Inch4: return .secondGeneration + case .iPadPro12Inch6: return .secondGeneration case .simulator(let model): return model.applePencilSupport default: return [] } @@ -1838,6 +1871,7 @@ extension Device { case .iPad7: return [.wide] case .iPad8: return [.wide] case .iPad9: return [.wide] + case .iPad10: return [.wide] case .iPadAir4: return [.wide] case .iPadAir5: return [.wide] case .iPadMini: return [.wide] @@ -1868,6 +1902,8 @@ extension Device { case .iPadPro12Inch4: return [.wide, .ultraWide] case .iPadPro11Inch3: return [.wide, .ultraWide] case .iPadPro12Inch5: return [.wide, .ultraWide] + case .iPadPro11Inch4: return [.wide, .ultraWide] + case .iPadPro12Inch6: return [.wide, .ultraWide] case .iPhone11Pro: return [.wide, .telephoto, .ultraWide] case .iPhone11ProMax: return [.wide, .telephoto, .ultraWide] case .iPhone12Pro: return [.wide, .telephoto, .ultraWide] @@ -1882,7 +1918,7 @@ extension Device { /// All devices that feature a camera public static var allDevicesWithCamera: [Device] { - 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, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhoneSE3, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPadAir4, .iPadAir5, .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + 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, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhoneSE3, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPad10, .iPadAir4, .iPadAir5, .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// All devices that feature a normal camera @@ -1893,7 +1929,7 @@ extension Device { /// All devices that feature a wide camera public static var allDevicesWithWideCamera: [Device] { - 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, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhoneSE3, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPadAir4, .iPadAir5, .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + 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, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhoneSE3, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPad2, .iPad3, .iPad4, .iPadAir, .iPadAir2, .iPad5, .iPad6, .iPadAir3, .iPad7, .iPad8, .iPad9, .iPad10, .iPadAir4, .iPadAir5, .iPadMini, .iPadMini2, .iPadMini3, .iPadMini4, .iPadMini5, .iPadMini6, .iPadPro9Inch, .iPadPro12Inch, .iPadPro12Inch2, .iPadPro10Inch, .iPadPro11Inch, .iPadPro12Inch3, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// All devices that feature a telephoto camera @@ -1903,7 +1939,7 @@ extension Device { /// All devices that feature an ultra wide camera public static var allDevicesWithUltraWideCamera: [Device] { - return [.iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5] + return [.iPhone11, .iPhone11Pro, .iPhone11ProMax, .iPhone12, .iPhone12Mini, .iPhone12Pro, .iPhone12ProMax, .iPhone13, .iPhone13Mini, .iPhone13Pro, .iPhone13ProMax, .iPhone14, .iPhone14Plus, .iPhone14Pro, .iPhone14ProMax, .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, .iPadPro12Inch5, .iPadPro11Inch4, .iPadPro12Inch6] } /// Returns whether or not the current device has a camera diff --git a/Source/Device.swift.gyb b/Source/Device.swift.gyb index b9d3768..cb05885 100644 --- a/Source/Device.swift.gyb +++ b/Source/Device.swift.gyb @@ -74,10 +74,10 @@ iPhones = [ Device("iPhone13Pro", "Device is an [iPhone 13 Pro](https://support.apple.com/kb/SP852)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1093/en_US/iphone-13pro-240.png", ["iPhone14,2"], 6.1, (9, 19.5), "iPhone 13 Pro", "iPhone 13 Pro", 460, False, False, True, True, False, True, True, True, True, 0, False, 123, True), Device("iPhone13ProMax", "Device is an [iPhone 13 Pro Max](https://support.apple.com/kb/SP848)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1095/en_US/iphone-13promax-240.png", ["iPhone14,3"], 6.7, (9, 19.5), "iPhone 13 Pro Max", "iPhone 13 Pro Max", 458, True, False, True, True, False, True, True, True, True, 0, False, 123, True), Device("iPhoneSE3", "Device is an [iPhone SE (3rd generation)](https://support.apple.com/kb/SP867)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1136/en_US/iphone-se-3rd-gen-colors-240.png", ["iPhone14,6"], 4.7, (9, 16), "iPhone SE (3rd generation)", "iPhone SE (3rd generation)", 326, False, False, False, False, True, False, False, True, False, 0, False, 1, False), - Device("iPhone14", "Device is an [iPhone 14](https://support.apple.com/kb/TODO)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1092/en_US/TODO", ["iPhone14,7"], 6.1, (9, 19.5), "iPhone 14", "iPhone 14", 460, False, False, False, True, False, True, True, True, True, 0, False, 13, False), - Device("iPhone14Plus", "Device is an [iPhone 14 Plus](https://support.apple.com/kb/TODO)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1091/en_US/TODO", ["iPhone14,8"], 6.7, (9, 19.5), "iPhone 14 Plus", "iPhone 14 Plus", 476, True, False, False, True, False, True, True, True, True, 0, False, 13, False), - Device("iPhone14Pro", "Device is an [iPhone 14 Pro](https://support.apple.com/kb/TODO)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1093/en_US/TODO", ["iPhone15,2"], 6.1, (9, 19.5), "iPhone 14 Pro", "iPhone 14 Pro", 460, False, False, True, True, False, True, True, True, True, 0, False, 123, True), - Device("iPhone14ProMax", "Device is an [iPhone 14 Pro Max](https://support.apple.com/kb/TODO)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1095/en_US/TODO", ["iPhone15,3"], 6.7, (9, 19.5), "iPhone 14 Pro Max", "iPhone 14 Pro Max", 458, True, False, True, True, False, True, True, True, True, 0, False, 123, True), + Device("iPhone14", "Device is an [iPhone 14](https://support.apple.com/kb/SP873)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1092/en_US/TODO", ["iPhone14,7"], 6.1, (9, 19.5), "iPhone 14", "iPhone 14", 460, False, False, False, True, False, True, True, True, True, 0, False, 13, False), + Device("iPhone14Plus", "Device is an [iPhone 14 Plus](https://support.apple.com/kb/SP874)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1091/en_US/TODO", ["iPhone14,8"], 6.7, (9, 19.5), "iPhone 14 Plus", "iPhone 14 Plus", 476, True, False, False, True, False, True, True, True, True, 0, False, 13, False), + Device("iPhone14Pro", "Device is an [iPhone 14 Pro](https://support.apple.com/kb/SP875)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1093/en_US/TODO", ["iPhone15,2"], 6.1, (9, 19.5), "iPhone 14 Pro", "iPhone 14 Pro", 460, False, False, True, True, False, True, True, True, True, 0, False, 123, True), + Device("iPhone14ProMax", "Device is an [iPhone 14 Pro Max](https://support.apple.com/kb/SP876)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1095/en_US/TODO", ["iPhone15,3"], 6.7, (9, 19.5), "iPhone 14 Pro Max", "iPhone 14 Pro Max", 458, True, False, True, True, False, True, True, True, True, 0, False, 123, True), ] iPads = [ @@ -92,6 +92,7 @@ iPads = [ Device("iPad7", "Device is an [iPad (7th generation)](https://support.apple.com/kb/SP807)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP807/sp807-ipad-7th-gen_2x.png", ["iPad7,11", "iPad7,12"], 10.2, (3, 4), "iPad (7th generation)", "iPad (7th generation)", 264, False, False, False, False, True, False, False, False, False, 1, False, 1, False), Device("iPad8", "Device is an [iPad (8th generation)](https://support.apple.com/kb/SP822)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP822/sp822-ipad-8gen_2x.png", ["iPad11,6", "iPad11,7"], 10.2, (3, 4), "iPad (8th generation)", "iPad (8th generation)", 264, False, False, False, False, True, False, False, False, False, 1, False, 1, False), Device("iPad9", "Device is an [iPad (9th generation)](https://support.apple.com/kb/SP849)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1096/en_US/ipad-9gen-240.png", ["iPad12,1", "iPad12,2"], 10.2, (3, 4), "iPad (9th generation)", "iPad (9th generation)", 264, False, False, False, False, True, False, False, False, False, 1, False, 1, False), + Device("iPad10", "Device is an [iPad (10th generation)](https://support.apple.com/kb/SP884)", "https://km.support.apple.com/resources/sites/APPLE/content/live/IMAGES/1000/IM1096/en_US/TODO.png", ["iPad13,18", "iPad13,19"], 10.9, (41, 59), "iPad (10th generation)", "iPad (10th generation)", 264, False, False, False, False, True, False, False, False, True, 1, False, 1, False), Device("iPadAir4", "Device is an [iPad Air (4th generation)](https://support.apple.com/kb/SP828)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP828/sp828ipad-air-ipados14-960_2x.png", ["iPad13,1", "iPad13,2"], 10.9, (41, 59), "iPad Air (4th generation)", "iPad Air (4th generation)", 264, False, False, False, False, True, False, False, False, True, 2, False, 1, False), Device("iPadAir5", "Device is an [iPad Air (5th generation)](https://support.apple.com/kb/TODO)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/TODO", ["iPad13,16", "iPad13,17"], 10.9, (41, 59), "iPad Air (5th generation)", "iPad Air (5th generation)", 264, False, False, False, False, True, False, False, False, True, 2, False, 1, False), Device("iPadMini", "Device is an [iPad Mini](https://support.apple.com/kb/SP661)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP661/sp661_ipad_mini_color.jpg", ["iPad2,5", "iPad2,6", "iPad2,7"], 7.9, (3, 4), "iPad Mini", "iPad Mini", 163, False, True, False, False, False, False, False, False, False, 0, False, 1, False), @@ -110,6 +111,8 @@ iPads = [ Device("iPadPro12Inch4", "Device is an [iPad Pro 12.9-inch (4th generation)](https://support.apple.com/kb/SP815)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP815/ipad-pro-12-2020.jpeg", ["iPad8,11", "iPad8,12"], 12.9, (512, 683), "iPad Pro (12.9-inch) (4th generation)", "iPad Pro (12.9-inch) (4th generation)", 264, False, False, True, False, False, True, False, False, True, 2, False, 13, True), Device("iPadPro11Inch3", "Device is an [iPad Pro 11-inch (3rd generation)](https://support.apple.com/kb/SP843)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP843/ipad-pro-11_2x.png", ["iPad13,4", "iPad13,5", "iPad13,6", "iPad13,7"], 11.0, (139, 199), "iPad Pro (11-inch) (3rd generation)", "iPad Pro (11-inch) (3rd generation)", 264, False, False, True, False, False, True, False, False, True, 2, False, 13, True), Device("iPadPro12Inch5", "Device is an [iPad Pro 12.9-inch (5th generation)](https://support.apple.com/kb/SP844)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP844/ipad-pro-12-9_2x.png", ["iPad13,8", "iPad13,9", "iPad13,10", "iPad13,11"], 12.9, (512, 683), "iPad Pro (12.9-inch) (5th generation)", "iPad Pro (12.9-inch) (5th generation)", 264, False, False, True, False, False, True, False, False, True, 2, False, 13, True), + Device("iPadPro11Inch4", "Device is an [iPad Pro 11-inch (4th generation)](https://support.apple.com/kb/SP882)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP843/TODO.png", ["iPad14,3", "iPad14,4"], 11.0, (139, 199), "iPad Pro (11-inch) (4th generation)", "iPad Pro (11-inch) (4th generation)", 264, False, False, True, False, False, True, False, False, True, 2, False, 13, True), + Device("iPadPro12Inch6", "Device is an [iPad Pro 12.9-inch (6th generation)](https://support.apple.com/kb/SP883)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP844/TODO.png", ["iPad14,5", "iPad14,6"], 12.9, (512, 683), "iPad Pro (12.9-inch) (6th generation)", "iPad Pro (12.9-inch) (6th generation)", 264, False, False, True, False, False, True, False, False, True, 2, False, 13, True), ] homePods = [ @@ -234,31 +237,31 @@ watches = [ Device( "appleWatchSeries8_41mm", - "Device is an [Apple Watch Series 8](https://support.apple.com/kb/TODO)", + "Device is an [Apple Watch Series 8](https://support.apple.com/kb/SP878)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP860/TODO", ["Watch6,14", "Watch6,16"], 1.8, (4,5), "Apple Watch Series 8 41mm", "Apple Watch Series 8 41mm", 326, False, False, False, False, False, False, False, True, False, 0, False, 0, False), Device( "appleWatchSeries8_45mm", - "Device is an [Apple Watch Series 8](https://support.apple.com/kb/TODO)", + "Device is an [Apple Watch Series 8](https://support.apple.com/kb/SP878)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP860/TODO", ["Watch6,15", "Watch6,17"], 2.0, (4,5), "Apple Watch Series 8 45mm", "Apple Watch Series 8 45mm", 326, False, False, False, False, False, False, False, True, False, 0, False, 0, False), Device( "appleWatchSE2_40mm", - "Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/TODO)", + "Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/SP877)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP827/TODO", ["Watch6,10", "Watch6,12"], 1.8, (4,5), "Apple Watch SE (2nd generation) 40mm", "Apple Watch SE (2nd generation) 40mm", 326, False, False, False, False, False, False, False, True, False, 0, False, 0, False), Device( "appleWatchSE2_44mm", - "Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/TODO)", + "Device is an [Apple Watch SE (2nd generation)](https://support.apple.com/kb/SP877)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP827/TODO", ["Watch6,11", "Watch6,13"], 2.0, (4,5), "Apple Watch SE (2nd generation) 44mm", "Apple Watch SE (2nd generation) 44mm", 326, False, False, False, False, False, False, False, True, False, 0, False, 0, False), Device( "appleWatchUltra", - "Device is an [Apple Watch Ultra](https://support.apple.com/kb/TODO)", + "Device is an [Apple Watch Ultra](https://support.apple.com/kb/SP879)", "https://support.apple.com/library/APPLE/APPLECARE_ALLGEOS/SP827/TODO", ["Watch6,18"], 2.2, (4,5), "Apple Watch Ultra", "Apple Watch Ultra", 338, False, False, False, False, False, False, False, True, False, 0, False, 0, False), diff --git a/Tests/Tests.swift b/Tests/Tests.swift index 9b247f5..4744391 100644 --- a/Tests/Tests.swift +++ b/Tests/Tests.swift @@ -404,7 +404,9 @@ class DeviceKitTests: XCTestCase { .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, - .iPadPro12Inch5 + .iPadPro12Inch5, + .iPadPro11Inch4, + .iPadPro12Inch6 ]) } @@ -495,7 +497,9 @@ class DeviceKitTests: XCTestCase { .iPadPro11Inch2, .iPadPro12Inch4, .iPadPro11Inch3, - .iPadPro12Inch5 + .iPadPro12Inch5, + .iPadPro11Inch4, + .iPadPro12Inch6 ] for device in Device.allRealDevices { XCTAssertTrue(device.hasLidarSensor == device.isOneOf(lidarDevices), "testLidarValues failed for \(device.description)")