I've been searching everywhere and am stumped by this, and the SDK docs have been no help.
I'm interested in developing a "free" or "lite" version of my ap as well as a paid version. I'd like for users to be able to upgrade without losing their user data that they created with the free version.
If I understand right, the paid version is a different app -- Apple approves it differently. Here's the question -- is there any way to make it share the same Application sandbox user directory as the lite version?
Some apps seem to claim they can do this. I looked at one that has an 'export' feature which exports from one to the next. ??? I have all kinds of disgusting ideas (e.g. encode the data and pass it in a URL scheme from one to the next, or upload to an intermediary website). I hate all of them. Is there a way to do this?
Some apps seem to claim they can do this. I looked at one that has an 'export' feature which exports from one to the next. ??? I have all kinds of disgusting ideas (e.g. encode the data and pass it in a URL scheme from one to the next, or upload to an intermediary website). I hate all of them. Is there a way to do this?
Your disgusting ideas are the only way I know how, at least in 2.0. I have not seen the docs for the 3.0 SDK yet.
If the apps share a common wild card application ID don't they both have access to the same keychain? Not that you could store much there but I believe that it was intended to have common login information and other secure bits stored there.
Your disgusting ideas are the only way I know how, at least in 2.0. I have not seen the docs for the 3.0 SDK yet.
Thanks for the reply -- I've been waiting to hear more on the 3.0 SDK, too -- but unfortunately my client wants the app posted before the summer. Oh, well. Thanks nonetheless.
If the apps share a common wild card application ID don't they both have access to the same keychain? Not that you could store much there but I believe that it was intended to have common login information and other secure bits stored there.
Hmm .. interesting idea. Which application ID do you mean? I thought the keychain was determined by the GUID that's assigned dynamically at the time the app is copied to the device (as is the real location of the sandbox'd home directory).
In any case, unfortunately I don't think this will work -- it's more data than could fit in a keychain (even uncoded). The best I could come up with something similar: encode the data in a string, then pass it on a URL to the upgraded app. But even then it's more data than can reasonably be passed.
Our application uses the unique ID of the device ([[UIDevice currentDevice] uniqueIdentifier]), and an HTTPPOST to export data to the server (in our case, it is a sqlite database file that holds all the data), and then the data can be imported back to the device by the paid version. It is a pretty simple solution as long as you have a server that can run some code to store the data for the user.
I was thinking about doing this, but the device ID is an interesting twist. We'd have to configure a server to handle this, but shouldn't be much of an issue. I doubt the traffic will be that high, and privacy isn't much of an issue, so it might work.