setting deployment target for iPhone app - iphone

i tested my application by setting deployment target to 3.0 on iPhone device with 4.3.2 version and my iPhone app was running smoothly so my question is that do i still need to test my app on iPhone device with lower version like 3.0 before submitting it to app store.
Thanks in advance for your any help.

Yes: if you call any API that was introduced after iOS 3.0, it will crash. The only way to be sure is to test on an actual 3.0 device.

Yes you definitely should test your application on a device with iOS3 to ensure that everything is working.
Setting the deployment target to iOS3 only ensure linking. Do not forget that iOS3 has not only different APIs, but also differents behaviors for same components, even with same code.
And behaviors can even differs from Simulator to Device!

Related

Restrict iPhone/iPad App to iPhone 4 and higher only?

I am looking to make my app so that it only works on iPhone4 or higher, and not the 3GS.
How can I do this? Is it done via setting the Architectures setting to Standard Armv7/Armv7s
And Valid architectures to Armv7 & Armv7s?
Or do I need to look at deployment target? And set it to a certain iOS version?
Thanks in advance!
Deployment target is only going to allow you to target a specific iOS version and a 3GS can run iOS6. If you're truly looking to restrict older devices from running your app you're likely going to have to do some checks for device model within the AppDelegate and restrict functionality.
A caveat to this is that your app will likely not be permitted in the App Store. What feature(s) are you trying to leverage that a 3GS doesn't support?
Unfortunately you can target the iOS version not the device! You can try to build for iOS 6.0+ and it'll isolate some older devices like iPad1. I'm not sure what iOS version will go up to on 3GS, it'll be phased out soon, though with upcoming iOS releases. I know iOS 6 will work on 3GS but iPad1 won't
You can detect the device, and restrict it via code, but through Apple and iTunes, there is no device centric restrictions, only OS.

how to set minimum os required in iphone

I have to check whether my app is compatible with iOS 4.0 or not.
I have tried looking out for certain forums but all I can see is to change the iOS deployment target.
I have done doing so also but still my app is running fine. I have changed my deployment target to 3.0 but still it works fine. Since I have used Gesture recognition which was introduced later. It must crash my app (but still it is working fine).
So I want to know Is there any other way out to check my compatability.
Or is it the problem because I am running it on Simulator rather than on device(my device has iOS version 4.2).
Any comments or answers are really appreciated.
Yes thats the reason that your app is not crashing because you are running it over simulator which has the ios version 4.2.Because now your ios version is updated on the simulator so you are able to test the Gesture Recognition over that.You are correct .
If you have an iPhone that is certified for distribution you can just run it on your device and test your firmware versions from there. Hope that helps...

Exclude devices that do not support multitasking

I'm making an app that requires multitasking. Is there a way to compile an iPhone/iPad (universal) app so it excludes devices that do not support multitasking. I know iPhone 1, iPhone 3G and iTouch 1-2 do not support multitasking but I haven't found a way to build my app so it prevents people to download the app from the app store if they have one of these devices.
I was thinking to simply set the "Architectures" setting to armv7 on Xcode but I'm not sure if this will work and if it will have any other consequences.
Any help will be appreciated. Thanks!
You can set the minimum API level supported to be iOS 4.3. This version only runs on devices that support multi-tasking.
You should check in your application for multitasking support and fall back to a non multitasking alternative if it is not available.
Suppose you change the supported architectures to include ARM7 upwards. If you do, you need to find out what happens if somebody attempts to deploy such an application to an incompatible device. If iTunes stops them from doing it, that's fine and it's the right answer. But if iTunes lets them do deploy the app and it crashes when they try to run it, it would be far better to do the test for multitasking support and display an alert telling the user why your app won't work.
Go to targets section of your project--> navigate to Build Tab-->Go to Deployment tab & select IOS deployment target as 4.2. It will not run on IOS versions earlier than this.

App Store bug on certain iOS/Hardware and not others

I am about to submit an iPhone app to Apple for the first time. I was wondering: if they find a bug only in iOS 3.0 (for example) would they allow you to release only for iOS 4.0 (and above) even though you targeted 3.0 and above?
Likewise, if you have targeted the original iPhone device, but there is a bug found when your app is run on it, but not on any of the other devices, will they allow you to release for those?
Or is the answer to the above "NO. You have to debug, resubmit and wait yet another month".
Thanks!
No; if you set your deployment target to 3.0 and it doesn't work on 3.0 and above, then your app should and probably will be rejected. Your only option is to either thoroughly test on older OS versions, or raise your app's deployment target to a version which you're confident your app will work on.
You can change the deployment target to any version you want as minimal requirement... so if your app requires 4.0 or 4.2 you can set this and it won't have to run on old devices.
On the other side your app has to run without crashes on actual 4.3 devices.. you can't submit an application that only runs on old devices.
If you change the deployment target you have to recompile and resubmit.

iPhone application compatibility

Please how can I make sure before developing my iPhone app that it will be compatible with iPhone4, 3GS, iPod touch and 3G?
You need to create the app keeping in mind all the features available in lowest version of iPhone you need it to be compatible to.
For Example:
Suppose you want it to be compatible to iPhone 2G then you cannot use in-app SMS feature as iPhone 2G cannot be upgraded to iOS 4.0 or higher.
In-app SMS feature is only available in iOS 4.0 and higher versions.
Hope this example gave you a proper idea.
Once the app is made, you should test your app throughly on different devices i.e. iPhone 3G, iPhone 3GS and iPhone 4 and iPod Touch.
Unless you test it on device, you cannot be sure because sometimes some of the things work in simulator but crashes on device.
So better to test on device.
Hope this helps you.
If it's the SDK you are talking about, you might want to make sure it runs on iOS 3.X versions. See here for more details.
If it's the hardware you are talking about, you will need to test your app on separate pieces of hardware to make sure that they all run.
The settings in XCode that you make regarding which version of iOS your app will be compatible with is the iOS deployment target and the Base SDK. The Base SDK is the default version you are building against (this should be set to the most recent SDK which is currently 4.3). The iOS deployment target is the earliest version you would like your app to be available for (currently goes back to 3.0 on XCode 4).
These settings are in the settings for your target.
As for if your app will actually work on all of these devices depends on how you program for them. In other words, if you are using new APIs, they obviously will not work on versions that did not implement them.
Hope this helps.
Jamie
You can't be sure without testing. (and even with testing, some say...)
There are potential "gothcha's" in the iOS API documentation, in the Simulator handling of those APIs, and particularly in device performance, which you may not realize or be able to guess until you actually try an app out on all the device models and iOS versions which you plan to support.
Even some simple apps with no undocumented API use and no compiler or analyzer warnings, et.al., have been know to "break" after a new OS version is released.
You can "claim" an app is compatible by appropriate setting of the Deployment Target in the Build settings, lack of plist hardware restrictions, and in the app store submission data. But that's only a claim, not compatibility.