If my build targets iOS 5.0, what happens when older OS versions try to download/run it? - iphone

I recently submitted an app to the app store. My iOS version target is 5.0.
What will happen when users with older iOS versions try download my app?

If users download it from iTunes on their computer, it will download but they won't be able to sync it to their iDevices. But if they try to download it directly from their iDevice, the device will pop up an alert, saying that they won't be able to download it.
But, most app right now has lower iOS version target for broader audience.

When users of an older iOS try to buy/install it they will get an alert that says they need iOS5 to run this app....and not be able to purchase

If you want to actually test this, you can change the target build for your app and run it in a simulator/test phone to see what happens.
If there is anything that is in your iPhone app that is iOS 5 only, there should be some problems. ARC and weak references are compatible with iOS 4.x, but not iOS 3.x.
EDIT: Make sure that the minimum OS required is not also set to iOS 5, because then it will not run on any lower OS version.

Related

Installing older iOS for device testing

It used to be simpler to test versions of the iOS that were older than the currently shipping iOS. I can't seem to find a way to do it now that Apple calls home when trying to restore a device. If the device is eligible for a more recent iOS, iTunes and XCode 4.5 force you to upgrade the iOS.
In my case, I have an iPhone 4 that I want to test with iOS 5.1.1. I have the .ipsw file that actually was used on this device. iTunes generates an "not eligible" error when I try and force the restore from this .ipsw. XCode 4.5 does also. My understanding is that Apple is no longer signing 5.1.1 and my device is eligible for iOS 6, the reason for the error.
In the past, I had enough devices laying around that I shelved and used for testing. I don't have that luxury now.
Two questions:
1. Is there any way to install an older iOS on device that is eligible for a newer iOS?
2. How are you testing on older iOS versions?
I welcome suggestions
No, you cannot install an older iOS unless you are jailbroken and your SHSH blobs were stored with Cydia or TinyUmbrella.
Most people use the simulator, or older devices.
https://developer.apple.com/downloads/index.action
can be used to find old xcodes and ios SDKs.

ios app build for version 5.0.1uploaded to app store can be run on ios 5.1?

I did build app for ios 5.0.1 using xcode 4.2 and uploaded it on apple store. They rejected my app due to crash issue occurs when they install and run on ios 5.1.
Could you please let me know if we build an app for ios 5.0.1 will not be run on ios5.1 iphone device.
What will be the way so I can approved my app at apple store that is build for ios 5.0.1.
But two days ago they approved another app that is build for ios 5.0.1.
Should I query to apple store.
Please reply me thank a lot for time frame given to my ques.
The app can run in iOS 5.1, the thing is that you dont know how that app is going to work on 5.1, so probably you are using something that is allowed in 5.0.1, and in 5.1 is crashing.
Your only option now, is to download the 5.1 on your xCode and check what is going on.
Yes, Apple will approve apps that are built using the 5.0 SDK, though probably not anything earlier. They pretty much always test using the latest version of the OS so you should absolutely test with it before submitting. I'd venture that there's no reason not to develop with the latest too.
The changes between 5.0 and 5.1 are not huge so, chances are, you do have a bug. Apple normally send crash reports when they reject for these reasons.

Testing on iOS 3.1 simulator

iOS project. Base SDK 4.2, deployment target 3.0. A customer is complaining about an issue on iOS 3.1 (he has an old device).
I tried installing Xcode 3.2.3 - the oldest there is for download. It does not offer iOS 3.1 as a test target. Does anyone know how can I enable older versions of iOS on the simulator?
The box also has Xcode 4 (in a different folder). Could it be the case that they're sharing the iOS simulator, and the backwards-incompatible one from Xcode 4 is getting in the way?
There is no substitute for testing on a real device.
I've had a problem with my iPod touch (3rd gen, ios 5.0) crashing in one app. Every day. The dev won't buy, beg, borrow or steal a real iPod touch to test it on so he can fix it. As a user this is extremely frustrating.
EDIT:
The final versions of Xcode with the iPhone SDK, as it was called then, are not available from Apple's download page, but the direct links still work.
The direct links can be found at:
http://chris-fletcher.com/2010/08/28/howto-install-iphone-sdk-2-0-3-1-for-xcode-3-2/
If you use the latest Xcode, you can install device debugging support via the Downloads->Components section, a la: http://cl.ly/3U1V1G3W2p2E1G29342e
http://iphonesdkdev.blogspot.com/2010/04/old-versions-of-iphone-sdk.html
Some of the links are dead though. Apple is removing those old files little by little. Get them while supplies last.

Can I prevent users with a too-old OS version from downloading my app?

I currently have an app in the app store that works for iPhone users running iOS version 3.0 or newer. My next version of the app is going to use ARC, so it will only work for users running iOS version 4.0 or newer.
According to this answer, the users will be able to download the newer version, but it just won't run when they try to run it.
Is there any way to prevent users who can't run the app from even downloading it from the AppStore?
I haven't tested this recently, but in February 2011, and iOS 4.x, I had users who couldn't download my app as there device wasn't running the required version of iOS.
They received a nice explanation message on their device, courtesy of the App Store app, when trying to download the app directly to their device.
I'd be very surprised if this wasn't still the case.
So, set the deployment target in your target build settings, and let the App Store / iTunes take care of who can install it.
That was for new installs, and it be different for updates (rather than new installs) but again I'd be surprised if this wasn't handled by Apple for the sake of a better user experience.
UPDATE
I dug out my old iPhone 3 which reached the end of the road at 4.2.1 and resynced it with iTunes - the latest apps that require 4.3 etc are ignored, and are not overwritten with incompatible versions, as I would expect.
I also tried to update my own app (I'm a developer), requiring 4.3 and above, from the store via the device itself, and got a polite pop-up alert saying the app requires iOS 4.3 and above, again just as I'd expect.
The app was previously compatible with < 4.3, and somewhere along the line I bumped up the minimum iOS version requirement, so it is definitely possible.
So, you should just set your updated app's 'deployment target' version appropriately, and it will only be updated on compatible devices.
No. A new higher minimum Deployment target will prevent a user from installing an app on a device with a lower OS version, but will not prevent them from downloading the app using iTunes on their Mac or PC, even though they can't install the update once downloaded.

Build an iOS4 app that will also deploy on iPhone OS 3.x devices

I've got a couple of applications in the App Store at the moment which I've had ready after the release of iOS4. If I try and download one of these in the App store on a 3.x device, it will tell me I need to upgrade. Is there a way to make my application not do this, as I don't think I am using any API calls specific to iOS4.
I originally thought that this could not be done but I just now installed 'Plants vs Zombies' and 'Angry Birds' on my iPod Touch (running 3.1.3) so it must be possible as I'm sure these have released updates recently, and being in the top5 games, I would have thought they were developed using the iOS4 SDK. I am hoping it is just one value somewhere but if anyone could let me know how to do it that would be awesome :).
Easy. Open up your project info.
Find this line "iPhone OS Deployment Target" select 3.0
You can still develop with the latest xcode and current 4.0 SDK, but if you dont make any 4.0 calls this should allow you to weak link to 3.0+ and allow apps to work.
You really should test this on a 3.0+ device to see if it works though. You can still set your Base SDK to 3.2 or 4.0.