iOS deployment target - iphone

IF I set the deployment target for my app to iOS 4.2 when submitting to app store, will users with iOS 3.2 (or anything below 4.2) be able to download and install the app and the app won't run or will they not be able to download and install the app itself?
Thanks.

They won't be able to install and run the app (until they upgrade the OS on their device to that of the Deployment Target or above). But they might be able to buy and download the app using iTunes on their Mac or PC.

No, that's exactly what deployment version is about.
Best practice is to build against latest SDK version, with deployment version as low as possible. But that requires the discipline to do runtime checks and fallback implementations whenever using a API that wasn't there yet in the deployment version.

Related

when deploying an iOS app for an older SDK, how to test it?

I have written an app and its base SDK is set to 4.2, and at the moment it is in the app store with a deployment target set to 4.2, I'm sure you'll agree this is a bad idea because I am alienating all potential users who do not have the latest version of iOS installed.
So my question is, when deploying for an older version of iOS, how do I make sure it will run, i.e. how do I check whether I've used any modern API's that are not present in the deployment target iOS version?
The only sure-fire way to make sure your app will run is to test on a device running the older OS version you specify.
Even old versions of the iPhone Simulator (if you can find such) will not do a good job of checking for compatibility.
Most developers who want to support customers on iPhoneOS 3.x have access to an old test device, such as an used iPod Touch (hand-me-down, or purchased on eBay, etc.) running the OS version set in the app's Deployment Target. Otherwise, the developer is just guessing/gambling.
Check the documentation of the libraries or methods you are using. Test on the actually device installed with the version of the OS you wish to support.
Change the Base sdk version to 4.2, target sdk to 3.0 or any.
test the app in simulator as the target as simulator 3.0 r any.
But, when compared to 3.2 , 4.2 version has many new functionalities that do not work on 3.2 version devices.
So take respective steps to do for 3.2 r for 4.2.
The better idea is to find the version of the device , then give the accessibility based on the version.
Thanks,
Bharath

iOS4 Compatibility for iPhone App

I want to upgrade my iPhone app from iOS3 to iOS4.
Once I upgrade to iOS4, which versions of previous iOS does the app support?
For eg. will it support iOS3, iOS2, etc.
Thanks!
It will depend on what features you implement. If you implement a feature that is specific to iOS 4 (like in-app sms), then that feature will not run on previous versions. In some cases this may cause you app to not function on old versions. Make sure the feature is available at runtime before you try to use it.
In your target's build settings there is 'Base SDK' and 'Deployment Target'. 'Base SDK' is the newest iOS that you want to compile for, while 'Deployment Target' is the oldest iOS that you want your app to function on.
You can set the Deployment Target of your application to the base version of the SDK that you want your app to be compatible with. Once set, your app will be compatible with all versions of the SDK from the deployment target through the current version.
The iOS 4 SDK can build an app that'll run on iOS 3.0—by setting the project's Deployment Target to same—but no earlier. On the other hand, just about nobody is still running 2.x, so that limitation isn't likely to be a problem.

iphone deployment version requirements

Is there a specific version that the deployment requirements need to be set to in xcode to submit an app to the app store? I keep getting a "not accepting this SDK" error when I try to upload the binary but my target deployment OSs are all recent (3.0, 4.0).
Make sure your Base SDK is 4.0. Deployment Target can be whatever minimum OS your app requires.
Make sure you have installed an official release of the SDK. Apple does not accept submissions from pre-release SDK's unless expressly stated (e.g. 4.0 GM)

If I install SDK 4.0 of the iPhone OS will I still be able to create a non 4.0 iPad app?

If I install SDK 4.0 of the iPhone OS will I still be able to create a non 4.0 iPad app?
I would ideally like to submit a iPad app in the next month but am also hoping to develop a 4.0 iPhone app is it possible to use the 4.0 SDK to create 3.0 iPad apps or am I going to need to computers?
You do not need two computers. You will have to install the two SDKs in two different directories. So far, it's always been the way that beta releases of the SDK were not meant (and not allowed) to generate apps for distribution.
But in the installer, just select another new directory and then install the second SDK there. That's all there is to it.
So far Apple has always provided a way to create Applications compatible to older versions of iPhone/iPad OS. The SDK installer will install the SDK in a version specific subdirectory. Additionally there is a "Current" directory hardlinking against the newest version. The old versions will still be available.
XCode will let you select an iPhone OS Version in the build settings and automatically figure out the correct SDK version/directory, so there's no need to fumble with paths or include directories.
Build against the latest SDK and set your "deployment target" to a lower version.
If you use new API calls (available in the SDK but not in the deployment version) check at runtime before calling them.

Can a user install iphone application developed using 3.1.3 in his iphone 3.0?

Can a user install my application from iTunesStore if he is having iPhone OS 3.0 or having lower version of iPhone OS and I have developed my application using iPhone SDK 3.1.3...
Can anyone help me with this...
Thanx in advance...
In you projects settings, use a build setting named "iPhone OS Deployment Target" to specify your minimal iPhone OS version.
To do that, double click the blue project icon (at the top of the project’s "Groups and Files" table), click the "Build" tab and find the setting in the "Deployment" settings section.
To use features from a later iPhone OS, see this question.
If you compile your application to target iPhone OS 3.1.3 then it will not run on 3.0 - instead the user will get a message telling them to update their OS when they try to install.
However, there's a good chance that you will be able to compile your app to target 3.0 as long as you're not using any specific 3.1+ and newer features. To do so, just change the Active SDK you target in Xcode before you compile. Then your app will run on both 3.0 and 3.1.3
If you set your Target SDk in Xcode to 3.1.3, you may be using features of the SDK not found on an iPhone running a lower OS. However, you can test for those features in your program and take alternative measures if the user does not have those features/frameworks available. There is nothing that will prevent your app from running on older iPhone OSes, other than the fact that using new features will cause the app to fail.
On the other hand, you use the Deployment SDk value of XCode to limit which iPhone OSes can actually run your app. This way you can limit the app to be available to only iPhones with later OS and not the earlier ones. The Apple iTunes App Store will use the Deployment SDk value to tell the user who is purchasing, what the minimum system requirement is too.