Will iphone 5.1 deployment target reach all iphones upon release of ios 6? - iphone

I am new to iphone app development and am wondering which deployment target to use (as ios 6 approaches). My app is simple (http web service interaction, map) and my natural inclination is to target 3.1 to maximize potential use. However, I understand that ios 6 will soon be available to all iphones and I presume it will be widely adopted.
So, if I target 5.1 today, will my app be available to most, if not all, iphone users once ios 6 is released?

Right now, requiring a minimum of 5.1 is a bit bold in my opinion, but that depends on your app. It is customary to support the current version and the previous major release.
If you want to expand your target, you may considering going back to 4.3 or even all the way down to 4.0. But 3.x is practically obsolete. but:
Warning: Don't target a version you can not test on device. If you don't have a device running 4.0, testing your app only on the 4.0 simulator is not recommended (although perhaps it is OK. No assurance).
The iPhone 3G can run up to iOS 4.2.
All other phones and iPads can run the latest OS (5.1.1)
Not sure about iPod Touch devices but 3rd (and 4th) gen. should run iOS 5.

You can use 5.1.1 as deployment target if it is available to your menu.. if not 5.1 is best for your needs for now.
This way all (Who have not updated to IOS 6) can use your app...
Best luck for app development.

Related

Submitting an App to Apple wrote in iOS 4

Okay, I know what your thinking why, right? My employer wants me to work on their app and submit it to Apple, but I told him the app has to be wrote in the most up to date OS. Does anyone know where you can find a something that states your, iphone App must have the most up to date OS? He would to have some concrete proof, before they restart their project. I'm like 90% sure your app has to have the most recent OS, but I also am having troubles finding something from apple that says that.
thanks
Starting tomorrow (May 1st), all new apps and app updates must fully support the taller screen of the iPhone 5 and 5th gen iPod touch. In order to do this you need to be using Xcode 4.5 or later with a Base SDK of 6.0 or later. And this in turn means that the oldest Deployment Target you can support is iOS 4.3.
See https://developer.apple.com/news/ and look at the news items from March 21.
So you can still support iOS 4 but it must be 4.3 and later. You must have full retina support on all devices you support and you must fully support the taller iPhone/iPod touch screens.
To be honest, supporting 4.3 is virtually pointless at this point in time. Any device that can run 4.3 can run 5.1. And except for the iPad 1 and 3rd gen iPod touch, any device that can run iOS 5 can run iOS 6. So basically, there is no reason to support anything before iOS 5.1. Any user running 4.3 or 5.0 can update to at least 5.1 if not the latest 6.x.
In other words, starting May 1st, 2013, no new apps or app updates can support the iPhone 3G or older, or the first 2 iPod touches.
BTW - the following Wikipedia page has a good chart about what versions of iOS run on the different devices: http://en.wikipedia.org/wiki/List_of_iOS_devices

Xcode 4.3.2 - Base SDK for Distribution of App

I am trying to distribute an iPhone App to the App Store for the first time. Currently, I am following this guide: Submitting iPhone Apps To The Apple App Store – A Step by Step Guide. Currently, I am on the step where I have to set the Base SDK field value. See, the screenshot.
As you can see, iOS 5.1 is the only choice available there. Now, if I set it as Latest iOS(iOS 5.1) - the default value - will the distributed app will be able to run on older OS's, for example iOS 3 or iOS 4? If not, then what will I do to make it run on older OS. Or, is there anything I misunderstood about BaseSDK?
No worry it will function in the older os you need to keep the deployment target minimum SDK which you can find in the picture if you updated the xcode with simulators of IOS 4 and 5 you can get these options
Update
Basically it means that you're going to be able to use all the API that is public in 5.1 SDK. This has nothing to do with "Which phone your app can run on".
iOS deployment target on the other hand, is asking you which devices can this app run. This is quite a dangerous question, since you can then say from iOS 3.0 to 5.1 for example. This means that your app can be installed in any iPhones running iOS 3.0 to 5.1, no matter what the phone is. That means the original iPhone and iPhone 3G can run your app if they have at least iOS 3.0 installed. You should test your app carefully if you decide to do this. Apple does not provide any way to test on older OS. You'd have to devise that strategy yourself.

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.

iOS 4.3 SDK - Debugging on a 3G Device

Information on the subject of iOS 4.3 device support is pretty thin on the ground at the moment. However, the lack of a 4.3 beta for iPhone 3G devices (and older iPod touch devices) leads many to believe this could be the end of OS upgrades for older devices.
Even if this assumption is incorrect right now, one day it won't be. There are hardware limits that will eventually stop Apple from supporting the oldest of devices with new iOS updates.
Given that iPhone application development debugging has the requirement of both iOS SDK and iOS version being the same, how would one continue development using iOS 4.3.x SDK releases while doing device performance testing on an iPhone 3G (or older device)? Are there ways of debugging over different iOS/SDK versions? Or do we have to simply drop development support for the older devices and tell those customers who don't upgrade their hardware: "tough"?
You should have no problem running code written using the 4.3 SDK on an older phone. I'm currently doing testing using the latest beta SDK, but running the code on a iPhone 3G running 3.1.3. As long as you are careful to check for the existence of newer methods/classes, your app will continue to run on old OSs. I'm not sure where you heard that OS and SDK versions need to match to debug; that is not true.
If you're willing to forgo the latest features, you should be able to support the original iPhone as long as you like.
You have to set a deployment target with an earlier build number - you can still target 3.0. You just have to be careful about what frameworks and calls you use and check for compatibility.
Since the newer SDK's do not have simulators that support earlier IOS versions, it's important to keep around devices with older builds.
For using iPhone 3G as debugging device in Xcode 4.3 just go to Build Setting and edit
the Architectures to armv6 and armv7 both. armv6 architecture is used for older devices.
Select the Deployment target 3.0.
This will work.

When developing for iOS, which devices do you typically test on?

I'm needing to purchase whatever devices are needed to do testing for iOS applications. My initial thoughts are to test on a first-generation iPod Touch and an iPhone 4. Testing on the old iPod Touch with 3.1 software will give a good indication on how the app will work with little memory, and the iPhone 4 will obviously be a test for the faster system.
What do you all typically test on before submitting an application?
At minimum, a device running the oldest OS that I list as my Deployment Target, the slowest device/OS combo that I have (e.g. a 3G running 4.0.x is likely slower than anything running a 3.x OS) and which the app supports, and the current/latest released OS.
A device which includes all the features that my app will support (e.g. mic, camera, gyro, GPS, etc., if needed.)
Optionally, an iPad if the app is Universal, or if not to see how bad 2X zoom looks.
Optionally, a device with a beta OS installed if it appears Apple is going to release it well before I plan on revising the app.
So far all the apps I've submitted have been compatible with iOS 3.1.x, and I test them on my old 1st gen iPod Touch. I also test on my 3.2.2 iPad and my 4.0.2 iPhone 3GS.
My guess is all of these answers are going to be along the same lines -- test with as wide of a variety of devices as you can that are compatible with your app (i.e. meet the Minimum Deployment Version).
This is especially important if you develop Universal Apps that support 3.1.x. You'll find a ton of bugs with the hardware that you will never get with the simulator.
right now, I test using a 3g running 3.1 (a popular build), a 3gs running 4.0.2 (latest), a touch running 3.1.3(basically 3.1), and an iPhone 4 with 4.0.2.
Mainly try to keep a 3.x device around for sure, and then obviously a device with the most up to date OS.
Based on AdMob reports...around 98% of users are upgraded to atleast 3.0 and those that aren't shouldn't be your client base anyway (unlikely to use new apps).