There’s a furor in the developer community, and there’s about to be one among users too. Apple made a change in iOS5 that breaks legions of mapping, photo, and other apps. Any app that stores lots of local data is in a world of hurt.
Caches vs. Documents
Before iOS5, there were two places a developer could store permanent data.
You could store it in the “Documents” directory, or you could store it in the “Caches” directory. The difference was the Documents directory would get backed up to iTunes, while the Caches directory would not.
Because of this, we store map data (in all of our apps) in the Caches directory. When we first started, just by accident, we actually stored the data in the Documents directory, but we immediately received emails from users telling us this was bogging down their iTunes sync. Storing data in the Caches directory has worked reliably for years.
Caches Now Subject to Arbitrary Deletion
Under iOS5, the Caches directory is now subject to random deletion. When your flash drive starts to get full, files will start randomly disappearing from the Caches directory. This breaks Gaia GPS, Offline Topo Maps, and all of the apps we have built with partners. It’s a full on train wreck, and it’s ruining my week and weekend.
It wouldn’t be so bad if there were a solution – if there was any way to store local data in iOS5 and not have it backed up or randomly deleted, we would take our lumps and rewrite the code to deal with the situation. Unfortunately, that doesn’t seem to be the case, and the developer community at large has found no workaround to date.
- You can read our StackOverflow post seeking a solution.
- You can hear from the developer of Instapaper, who basically broke the story.
- Or you can read the comments on this Hacker News thread.
Our Workaround
We have submitted our annually allotted code-level support request, in hopes that Apple will provide a solution.
If we don’t receive guidance from Apple by Monday, we will be updating all of our apps with an absolutely terrible workaround. The app will show a pop-up on launch and instruct the user to go into their Settings and disable back-ups for the app. There is not even a way to provide a button to accomplish this within the app, as far as I know.
This is no solution at all because a lot of users will not even read the pop-up, and even some of those that do will misunderstand or ignore the severity of the problem. This will be a support nightmare and a terrible blemish on our apps.
Real Solution
Apple needs to back-track and fix iOS5. It’s unreasonable that the above workaround is the correct solution.
Apple either needs to provide a programmatic way for developers to force an app not to back-up, or they need to provide a directory where we can do local permanent storage without backups (that is, give us a directory that works the way Caches used to).
A Theory of Why
For whatever reason, Apple has decided that they don’t want app developers storing local data. They will argue that this is an attempt to improve the iPhone experience and stop developers from cluttering up phones with gobs of useless data.
But I think Apple got in a rush, and they probably underestimated the backlash and the terrible consequences for a range of apps. I don’t think there was a machiavellian plot to extract more money – but I bet Apple decided that developers would deal with any issues, so full steam ahead with iCloud and all the subscription fees that entails. It wasn’t purely greed, but it was blindness to user and developer needs.
Conclusion
My only conclusion is that I am a sad, frustrated developer. Come Monday, I’ll push my crappy workaround. I don’t expect Apple to back-track. Too many iClouds to fill up with data, too little sympathy for developers like me who would rather spend a week building new features and a weekend relaxing, instead of spending both working around a draconian technical edict handed down by people who don’t care.