iOS 9.3 was released on march 21, 2016, and according to its download page, this version has two build numbers associated :
Builds
13E233
13E234
I don't remember of any previous iOS version with multiple builds numbers, so it raised some questions :
First, why is there two build numbers ? The builds were made successively according to the difference between them, so maybe there are one iPhone and one iPad build.
What is the difference between these builds ?
How can I detect which build i'm using ?
If you look at the name of each platform's ipsw file, you will see which binaries were build 13E233 or 13E234:
iPhone 6s
iPhone8,1_9.3_13E234_Restore.ipsw
iPhone 6s Plus
iPhone8,2_9.3_13E234_Restore.ipsw
iPhone SE
iPhone8,4_9.3_13E233_Restore.ipsw
iPhone 6
iPhone7,2_9.3_13E233_Restore.ipsw
iPhone 6 Plus
iPhone7,1_9.3_13E233_Restore.ipsw
iPhone 5s (CDMA)
iPhone6,2_9.3_13E233_Restore.ipsw
iPhone 5s (GSM)
iPhone6,1_9.3_13E233_Restore.ipsw
iPhone 5 (CDMA)
iPhone5,2_9.3_13E233_Restore.ipsw
iPhone 5 (GSM)
iPhone5,1_9.3_13E233_Restore.ipsw
iPhone 5c (CDMA)
iPhone5,4_9.3_13E233_Restore.ipsw
iPhone 5c (GSM)
iPhone5,3_9.3_13E233_Restore.ipsw
iPhone 4S
iPhone4,1_9.3_13E233_Restore.ipsw
iPad Pro 12"
iPad6,7_9.3_13E233_Restore.ipsw
iPad Pro 12" (LTE Cellular)
iPad6,8_9.3_13E233_Restore.ipsw
iPad Pro 9" model
iPad6,3_9.3_13E234_Restore.ipsw
iPad Pro 9" model (LTE Cellular)
iPad6,4_9.3_13E234_Restore.ipsw
iPad Air 2
iPad5,3_9.3_13E233_Restore.ipsw
iPad Air 2 (LTE Cellular)
iPad5,4_9.3_13E233_Restore.ipsw
iPad Air (5th generation Cellular)
iPad4,2_9.3_13E233_Restore.ipsw
iPad Air (5th generation)
iPad4,1_9.3_13E233_Restore.ipsw
iPad Air (5th generation China)
iPad4,3_9.3_13E233_Restore.ipsw
iPad (4th generation CDMA)
iPad3,6_9.3_13E233_Restore.ipsw
iPad (4th generation GSM)
iPad3,5_9.3_13E233_Restore.ipsw
iPad (4th generation)
iPad3,4_9.3_13E233_Restore.ipsw
iPad 3 Wi-Fi (3rd generation)
iPad3,1_9.3_13E233_Restore.ipsw
iPad 3 Wi-Fi + Cellular (GSM)
iPad3,3_9.3_13E233_Restore.ipsw
iPad 3 Wi-Fi + Cellular (CDMA)
iPad3,2_9.3_13E233_Restore.ipsw
iPad 2 Wi-Fi (Rev A)
iPad2,4_9.3_13E233_Restore.ipsw
iPad 2 Wi-Fi
iPad2,1_9.3_13E233_Restore.ipsw
iPad 2 Wi-Fi + 3G (GSM)
iPad2,2_9.3_13E233_Restore.ipsw
iPad 2 Wi-Fi + 3G (CDMA)
iPad2,3_9.3_13E233_Restore.ipsw
iPad Mini (CDMA)
iPad2,7_9.3_13E233_Restore.ipsw
iPad Mini (GSM)
iPad2,6_9.3_13E233_Restore.ipsw
iPad Mini
iPad2,5_9.3_13E233_Restore.ipsw
iPad Mini 2 (Cellular)
iPad4,5_9.3_13E233_Restore.ipsw
iPad Mini 2
iPad4,4_9.3_13E233_Restore.ipsw
iPad Mini 2 (China)
iPad4,6_9.3_13E233_Restore.ipsw
iPad Mini 3 (China)
iPad4,9_9.3_13E233_Restore.ipsw
iPad Mini 3
iPad4,7_9.3_13E233_Restore.ipsw
iPad Mini 3 (Cellular)
iPad4,8_9.3_13E233_Restore.ipsw
iPad Mini 4
iPad5,1_9.3_13E233_Restore.ipsw
iPad Mini 4 (Cellular)
iPad5,2_9.3_13E233_Restore.ipsw
iPod touch (5th-generation)
iPod5,1_9.3_13E233_Restore.ipsw
iPod touch (6th-generation)
iPod7,1_9.3_13E233_Restore.ipsw
The binaries that were build 13E234 were for the iPhone 6s, 6s Plus, and iPad Pro 9" devices.
Related
When testing a React Native app with react-native run-ios it opens an iPhone simulator.
You can change the virtual device to an iPad in the Simulator options, but the React Native app does not appear in the list of installed apps.
Is there a way to open an iPad simulator from the CLI?
--simulator flag is what you are looking for
For example react-native run-ios --simulator 'iPad 2' will run the app on iPad 2 simulator.
As a side node, if you need to get list of available simulators with their names use xcrun simctl list devices
Get device list with this command
xcrun simctl list devices
Console
== Devices ==
-- iOS 13.5 --
iPhone 6s (9981E5A5-48A8-4B48-B203-1C6E73243E83) (Shutdown)
iPhone 8 (FC540A6C-F374-4113-9E71-1291790C8C4C) (Shutting Down)
iPhone 8 Plus (CAC37462-D873-4EBB-9D71-7C6D0C915C12) (Shutdown)
iPhone 11 (347EFE28-9B41-4C1A-A4C3-D99B49300D8B) (Shutting Down)
iPhone 11 Pro (5AE964DC-201C-48C9-BFB5-4506E3A0018F) (Shutdown)
iPhone 11 Pro Max (48EE985A-39A6-426C-88A4-AA1E4AFA0133) (Shutdown)
iPhone SE (2nd generation) (48B78183-AFD7-4832-A80E-AF70844222BA) (Shutdown)
iPad Pro (9.7-inch) (2DEF27C4-6A18-4477-AC7F-FB31CCCB3960) (Shutdown)
iPad (7th generation) (36A4AF6B-1232-4BCB-B74F-226E025225E4) (Shutdown)
iPad Pro (11-inch) (2nd generation) (79391BD7-0E55-44C8-B1F9-AF92A1D57274) (Shutdown)
iPad Pro (12.9-inch) (4th generation) (ED90A31F-6B20-4A6B-9EE9-CF22C01E8793) (Shutdown)
iPad Air (3rd generation) (41AD1CF7-CB0D-4F18-AB1E-6F8B6261AD33) (Shutdown)
-- tvOS 13.4 --
Apple TV 4K (51925935-97F4-4242-902F-041F34A66B82) (Shutdown)
-- watchOS 6.2 --
Apple Watch Series 5 - 40mm (7C50F2E9-A52B-4E0D-8B81-A811FE995502) (Shutdown)
Apple Watch Series 5 - 44mm (F7D8C256-DC9F-4FDC-8E65-63275C222B87) (Shutdown)
Select Simulator string without ID here is example.
iPad Pro (12.9-inch) (4th generation)
Final command
iPhone
• iPhone 6s
react-native run-ios --simulator="iPhone 6s"
• iPhone 8
react-native run-ios --simulator="iPhone 8"
• iPhone 8 Plus
react-native run-ios --simulator="iPhone 8 Plus"
• iPhone SE (2nd generation)
react-native run-ios --simulator="iPhone SE (2nd generation)"
iPad
• iPad Pro (12.9-inch) 4th generation
react-native run-ios --simulator="iPad Pro (12.9-inch) (4th generation)"
• iPad Air (3rd generation)
react-native run-ios --simulator="iPad Air (3rd generation)"
• iPad (7th generation)
react-native run-ios --simulator="iPad (7th generation)"
I've checked whether motion&fitness is enabled in my app. I've checked the below code to check this.
if([CMMotionActivityManager isActivityAvailable])
{
}
This returns FALSE when motion&fitness is disabled in settings. But the motion&fitness option is not there in iPhone 5 and lower versions. So I want to know whether the device model is iPhone 5s or higher. Is there any way to check this?
If you want to check motion then use
https://developer.apple.com/library/prerelease/ios/documentation/CoreMotion/Reference/CMSensorRecorder_class/index.html#//apple_ref/occ/clm/CMSensorRecorder/isAuthorizedForRecording
iOS 9 and above, CMSensorRecorder class, In that they introduce method to check if your app is authorized for Motion & Fitness:
If you are using Swift the use following
class `func isAuthorizedForRecording() -> Bool
if Objective C then
+ (BOOL)isAuthorizedForRecording
if you just want to check device model then use following method
[[UIDevice currentDevice] platformType] // ex: UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // ex: #"iPhone 4G"
to getting complete list of model
#import <sys/utsname.h> // import it in your header or implementation file.
NSString* deviceName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
after printing device name you will get one of following output
#"i386" on 32-bit Simulator
#"x86_64" on 64-bit Simulator
#"iPod1,1" on iPod Touch
#"iPod2,1" on iPod Touch Second Generation
#"iPod3,1" on iPod Touch Third Generation
#"iPod4,1" on iPod Touch Fourth Generation
#"iPod7,1" on iPod Touch 6th Generation
#"iPhone1,1" on iPhone
#"iPhone1,2" on iPhone 3G
#"iPhone2,1" on iPhone 3GS
#"iPad1,1" on iPad
#"iPad2,1" on iPad 2
#"iPad3,1" on 3rd Generation iPad
#"iPhone3,1" on iPhone 4 (GSM)
#"iPhone3,3" on iPhone 4 (CDMA/Verizon/Sprint)
#"iPhone4,1" on iPhone 4S
#"iPhone5,1" on iPhone 5 (model A1428, AT&T/Canada)
#"iPhone5,2" on iPhone 5 (model A1429, everything else)
#"iPad3,4" on 4th Generation iPad
#"iPad2,5" on iPad Mini
#"iPhone5,3" on iPhone 5c (model A1456, A1532 | GSM)
#"iPhone5,4" on iPhone 5c (model A1507, A1516, A1526 (China), A1529 | Global)
#"iPhone6,1" on iPhone 5s (model A1433, A1533 | GSM)
#"iPhone6,2" on iPhone 5s (model A1457, A1518, A1528 (China), A1530 | Global)
#"iPad4,1" on 5th Generation iPad (iPad Air) - Wifi
#"iPad4,2" on 5th Generation iPad (iPad Air) - Cellular
#"iPad4,4" on 2nd Generation iPad Mini - Wifi
#"iPad4,5" on 2nd Generation iPad Mini - Cellular
#"iPad4,7" on 3rd Generation iPad Mini - Wifi (model A1599)
#"iPhone7,1" on iPhone 6 Plus
#"iPhone7,2" on iPhone 6
#"iPhone8,1" on iPhone 6S
#"iPhone8,2" on iPhone 6S Plus
#"iPhone8,4" on iPhone SE
If you want in Swift please use below link
iOS: How to determine the current iPhone/device model in Swift?
I have just updated a new version of my app and its not supporting iPhone 4s & 5.
From the App Store:
Compatibility: Requires iOS 8.0 or later. Compatible with iPhone 5s, iPhone 6, iPhone 6 Plus, iPhone 6s, iPhone 6s Plus, iPad Air, iPad
Air Wi-Fi + Cellular, iPad mini 2, iPad mini 2 Wi-Fi + Cellular, iPad
Air 2, iPad Air 2 Wi-Fi + Cellular, iPad mini 3, iPad mini 3 Wi-Fi +
Cellular, iPad mini 4, iPad mini 4 Wi-Fi + Cellular, iPad Pro, iPad
Pro Wi-Fi + Cellular, and iPod touch (6th generation).
My older version did support all iPhone, iPad and iPod touch.
In Build settings the valid architectures are (for both debug and release): arm64, armv7 and armv7s
Under required device capabilities I had armv7. My simulators show iPhone 4 & 5 and it runs great.
How do I fix this?
Thanks in advance
So I found the answer to my question.
When I archived my app I had to select "iOS Device" and not archiving for a device that's plugged in at the time.
Source: https://stackoverflow.com/a/24149087/2053537
Check your info.plist file for items listed under "require device capabilities" It's possible that something has crept into this array that requires iPhone 5S+ to run.
Build Settings -> Build Active Architecture Only (Release) = No
I'm using the below method:
#import <sys/utsname.h> // import it in your header or implementation file.
NSString* deviceName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
The result is:
#"i386" on 32-bit Simulator
#"x86_64" on 64-bit Simulator
#"iPod1,1" on iPod Touch
#"iPod2,1" on iPod Touch Second Generation
#"iPod3,1" on iPod Touch Third Generation
#"iPod4,1" on iPod Touch Fourth Generation
#"iPhone1,1" on iPhone
#"iPhone1,2" on iPhone 3G
#"iPhone2,1" on iPhone 3GS
#"iPad1,1" on iPad
#"iPad2,1" on iPad 2
#"iPad3,1" on 3rd Generation iPad
#"iPhone3,1" on iPhone 4
#"iPhone4,1" on iPhone 4S
#"iPhone5,1" on iPhone 5 (model A1428, AT&T/Canada)
#"iPhone5,2" on iPhone 5 (model A1429, everything else)
#"iPad3,4" on 4th Generation iPad
#"iPad2,5" on iPad Mini
#"iPhone5,3" on iPhone 5c (model A1456, A1532 | GSM)
#"iPhone5,4" on iPhone 5c (model A1507, A1516, A1526 (China), A1529 | Global)
#"iPhone6,1" on iPhone 5s (model A1433, A1533 | GSM)
#"iPhone6,2" on iPhone 5s (model A1457, A1518, A1528 (China), A1530 | Global)
#"iPad4,1" on 5th Generation iPad (iPad Air) - Wifi
#"iPad4,2" on 5th Generation iPad (iPad Air) - Cellular
#"iPad4,4" on 2nd Generation iPad Mini - Wifi
#"iPad4,5" on 2nd Generation iPad Mini - Cellular
#"iPhone7,1" on iPhone 6 Plus
#"iPhone7,2" on iPhone 6
I got x86_64 always. But I wish to get iphone4 when I select the 4s simulator iPhone6 when I select the iPhone 6 simulator.
Is there any way to achieve this?
I feel a little dummy to ask such a question but I am not sure. Can someone tell me to whichreal device corresponds exactly each device in the simulator? I have seen here that all the devices available in the simulator are the following ones, but to what do they correspond?
iPhone Retina (3.5-inch) :iPhone 4 and 4s?
iPhone Retina (4-inch) : iPhone 5?
iPhone Retina (4-inch 64-bit) : iPhone 5s?
iPad
iPad Retina : iPad 1, 2 or 3?
iPad Retina (64-bit)
All of the iPhone entries you have are correct.
5th gen iPod touch would be under iPhone Retina 4".
4th gen iPod touch would be under iPhone Retina 3.5".
The 3rd gen and earlier would be under iPhone Non-retina 3.5"
The iPad would be:
iPad - iPad 1, iPad 2, 1st gen Mini
iPad Retina - iPad 3, iPad 4,
iPad Retina 64-bit - iPad Air, 2nd gen Mini
I find the Wikipedia page List of iOS devices to be very helpful.