Should I have two nibs to give support to the screens for iPhone 5 / iPhone 4? - ios5

I started to work in an App that needs to be optimized for iPhone 5 and requires iOS 5.x or later.
But the scenario where the user has and iPhone 4 with iOS 5.x is possible. But the Autolayout will be a problem on those cases...
So, I could use Autolayout for iPhone 5,but the users with iOS 5.x(iPhone 4 or below) will have problems, so in order to avoid that, should I have two nib's one for give support to the iPhone 5 screen and another iPhone 4? (And that sounds very ugly to me).
Having something like this...
if(IPHONE5){
//Load iPhone 5 nib with AutoLayout or without it
}else{
//Load iPhone 4 or below
}
In any case, is there a better option to give support to both screens but with different iOS versions? suggestion on this?
Since now thanks

This is something that I had been wondering about myself. However, I stumbled upon a webpage: "Drop iOS 5: Only support iOS 6" that explains that such scenarios if possible, should be avoided.
Doing development for older OS's might seem reasonable, however...
the rate in which people update their phones is extreme fast (unlike Android)
the development time increases
development costs increase
maintaining code more complex
release dates become later
as a result:
more people have upgraded to the newer OS
your 'older share' has become less relevant
your 'lost sales' is even smaller
your 'return of investment' because of increased cost has extended
My advise: drop iOS-5

Check out this project at Github, it might be helpful
https://github.com/RolandasRazma/RRAutoLayout
Basically it can help you handle some AutoLayout features on iOS5.x. But as this is done with some hack to the internal classes you should be careful if you would apply this for an application that will be shown on the App Store.
Anyway it can help you understand the manage needed for doing this.
But, I would recommend to keep with the 'separate nibs' method.
Hope that helps,

Related

App only support iOS 8.. not iPhone 6 & iPhone 6 plus

I am developing app that only support iOS 8.. not compatible for iPhone 6 & iPhone 6 plus. so i have a query related that i have to add #3x size icons in Image Assets? having confusion on it..
OK I asked the question on the Apple Developer Forum and here is an answer I got in return:
That is a given by Apple's design. Apps already in the wild perform
whatever OS magic to support those devices. You are not required to
explicitly support them (but they should still run in emulation mode).
Also you may note every second game on the App Store states things
like "will not run on anything before iPad 2" and that kind of thing
and that's merely a designer/technical choice Apple seem happy with
regardless of many customers not reading these things or understanding
them and buying anyway.
Now this is someone's opinion (much like the answers and comments here), however the answer does seem to make sense.
However the only real way to know if Apple will reject the app is to submit it (it's a hit and miss process).

Will my app work with a new iOS?

I have made an app for iOS 5.1..
Will the app work with iOS 6 also? Or do I have do to any updates in the code or something?
Thanks!
Apple has good backward and forward compatibility so it should work with no problem
There are cases when you use some specific libraries that your app will need a resubmission
but 99% of the cases your app will just work good
One point to note here: is if apple will change the resolution of their next devices you may find some icons that are low quality (happend when iphone 4 was first release)
But regardless of that your app should work.
Usually the OS versions are backward compatible for the apps.

iOS 4 and 5 compatibility : Prompt users to update iOS

The skinny: my app works excellently in iOS 5.x. However, certain features do not work so well in 4.x. All is resolved with an update to 5.x.
Option 1 - Good programmer: find out what was done in my app with these particular features and why they don't work in 4.x.
Option 2 - Lazy programmer: detect the version of iOS the user is running (I'm already aware that this is not advised) and suggest they upgrade if it's older. Even further, lead them to Settings/Software Update through the use of iPhone URL (eg: iossettings://).
Your advise is greatly appreciated.
This question may not suit StackOverflow very well, but I'll provide my thoughts. Support the platform or don't support the platform. If you don't support iOS 4, then don't support it and compile the app to require iOS5. If you do support it, then fix the bugs. Don't support it but nag the user. That's just lazy as you say.
Many apps have already moved to iOS5-only. Unless your market is unusual and is particularly likely to have iOS4, then I would drop iOS4 support and move on. The time you waste supporting it won't translate into enough sales to cover it for most apps IMO. And the bad reviews you get on iOS4 will outweigh the few extra sales you might get there. Pick an audience and delight them.
Most people are running iOS 4 because their devices don't support iOS 5. Option 1 makes a lot more sense. Or just don't support iOS 4 at all.

How different is iOS 4 from iOS 3?

I relatively new to iOS development and I have been learning iOS 4 for a few weeks now. With the imminent release of iOS 5 looming I was wondering, based on hindsight(iOS 3 -> 4), how different they(iOS 4 -> 5) might be.
The differences from iOS 3-4 are pretty large. The main change was the implementation of multitasking. Based on this, changes from iOS 4-5 will most likely include at least one big change and lots of smaller changes, as this is the way apple does things.
they release over 100 features apparently within ios, development wise, the updating of a project from IOS 3 to IOS 4 to incorporate alot of new features took its time
For developers, they'll probably be quite different. Aside from the major new features in OS4, there are all sorts of little APIs that are lovely to use and really annoying to not use when supporting OS3! For example, gesture recognisers. (Yes, they're in OS3.2, but that was iPad only. Ditto for Core Text.)

Will you publish your app without device testing?

me and my friend develop iPad application (a lot of CoreGraphics stuff). But we can't find an agreement. I tell him that testing on device is essential, he tells me that testing on iPhone 3G/3GS will be enough (I have both devices). Can you tell me, probably we really can test our app on 3GS? The main thing is that interface will be iPad designed, so I even not sure how we'll do that...
UPDATED: It is iPad only software, UI is designed for 1024x768
For a high quality product, you have to test on the device. The performance of the iPad is different, and if you have any interaction which involves threading, that can lead to race conditions that you might not find on the iPhone (slower) or the simulator (too fast). I've also seen a number of students run into memory issues that they didn't find on simulator, but that they discover on device.
This doesn't mean you have to buy a device - you can either solicit a friend with an iPad to be a beta tester, or you can lurk in a Starbucks or Peet's. You'd be surprised how many people will bring in iPads, and how many of them are willing to try out a new application.
You can use the simulator, but that's not enough. It is essential that you test your app on an actual device, because the performance on the simulator is vastly different than the device.
If you don't have the money or the iPad isn't available where you are, then ask someone who has one to be a beta tester.
IMHO testing on the device is one of the first rules of developing for a mobile platform.
Apple strongly recommends you test on device before releasing. The iPad and the iPhone are running two different versions of the OS on two different hardwares. Some functions are not really emulated on the simulator. You're asking for trouble.
On the other hand, if you don't have an iPad and you need to ship, you can always roll the dice.
We've ended up having it fail on different devices. Being a small company (about 30 people), we have quite a few different iPhones floating around. Even though we have pretty much every version covered, we still don't cover all releases of the OS. We've caught several bugs internally but there still seem to be some that happen out in the wild that just require different hardware/software configurations. In short, test on as many as possible, but it is very unlikely that you will ever be able to test on all software/hardware combinations.
I'd recommend having the latest iPhone, one that is one or two generations old, and probably the same for the iPad (when it ends up having older hardware versions), but DEFINITELY have both one iPhone and one iPad (and maybe even an iPod touch).
Use the iPad simulator in the iPhone SDK 3.2.
While the performance level can vary, so it certainly would be best to test on the actual device, don't let it be a barrier. You can use the performance analysis tools in the SDK to find problems.
You might try a beta release anyway.
Not a must but highly recommended. I cannot imagine what is worse than someone reports a bug but you have no way to confirm it's true or false. The iPad is faster than 3Gs generally speaking. Of course, your partner may have a "time to market" concern. So, there is no fix answer to this question.
It can be done but is not recommended. I had a iPad app in the store on April 1 before the iPad was released on April 3. It had been tested on real iPhones and the iPad simulator in the SDK. I don't recommend it but there was no choice at the time.
If the performance is acceptable on an actual iPhone 3G, it should be fine on the iPad which has a faster CPU.
You can test your application on simulator. but it is not enough to upload your application on app store because some memory issues generated on device which cannot be produced on simulator. So, better to test your application at least once before uploading on app store. You have to also check your application under performance tools like "leaks".