I am a beginner Apple developer and I have some issues I would like to resolve.
First of all, I am curently working on Xcode 3.2.6 because I haven't enrolled for the developer program yet. I would like to know if Apple only accepts apps (for the App Strore) compiled on SDK 4.
Secondly, I want my apps to work both on iPhone 3 and 4. What would you advice me to do? I have read in several developer forums that in order to achieve this I have to build my application with 3.1 iOS as a target. Is this correct?
Finally, is there any problem due to the difference in resolution between iPhone 3 and iPhone 4? Which resolution do you think I should use?
Thank you in advance,
Cherry
Set Base SDK to latest (4.3).
Set Target SDK to 3.1.
Avoid features available only in iOS 3.2 or later (e.g., don't use blocks, don't frameworks introduced in iOS 3.2 or later, always check availability of methods). Later, when you get more experience with Objective-C, you may try to combine features of more modern iOS, but still keep compatibility with older iOSes.
Don't worry about resolution. It affects only images – if you want to take full advantage of Retina display, then you will need to create images for both resolutions (std. and hi-res).
P.S. I suggest you to avoid support for iOS 3.2 or earlier. iOS 4 introduces a lot of nice and helpful features. And I pretty sure, Apple will revoke support for iOS 3.x soon after iOS 5 release.
If you are aiming for iOS 3, you will end up not using the features of iOS 4, which is the majority.
This is Apple's statement.
Target the latest iOS release.
Targeting the latest release allows you to take advantage of all the features
available in the latest version of iOS. However, this approach may offer a smaller
set of users capable of installing your application on their devices because your
application cannot run on iOS releases that are earlier than the target release.`
Target an earlier iOS release.
Targeting an earlier release lets you publish your application to a larger set of
users (because your application runs on the target OS release and later releases),
but may limit the iOS features your application can use.`
But I would suggest that you target the iOS 4 as people are now targeting iOS 5, and in another 8 months, I am sure Apple would release iOS 6 (They are very quick with their updates), and I personally feel that targeting iOS 3 is not going to give you great results in the long run.
Related
I am going to develop an Iphone application in IOS8.But I have no idea whether it will work on IOS7 and IOS6.Can anyone clarify my doubts with clear explanation?
Thanks & Regards
Sam.P
It would only support the older OSes if you didn't use any features exclusive to the newer OSes, and if you targeted the old OS when building the application. There is nothing stopping you from doing so, except that you will miss out on a lot of the new technologies (and adoption of recent iOS versions is very high traditionally among Apple's customers, so it isn't a huge issue generally to only support the latest version).
You must make this decision before you publish your app, the earlier the better. You can support all OSes starting from 6 and only use APIs and features available in 6. Or use all the new features of the 8 and make the app incompatible with the earlier versions.
Each published app has a target OS version. If you specify 8 then users with earlier OSes simply won't see your app in the app store. However it's not sufficient to set your target to 6 to support earlier system. You must be careful in using the APIs: each has a documented version where it became available. And you must test, at least in simulators with different OS versions. iOS 6 simulator is still available as a separate download for Xcode 5. I'm not sure about Xcode 6.
iOS 7 adoption wasn't as overwhelming as with earlier updates because Apple made big changes in the UI. So the iOS 6 user base is still significant. I think it still makes sense to support iOS 6 for a new commercial application.
We are planning for a new mobile application for iPhones/iPads this month and we are outsourcing this project as we dont have much knowledge about the subject. Could someone tell me if current iOS applications will run on iOS 7?
I would appreciate help in this as I tried to search but could not find related articles as most of the articles talk about features and not backwards compatibility.
Sure. It will support older versions of iOS. If not millions of applications in Appstore will be unusable in iOS 7. You need to download iOS 7 SDK once available to exploit iOS 7 specific features, thats all.
Yes current iOS application will run on iOS 7, because apple will take care that if they launch new iOS then they create new iOS in such a way that it's always compatible with older iOS apps other wise if someone upgrade the iOS and the apps of previously developed will not work on it then they loose their customers/users. So don't worry new iOS 7 will also support apps developed for iOS5/iOS6. There were only new features in iOS7.
Although iOS 7 has seen a major overhaul in UI field as well as several back end changes too. But the main point for your question is that any application if working on previous versions of iOS should work in iOS 7 too. The OS will take care of all the UI instances drawings in different versions of OS. The situation where the applications supporting newer versions of OS not working on older versions is that they use some features only available to a specific version of OS or later.
It would run in iOS 7, but probably not as you would expect it to run, so my recommendation is to create 2 (or 4 if you build for iPad) 1 for iOS 6 - and one for iOS 7 + just detect the iOS version and load the storyboard for the appropriate version
It is always better to start development in the latest available version of iOS. In this case 7 is the latest with all the support for developers. You can get the relative iOS SDK and Xcode.
Long Story Short: Start Development in the latest iOS and nothing shall go wrong.
From the research I had done, indeed app built using 6.1 SDK and Xcode 4.6 will run on iOS7, however, the app will have an iOS6 look and feel on iOS7.
I am working on a major feature update for my application and would love to include features such as iCloud, Core Data, ARC and storyboards among other things. The issue is that I don't have data on how many users are still running 4.x. I realize that the ideal solution would be to support both at once and just select the available features based on what version the particular device was on, but my upgrades would be so substantial that this would be very difficult. Does anyone else have reliable data on the percentage of users on older versions? And also would it be advisable to release an iOS 5+ version of my app separately as an "App 2.0?"
... my company`s app still suport ios 3.x ,although only 2% on ios 3.x and below... but we can do the vast majority of ios4.0+ effect with 3.x and below API.
Here's an article for reference.
80% on iOS5
With the OTA updates, Apple devices are normally upgraded very quickly. The decision to create an iOS5 only app early this year was not too hard to make and more so now.
I believe iOS users are the fastest ones to upgrade when there's a new update. Also I don't know if it is accepted to have 2 different apps for different versions of iOS. What you could do is having the app check what version of iOS the app is running and exclude the features that are unsupported for lower versions.
Can't find any really reliable sources but you could check out some update stats around.
Link
Changes for ios 6 and Xcode 4.5.x
Xcode 4.5.x (and later) does not support generating armv6 binaries.
Now includes iPhone 5/armv7s support.
The minimum supported deployment target with Xcode 4.5.x or later is iOS 4.3.
The minimum support for iPhone is iPhone 3GS or later as earlier versions use armv6.
Couldn't find similar questions:
I'm currently designing my app and after that I will build it with Xcode 4.2. My question is what iOS version should I use - iOS4 or iOS5?
I was trying out storyboard and ARC, so it would be great to build the app with iOS5, but I don't know if it will be better to use iOS4 to reach more users?
What are your advices?
Merry XMas! :)
According to this report, about a third of users had updated to iOS 5 in October. The figure has probably increased since then and will continue to increase (especially considering the huge influx of new iOS 5 devices which will enter use after Christmas), so by the time you publish your app it is quite likely that about half of users will have iOS 5.
Whether it's worth losing about half of your potential market for the extra features which are available when developing for iOS 5 is entirely up to you. To some extent, it also depends of what the app is - if it is something targeted at people who make intensive use of their iPhone, chances are they will already have upgraded, so it shouldn't be a problem. If, on the other hand, it's something that is likely to be used by non-techsavvy people, you might be better off making it compatible with iOS 4.
I would say go for IOS 4, you can still use Arc, and StoryBoards are not the end of the world...
I would:
In Xcode, set Base SDK to Latest iOS (iOS 5.0) and set iOS Deployment Target to iOSx.xx where x.x is any version from 3 to 5. The deployment target is where you can decide what is the minimum version of iOS that your app will need in order for it to work. So the lower the number would mean you can reach more targets. Just make sure you do test your app on those versions that you set before submiting to iTunes for review.
I have the following problem, in near future I will need to write a few not very complicated apps for iPhone. I do not currently own an iPhone, so I plan to purchase one for testing purposes. In short would iPhone 4 allow me to test apps written for older ios versions? Any pitfalls? Or would I have to purchase older phones/ipad to do the testing properly?
Yes, to perform a proper test you will need to test on the individual devices you are supporting. The documentation will tell you if the framework/API you are using is supported in the older iOS versions. I'm afraid there will be some subjective answers here as I am sure some apps end up running just fine across many versions with simulator testing. There are many factors to consider when looking at backwards compatibility (desired speed, memory usage, APIs, ...). You stated your app is "not very complicated" so you may be fine. I would test your application on as many devices as possible.
I should also make the distinction that there is a difference between "will it compile" and "does it perform as expected". You can use xcode to test whether the application is compatible by targeting and older version. Whether or not the application runs as desired will be discovered when testing on the specific devices.
You can't run iOS 3 on iPhone 4, so you have to buy separate devices.
But if it is a new app I wouldn't consider to make it iOS3 compatible. Most users have upgraded to iOS4 already. And at the time your app is in the store there will be even less users running iOS3.
Sure, this will remove like 0,5% of potential customers. But you don't want to buy another device for 100$ if you can get only 10$ revenue from the 0,5% customers that run iOS3. And you have to test your whole app again, which will take a significant amount of time.
So you should consider to drop support for iOS3.
See this question: Will an application compiled for iOS 3 run on iOS 4?
It will allow you to test apps which are targeted at older iOS versions, yes.
Performance differences to older iDevices like the 1st gen iPhone / iPod touch are quite significant however. So if your apps require expensive calculations or the like, I'd recommend buying an older, used device too to get a feeling for performance on that generation of hardware.
Note that if you need to make sure the apps you are about to develop will run on very old devices / iOS versions, you maybe need to do without some cocoa classes and methods which require more recent versions of iOS
If you bought an iPhone 4 for testing purpose.. You're testing on the latest iPhone available in the market and that doesn't means your app is ready to target low-end device automatically.
Let's take a deep look: If you've designed an App that must look gorgeous and work right out of the box on iPhone 4, then you're probably making your app a Retina display compatible. That is like playing with 960x640 resolution screen.
Now, if you planned to target low-end device for eg, iPhone 3GS, then all you gotta do is to reduce the graphic assets size by half, as iPhone 3GS is 320x480
That's it! Your App is ready for the low-end device as well, in looks and feels perspective.
Now, let's look from deployment perspective. If you base SDK is 4.2.1 and you're targeting to devices which runs 3.3, then all you gotta do is to make sure you don't use latest libraries/classes which are introduced in iOS 4.2.1, as they won't be available to device which are running on iOS 3.3. If you take care of this part, your app is almost ready to ship out.
From Market perspective. I see all the great apps out there had made their deployment target as iOS 4.0 or later. That means, they are targeting to only devices which runs iOS 4.0 or later versions.
I think, you can try your build in low-end iPhone simulator after successful testing cycles ran on iPhone 4 device. :)
The iPhone is generally not backwards compatible. Sometimes methods, properties, classes etc. are added or older ones become deprecated.
For testing, i would recommend that you have several devices with different iOS Versions depending on the target iOS Version you want to release.
Also check the the iOS Reference Library: Under "Availability" for each function etc. is noted since when it is Available