8 ms·
Starting Feb 1, new apps and app updates must be optimized for iOS 7
- kevingadd 13y agoDoesn't requiring the new build pipeline plus 'optimized for iOS 7', mean you can't support most older iOS devices anymore? I know that is how the build pipeline stuff worked for desktop OS X apps - they tended to deprecate the ability to build for older OS versions when you installed the latest rev of XCode. If so, how far back does it go? Like, if I compile an iOS7 optimized app, will it work on iOS6 devices? What about iOS5? Do they schedule the support deprecation based on lifetime (i.e. all devices released in last 2yrs will work) or is it just based on software versions?
- mildtrepidation 13y agoI'm also interested in the answer to this. Building for Android allows you to target a wide range of versions even if your build target is the latest; is there any analogue to this in the iOS world?
- grey-area 13y agoYou can build for ios 7 at the same time as ios 6. They tend to assume you'll only want to target the latest, but it can be done without much trouble, esp. if you already have a tested older project and are willing to put more time in to testing. I'm supporting an app which supports ios 5-7 at present but we tend to test only on 6-7, and have changed some of the UI to match better with ios7. The issues tend to be with matching chrome if you have custom controls, but if you don't have many custom controls, you'd probably be fine. I imagine it's not very different from the story for Android.
- kenrikm 13y agoYou can use: if ([object respondsToSelector:@selector(selectorYoureCalling:)]) { //it Does! } To check if the iOS version your app is installed on has the method and then use it if it does. It's pretty easy to keep things backwards compatible as long as you add fallbacks for functionality that's not present it older versions.
- rajeevk 13y agoYou can do it in iOS world too. But the iOS7 is little different. I recently updated my app with iOS7 support. Many places in the code I had to write something like if(version >= 7) { // some code which only works on iOS7 // or some workaround for iOS7 } else { // code which works in older version } Previously I never had to write such code to support iOS6 and iOS5 together. But the situation is much better than Android world. I also have the Android version of the same app (http://www.avabodh.com/lekh)and http://www.avabodh.com/lekh)and I have to write lot of version specific if-else in the code.
- nwh 13y agoUsers can now install older versions that are compatible, but you can't update them anymore once you go past that point.
- klaustopher 13y agoAny sources for that? I stil haven't fount any info if you can update old versions of your app
- nwh 13y agoJust experience. If you try and download an iOS7-only app on iOS6 you get an option to download a previous version.
- cstejerean 13y agoIt's been announced a while back, for example here https://developer.apple.com/news/?id=9182013a https://developer.apple.com/news/?id=9182013a "Previous versions of your apps are now available for re‑download by users who have already purchased them, allowing customers to use your apps with older devices which may no longer be supported by the current version of your app. If you do not wish to make these versions available, you can manage the availability of your apps' previous versions in the Rights and Pricing section of the Manage Your Apps module in iTunes Connect."
- coob 13y agoNo, you can build against the iOS 7 SDK and still support older versions of iOS. With Xcode 5 you can only build against iOS 7. You can also have entirely separate functionality for different OS versions in the same app bundle. I've never tried it, but as far as I'm ware, you could theoretically build agains iOS 7 and have the app run on iOS 2.0, assuming the App Store still works.
- ryanpetrich 13y agoDeployment targets earlier than 4.3 require armv6 libraries to support all devices, which Apple no longer ships. One can build an armv6 slice using an older toolchain and lipo it with armv7/armv7s slices built against 7.0, but it's not clear if Apple will accept such binaries as App Store submissions.
- belthasar 13y agoI currently have an app in the store that has been optimized for iOS 7 but works as far back as iOS 5.1. You could probably support earlier versions as long as you verify the OS supports a feature/method before calling it.
- surreal 13y agoiOS apps in Xcode have a "Base SDK" (which is the actual SDK you're building against: must be iOS 7.0 from Feb 1). But you then also set a "deployment target", which is effectively the oldest version of iOS you still want to support. Set this to iOS 6, for example, and you'll be supporting both versions, even after Feb 1. One of course needs to be careful about using new APIs/features in this situation (detect whether a certain method/selector exists before using it, for instance) – as we don't want to throw runtime errors on the older OS. http://stackoverflow.com/questions/1358033/iphone-base-versus-active-versus-deployment-target http://stackoverflow.com/questions/1358033/iphone-base-versu... http://stackoverflow.com/questions/986589/how-do-you-optionally-use-iphone-os-3-0-features-in-a-2-0-compatible-app http://stackoverflow.com/questions/986589/how-do-you-optiona...
- rbritton 13y agoThere's an OS X app I found not too long ago that helps immensely with checking the deployment target against the actual APIs used in order to make sure you correctly avoid unavailable stuff: http://www.deploymateapp.com http://www.deploymateapp.com
- mikeash 13y agoMy copy of Xcode 5 supports Mac OS X deployment targets back to 10.4. Presumably the only reason it doesn't go any farther than that is because nothing prior to 10.4 ran on Intel, and Xcode doesn't ship PowerPC compilers these days. On the iOS side, my copy of Xcode 5 supports deployment targets back to iOS 4.3. I think that may be similar to the reason for stopping at 10.4, but with ARMv6/7 instead of PowerPC/Intel.
- lstamour 13y agoThe hard part is finding a device that can run 4.3 for testing. Technically, you could launch an app that supports iOS 2 or 3 all the way to iOS 7, the hardship is testing! Unlike Android post-Froyo, Apple's emulators have never been that accurate. in both cases, memory and device limits on older hardware become the significant bottlenecks. That and with every OS X update you lose another simulator major version each year. Typing from memory, so I could be wrong: 10.6 had everything. 10.7 lost 3.x, 10.8 lost 4.x and 10.9 lost 5.x simulation. I had to install VMs to run emulators, how sad is that? All this would be fine if Apple allowed developers to downgrade as post-Xcode 5 hinted, an option removed when the jail breaking started.
- mikeash 13y agoWhen did Apple hint at being able to downgrade devices?
- lstamour 13y agoIn Xcode. http://wiki.canby.k12.or.us/groups/ipodusergroup/wiki/a507f/images/6ac0c.png http://wiki.canby.k12.or.us/groups/ipodusergroup/wiki/a507f/... Until recently, Xcode always offered a (non-functional since iOS 4 or so) way to downgrade your device. Now, they didn't document it as such, but why else would you make a menu that shows only past versions of an OS and let's you "Restore" such a release? ;-)
- andrewgjohnson 13y agoI think the lack of definition of "iOS 7 optimized" is what is confusing to those of us who haven't developed apps on iOS.
- seiji 13y agoBasic guidelines of "no using the old UI widgets (grey keyboard, old tabs, old back arrows)" and, old by now, supporting iPhone 4 and iPhone 5+ screen sizes with optimized graphics. Same goes for iPad except there's only one resolution to support even though it comes in two resolutions across two sizes.
- ben1040 13y ago>old by now, supporting iPhone 4 and iPhone 5+ screen sizes with optimized graphics Yep. Starting from May of 2013, they will reject any app that letterboxes on an iPhone 5.
- micampe 13y agoThe only apps I have that have not been updated are Google's and the only annoying thing is that they use the old keyboard, which looks bad now.
- tonyhb 13y agoYeah, I was thinking that as a web/java developer I don't understand what this means. Does this mean that, essentially, we only build for iOS 7 onwards?
- smweber 13y ago"iOS 7 Optimized" is Apple's way of saying "built with the iOS 7 SDK". Apps that are built for iOS 7 get the new shiny keyboard and some different behaviour when run on iOS 7, but can still run fine on older versions of iOS if the app developer is willing to support older versions of iOS. This is done by setting an option called "deployment target" to an older iOS version when building in Xcode (and testing a ton on older versions of iOS, and not calling newer APIs on versions of iOS that don't support them). So this announcement means Apple is dropping support for older versions of Xcode (with older iOS SDKs), but older versions of iOS are still technically supported as long as you're building with the iOS 7 SDK.
- VLM 13y agoThe original ipad can only be upgraded to iOS 5.1.1, I think. There are a couple implications. First of all schools (like where my kids go) that bit the apple and deployed ipads to all the kids can't install or upgrade software after February. So if you're selling apps to kids, get your profits while you can. After february if they spend all their budget on upgrading ipads to the latest hardware so they could eventually install apps, they're not going to have any money to spend on apps, so that is a double whammy on sales. Something tells me no one told the accountants and administrators that the depreciation period was so short; much like elementary schools reuse textbooks for 20 years I think they were a wee bit optimistic about ipad usable lifespan. Another implication is if you have a use case for app-less (web based) ipads, the market is probably going to absolutely flood in a couple months with cheap ipads that can't run modern native apps. So if you're trying to develop an ipad app for cheap people, the wise choice at this time would be web based not native. Also a web based solution could be sold to android users or desktop users or whatever. The TLDR is native iOS apps are going to die pretty soon. Which is too bad, it was an interesting technological idea.
- chaosphere2112 13y agoRequiring the build pipeline does not remove the ability to support old versions of iOS; see https://news.ycombinator.com/item?id=6928203 https://news.ycombinator.com/item?id=6928203
- CookWithMe 13y agoApp optimized for iOS 7 != App only runs on iOS 7 In most cases, the developer just has to recompile the app and include iOS 7. Of course it get's a lot more tricky if one wants to start using new APIs introduced in iOS 7, and that's why most devs will drop support for older versions.
- tannerc 13y agoThis needs to be highlighted more here. Support for iOS 7 can complicate things, but for -- I'd estimate -- 75%+ of developers it's simply tweaking a few things and then releasing an app that continues to support v5.0 and up at the very least. This isn't as dramatic an announcement as some are making it out to be. Though maybe it should be, as the way to encourage both consumers and developers to stay up-to-date is to force them into it with limited support.
- jwr 13y agoiOS 7 is the first Apple system where I felt royally screwed. My iPhone 4 became so slow as to be nearly unusable. Everything now takes seconds, swipes are being missed, even audio gets chopped up when I play back podcasts over bluetooth. There are two reasons for me to be angry about this: * Apple should never have released iOS 7 for iPhone 4 devices. iPhone 4 should have been listed as "unsupported". But had they done that, they would have ended up with a fragmented ecosystem, and unable to brag about how so-and-so-many percent of users upgraded to the latest iOS. * There is no good reason for iOS 7 to be slower than iOS 6. The "it requires more processing power for animations" reason is bogus, because there are very few animated effects, and I switched off whatever I could anyway. The only reason every iOS release is slower than the previous one is because Apple does not care about optimizations. They can afford not to care because every new hardware device is much faster than the previous one. But that means some users get royally screwed. I should have stayed with iOS 6 (there is no going back now), but more importantly, Apple should not have claimed that iOS 7 is supported on my device. For all practical purposes, it isn't — the experience is really bad. I've just compared it to an iPhone 3G running iOS 4.2.1, it's more responsive than iOS 7 on iPhone 4. So, this forced migration to iOS 7 is something that makes me angry, because I'm that part of the userbase than is being dragged into it kicking and screaming.
- jbrooksuk 13y agoHave you tried http://downgradeios7.com/ http://downgradeios7.com/? I don't know if it really works, but I've heard that people have had luck going backwards — not sure how though.
- ronaldx 13y agoWorth noting that first generation iPad, the current model until March 2011, will only run iOS 5.1.1 and has essentially been obsoleted by now. Yes, it is theoretically possible to support earlier versions but Apple makes it practically very awkward: around half of the top apps don't support iOS 5. Apple's own apps apparently don't support iOS 6.
- frou_dh 13y agoWhich makes it odd that 2011's iPad 2 is not only still supported, but still on sale.
- MBCook 13y agoThere are two reasons. First, the original iPad was somewhat underpowered. There is a reason the iPad 2 felt so much faster. The second reason is because of the iPad mini. The non-retina Mini is an iPad 2, just in a smaller package. I know some developers were complaining after the retina Mini was announced because Apple didn't update the non-retina version to the A7, so the effectively still have to support the iPad 2.
- drham 13y agoApple does at least allow download of the last compatible version for iOS apps. Unfortunately this also puts developers in a really tough spot if they have a large number of iPad (or other users of obsolete devices) as they are unable to ship updates to that obsolete version and they are forced to either disable this download completely abandoning the customers or have it available and be unable to make any bugfixes or other updates
- agashka 13y agoWhat does that mean for third party applications? Like those built using Adobe Air, which as far as I'm concerned, does not use Xcode. Will an application that complies with the iOS 7 guideline be rejected just because it was not compiled under Xcode?
- ryanpetrich 13y agoThese tools will have to be updated to emit binaries with load commands that link against iOS 7 versions of UIKit in order to be in compliance. This is similar to the regulation change in March 2013 that mandated support for iPhone 5's larger display dimensions.
- mmgutz 13y agoDoes this affect Phonegap and Ximian?
- jarjoura 13y agoA few things people might be missing from this announcement. 1) Simply recompiling an application with iOS 7 SDK unlocks a different set of view metrics and subtle behaviors that are non-trivial to address. Developers need to make sure views lay out properly (accounting for the status bar, etc.) in both iOS 7 and iOS 5/6. 2) If you're a game company, chances are you can set your target device to iOS 5 and after making sure you account for the metrics changes you should be fine. 3) Clang/LLVM changes might cause a new crash when run on iPad 1, for example, because Apple won't be testing it anymore. You'll need to have this hardware around to verify everything runs if you want to support that device. 4) If the application is rarely updated or barely maintained, chances are it will be abandoned at this point. What used to be a simple bug fix here and there will now become a massive project. 5) Last and most important point, most software that IS maintained, or at least downloaded enough to warrant concern, I promise you that Apple's developer relations has a point person on top of it. All of your games and important tool makers are well aware of their need to transition to the new SDK if they haven't already. Perhaps a bug in 7.0 that will be fixed in 7.1 was keeping them from releasing an update. 5.1) If you have a game that is used on iPad 1, speak up and let the developer know so that they can make a decision to keep supporting it. OpenGL ES has been quite stable API-wise for quite some time so I suspect most games will continue to support iOS 5 for the foreseeable future.