I am working on a project that was not initially developed by me and this project is an iphone application with a lot of in-app purchases and these in-app purchases are large images stored inside the app. These images make the app big in size (~ 70 Mb). This app is compatible with iOS 4.x and up.
With the launch of iPhone 5 and iOS 6, the company wants to create a brand new application, just compatible with iOS 6 and leave behind all legacy support of the previous version. This new version will store the in-app purchase images on Apple servers and this will make the app size drop to 3 Mb. But, on the other hand they don’t want to abandon those who bought the in-app purchases, they want to create a scheme where users could transfer the purchases from the old version to the new one.
I know this can be accomplished by having a server on our side and setting up an application and a database, but their limited budget right now is prohibiting this. So, is there a way to do that using exclusively the application and iCloud (or whatever on Apple side)?
I was wondering if this could be used to do this. I mean, can I use the key-value store stuff to do this? Or in other words: can two apps have the same com.apple.developer.ubiquity-kvstore-identifier?
thanks.
It’s possible to transfer data from one app to another quite easily if your users have both apps installed, however it’s not possible to transfer in app purchases from one app to another.
What you’ll have to do is update your legacy app to support some kind of action or link to the new app, then open the new app from within the old app with
UIApplication openURL:and pass through some meta data about the upgrade.Then from within the new app your app delegate will receive
didFinishLaunchingWithOptions:with the URL used to launch the app, you can then download their purchase.This functionality is supported by registering URL scheme for you new app, which is an
info.plistsetting.A problem you’re going to have with the above transfer of purchase meta data between the old app and the new one will be the fact that restoring their purchase will not be possible via StoreKit/Apple (as noted above, transfers are not possible).
You could get around this issue and provide your existing customers with the ability to restore their purchases if you had two in app purchase SKUs for your new app.
One item is the usual item that new customers will need to pay for, the other is identical but $0 for existing customers to ‘buy’ so they have a purchase registered with StoreKit/Apple for them to restore in the future without the old app.
The new app can conditionally display this $0 option for existing customers if they’ve upgraded via the method above.