Starting Feb 1, new apps and app updates must be optimized for iOS 7
developer.apple.com
developer.apple.com
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.
You can't unless you have an A4 device with an exploitable bootrom or SHSH blobs saved. You can't "downgrade" in a browser like that, it's completely impossible.
Wasn't there a Jailbreak that was available via Safari?
It's a completely different process to a restore. Star used a PDF exploit to work it's way up to a kernel exploit allowing for the patching out of various protections which allowed for a jailbreak. You could not have used this exploit kit to restore an iPhone in the way this video claims to.
I've used it on an iPhone 4, and I don't know how anybody copes. It feels like my 3G was on 4.2.1.
iOS 7.1 beta 2 feels like what iOS 7 should have been from the beginning.
Why are people complaining about performance before waiting until the X.1 update ?
It's really beyond shocking how badly the iPhone 4 works with iOS7 as compared to iOS6. I'm not sure it can really be adequately explained - you just have to try it for yourself. Even switching to the camera from the lock screen is nearly impossible at times.
I've recently been looking into downgrading the OS back to 6, but I'm probably out of luck since I don't have the SHSH blobs and APTickets for the older firmware.
Apple really needs to fix the performance issues for iPhone 4 owners or provide a supported way to downgrade to iOS6 (Note: Sibling noted that iOS7.1 fixes the issue... I really hope that's the case).
The core issue is that the iPhone 4's CPU and GPU performance are only marginally better than the 3GS it replaced, but it pushes 4x the number of pixels around.
At the time we weren't really pushing the performance envelope, so everything appeared fine. Now we are - it's trivially easy to hit the upper bound of iPhone 4's performance envelope, whereas the 4S (and the 5, 5S) have a lot more wiggle room.
More critically for app and OS developers, the GPU performance on iPhone 4 was woefully inadequate for the number of pixels it's tasked to render. IIRC the iPhone 4's GPU has a fillrate (i.e., max pixels rendered per second) that's about 13% higher than the total number of pixels it has. This is to say, if you draw even a trivial amount of stuff in the background, you're going to start dropping frames.
For the 4S, 5, and 5S, the lack of CPU performance can often be made up by moving things to the GPU judiciously. On the 4 we don't even have that.
Here's where I disagree:
> "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"
Of course it is, but no one stated that the slowness is due to animations. A large part of the slowness comes from the "blur everything!" design of iOS7, which is inherently GPU-heavy, and thus performs very poorly on the iPhone 4 and its shittastic GPU.
The blur is everywhere, even (especially?) the stock apps where every tool bar and navigation bar blurs items behind itself. You may want to try turning the blur off: http://www.redmondpie.com/how-to-turn-off-ios-7-blur-effects...
This really has little to do with optimization - iOS is on the whole a pretty performant OS and platform. This has everything to do with Apple deciding to include features that are beyond the performance envelope of a targeted device (or conversely, failing to drop support for a device when features move past its performance envelope).
http://arstechnica.com/apple/2013/09/new-lease-on-life-or-de...
A lot like the first retina iPad.
I already did everything that the article you quoted suggests. My phone runs in high-contrast, super-accessibility, no-fx-please mode. And performance still sucks.
To give you an example: I sometimes press power-on, nothing happens for a second or two. Then I press the home button and after another two-three seconds I get… a screenshot, just as if both buttons were pressed simultaneously. Number of pixels, blur, seriously? We haven't even gotten to displaying the lock screen yet!
I still believe there is lots that can be optimized, but Apple chose not to do it. It wasn't laziness, it was a business decision — their time is better spent implementing new stuff — but that is a decision I disagree with. Or, more precisely — I disagree with this decision given that they called iPhone 4 "supported".
Sounds like your phone's borked in some way.
That happens to me sometimes (1 in 10?) when bringing in legacy settings on to a new device.
I've helped upgrade several 4 (not 4s) users and they're happy. On all of them I turned off motion, turned off blur, turned off background updates, turned off auto music/app/updates downloads.
If a phone still has slowness, it's usually a bad setting brought forward. Seems to usually be in email or network settings.
I delete email accounts, reset network settings, and recreate email accounts, leaving iCloud as Push and all others as Fetch, Manual.
If that doesn't fix, I try again, this time "Erase all settings". (Not Content and settings.)
These are the same steps I use to get back battery life losses. Something goes wrong, runs in background, kills batt and slows phone.
Finally, one friend has Downcaster and always ends up with a full phone. Below a level of free memory the device definitely slows drastically. Touch and wait kind of slow, less than 2GB on 64GB device is noticeable, less than 500MB get to be a real problem.
The keyboard is unreliable, which is unforgivable; it would hang and catch up, or just miss key presses. Worse, the unlock screen would have a landscape keyboard sometimes, despite it never leaving portrait. I literally just rotate the phone while hitting the lock button until it straightens out. It's like resetting an Etch-A-Sketch.
And don't get me started on the home button's behavior. The face has a //single button// and it's unpredictable. No idea if it's alt-tabbing or showing desktop. I suspect there's subtle and clever timing going on, but with the system overloaded/out of memory (apps are constantly resetting), I suspect iOS 7 can't manage (yet).
I'm on iOS 6 (jailbroken) but my whole family is on iOS 7 -- and so far I'm happy I haven't upgraded. Because of iOS 7, I'm considering making the switch to Android for my next phone.
Google maps on iOS6+ is far better, IMO, than the Google-powered Maps app on iOS5- or the Apple Maps app on iOS6+ (the last of which has literally never given me correct directions the handful of times I've used it.)
Class action suit?
It would be very un-Apple-y for an OS to drop support for a product you were selling 2 days ago.
I'm sure that's why it was done. You're probably right that the 4 didn't have the GPU to support it and that from a technical perspective it didn't make much sense.
I found an article on CNet from March 21st that mentioned the deal:
http://news.cnet.com/8301-1035_3-57575621-94/should-i-take-t...
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.
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.
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.
There are a bunch of new features that I’m adding. I especially like the ability to speak text with a Siri-like voice.
I think my interfaces fit into the iOS7 ecosystem, but until they start enforcing the policy on Feb 1, I won’t really know. Figuring out what the rules really mean is always a big unknown in the app review process.
The TLDR is native iOS apps are going to die pretty soon.
I was with you until this. The segment of the education market that bought the 2010 iPad will indeed have some early-adopter problems, but in my experience working with a K-12 education startup, the vast majority of installed iPads in schools are iPad 2s.Native iOS apps will die when iOS dies, which appears to be about as "soon" in tech industry time as the sun running out of helium.
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.
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.
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.
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
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?
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.
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.
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 I have to write lot of version specific if-else in the code.
"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."
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.
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-versu...
http://stackoverflow.com/questions/986589/how-do-you-optiona...
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.
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.
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? ;-)
Yep. Starting from May of 2013, they will reject any app that letterboxes on an iPhone 5.
Does this mean that, essentially, we only build for iOS 7 onwards?
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.
It means give primary focus to iOS7 in terms of performance, UI, design idioms, usage of underlying technologies etc….
It means don't build apps targeting prior iOS and just reply upon backward compatibility of iOS7. Use iOS7 as your main target OS.