ios - Regarding compatibility issue - ios

I am making an iphone application. The target version is 6.0..
Recently I ran this app on ios 7.0 beta simulator and my app's user interface doesn't look good because of compatibility issue. MY question is, if I fix my app and change the target os to 7.0, will it still appear nicely on 6.0 or lower devices?
Currently my app looks beautiful on 6.0. But I am worried that if I target 7.0, it might not look nice on 6.0 anymore.. What should I do? Is there a way for an app to target two different os versions with one build? Since App Store doesn't allow me to upload separate builds for the same app, I am a bit worried about this..

Related

iOS SDK 5.0 (xcode 4.x)

basic question regarding xcode 4.2 and iOS SDK5
I have an older MAC and really can't use anything higher- if I made an app for this target, will it be rejected?
Does the newer SDK 7.0 have to be the target? will the app run on newer versions (like it would in Android)
I looked around but seem to find mixed answers- just seeing what my options are.
You have to use at least Xcode 5 to be able to distribute your apps to the App Store. In a few months, the minimum requirement will likely become Xcode 6.

Xcode 5 and apps deployed for previous versions of iOS

Maybe it´s a really stupid question, but how will my app look on previous versions of iOS if I make it with the new Xcode? It looks good in the simulator, but thats just showing ios7. I have made some design changes to fit ios7 and since the toolbars and navBars had to be moved it feels like it will look awful in ios6 for example.
Maybe will your app look good on older versions. But that depends on your code. You have to test it.
You can install your app on a older iOS version by setting the deployment target in the general tab.
After that, you should be able to run the app on older iOS simulator. This should look like this
If there is still only the iOS 7 simulator, than go ahead and hit more simulators to get more.
Having installed Xcode Version 5.0.1 (5A2053), the More Simulators option is no longer present. The Components tab on Xcode Preferences/Downloads only offers the options of 6.0 and 6.1. The release notes don't say that anything's been removed, but I can't find how to reinstate pre-6 simulators.
[Further note] In the iOS Simulator user guide, there's a section on iOS Version Limitations that seems to imply that even 6.0 might disappear without notice - "iOS Simulator does not have complete backward compatibility. In addition to supporting iOS 7.0, iOS Simulator supports iOS 6.1". Worrying if you still have apps that target 5.0 or 5.1.

targeting iOS5 - will it work on iOS6 also?

Hello I am beginner with these things and would appreciate nice explanations
that would dismiss my doubts.
If I target my app for iOS 5 -- does it mean users who have iOS 6 and iOS 7 can
also use it? Anything I should watch out for?
There are two primary settings used for your targeting your builds:
Base SDK & Deployment Target.
The Base SDK = What are the latest features I want available in this app?
The Deployment Target = What is the earliest OS I want to be able to run this app?
So, if you have both of these set to iOS 6, the user must have iOS 6 to install or run the app.
If you have a Deployment Target of iOS 5.0 and a Base SDK of 6.0 that means it'll install and run in iOS 5.0, but you need to be careful to branch your code and not use any iOS 6.0 features if the user is running on an iOS 5.0 device.
Yes, the target is the minimum version version that the app can run on. That doesn't mean that the app will work properly on newer versions and you really need to test to be sure. If you're creating a new app think carefully about which older versions to support.
If you target your Application for a lower iOS version, anyone with the version number you target AND HIGHER and access the application. Anyone LOWER than the one you target will not be able to download and use the application.
Everything will work fine, however there are certain features that are only available in iOS6 and iOS7 such as UICollectionView is only available in iOS6 and above. Fortunately you can test the different OS's in the simulator, it will make you life easier and you will be able to see if your application breaks running a different OS.

Updating apps to iOS6

Haven't been able to find an accurate response to this question on Apple Developer forums.
As with other Apple Developers, I will upgrading our apps to support iOS6 devices.
I've downloaded XCode 4.5 which supports iOS6 SDK.
I understand I cannot submit versions of my app to the app store using this XCode build, however:
if I re-compile and build an app using the deployment target of 6.0 and fix all the known issues e.g. deprecated methods etc. when Apple releases GM for iOS6, will any build compile and work with iOS5 devices as well?
Should I just be submitting apps with a deployment target of 5.0 or will those fail to run in iOS6?
Should my deployment target only be iOS6 if I am using new iOS6 features?
(confused).
Since this is a pretty generic question about supporting multiple versions of iOS and does not cover any iOS6 specific things (covered by NDA), here goes my answer:
if I re-compile and build an app using the deployment target of 6.0 and fix all the known issues e.g. deprecated methods etc. when Apple releases GM for iOS6, will any build compile and work with iOS5 devices as well?
In principle, yes, it will, provided you have not used any iOS6-only feature or you did it properly (see the answer to your third question). However, testing against an actual device running iOS5/4 (or the simulator) is almost mandatory if you want to be sure that things work correctly.
There is also a chance that something that is currently working under an older iOS version will just break on iOS6 (this can happen in case some bugs were added, but also in case some bugs were fixed and it happens that your code had a bug of its own that countered the effect of the former). So, testing is the king. (Thanks to rsswtmr's comment about this).
Should I just be submitting apps with a deployment target of 5.0 or will those fail to run in iOS6?
You can specify a deployment target of 5.0 if your app does no use any iOS6-only feature (or you do it properly, read later); in other words, this setting will not break compatibility with iOS6;
Should my deployment target only be iOS6 if I am using new iOS6 features?
It can, but it is not the only way.
If you specify your deployment target as iOS6, then you can freely use any iOS6-only feature in your app without concern. The app store mechanics will prevent your app from being installed on any older device and you will be safe.
On the other hand, if you specify your deployment target as iOS5 or older, then you can still use any iOS6-only feature in your app, but you should properly support older versions of iOS by "guarding" any usage of iOS6-only features and providing a fallback for iOS5.
This means the following: say that you are going to use featureA only available on iOS6; what you can do is:
check to see if the feature is available at runtime (e.g. class respondsToSelector, etc);
guard your code within an #ifdef so that it will be compiled only on when possible;
if the check at 1. will fail, define a way out for older iOS versions.
Have a look at this post on supporting multiple iOS versions.
Set "Base SDK" to Latest iOS and "iOS Deployment Target" to the older version you plan to support (iOS 5.0 for instance).
Add conditional code to use feature available in latest iOS without crashing in the old one supported.
The section "Conditional Coding" in this Apple guide can be helpful. Also check other questions on the subject in SO.

XCode iOS Base SDK setting question

I have an app that I build using XCode 3.2.6, Base SDK 4.3, Deployment target iOS 4.0.
I decided that I should test it with the latest iOS5 beta, to make sure that my app doesn't break, and submit any bug reports to Apple if I find something.
What I found is that if I build the app using XCode 4.2, Base SDK 5.0, Deployment target iOS 4.0, the size of the text in my UILabels and UITextViews renders smaller (by maybe 3 points or so). But that's not really what's important.
I have two test devices, one has iOS 4.3 installed on it and the other has iOS5b3 installed on it. What confuses me is that the shrunken text behavior occurs on BOTH devices.
If I build the app (like I normally do) using XCode 3.2.6, Base SDK 4.3, Deployment target iOS 4.0 the shrunken text behavior goes away on BOTH devices.
My understanding was that the UIKit libraries were linked at runtime on the actual device, and as long as I use APIs that are supported by both Base SDK versions it shouldn't matter which Base SDK I choose.
It wouldn't be so surprising to me if I observed different behaviors on devices running different versions of the OS. But as far as my understanding goes, choosing a different Base SDK shouldn't change any behaviors on a given OS as long as (of course) the Deployment Target setting is low enough to include the OS version and I'm using APIs that are supported.
So what gives? I'm obviously missing something.
I really appreciate you taking the time to help me understand this.
Thanks!

Resources