App Deployment Question: Lite Vs Paid - iphone

I am developing a messaging app. It uses an SQLite database to store the user's registration. It also uses push notifications. Right now I am using a development push notification certificate.
My client now wants a "Lite" version to be built, and I am not sure how to go about it. I have read several articles on Stack Overflow and elsewhere. I am confused by all the versions I have read online.
Can anybody suggest to me what to do, specific to my situation? I don't want to lose the registration data in the database while updating from Lite to Paid version.
One more question: when someone downloads a paid version of an app, will it install as a different app or will it overwrite the existing Lite version? I am guessing it depends whether you are using a separate app ID or the same one, but I am not sure.
Please help.
Thanks.

To your first question, what I do is just create a second target in my Xcode project. One for the Lite version and one for the paid version. Then I create a preprocessor macro for the Lite version in the Xcode build settings for the Lite target. Usually I just do LITE=1. Then in the code when I want to do something different for the Lite version, you can just do
#ifdef LITE
//lite version
#else
//paid version
#endif
And for your second question, the paid version will not overwrite the Lite version. It will be installed as a different app.
EDIT: You should consider having just one free version and providing the "paid" features via an In-App purchase. This would allow the user's preferences to migrate over from the Lite to paid version since it would actually be the same app.

Related

iPhone app versioning in free and fee version for use with OpenFeint?

I have a question about iPhone app versioning.
I know there is the build version number (BundleVersion) and the release
version number (BundleShortVersionString) which is visible to customers.
I want to make a free version of the app and the full version.
I assume these versions should have the same release version number (e.g. 1.0),
but can they have different bundle versions?
I need different bundle versions because I am using OpenFeint for keeping highscores, and I want just one leaderboard in the free version, and all the others in the full version.
I am really not sure how to do this..Is there maybe an option to hide the leaderboards from inside the code?
I would appreciate any help, tnx :)
You can set any bundle version. It does not matter for OpenFeint.
You need use some AppID from OF, for two application. And you'll got one project for Open Feint. And then comment code that use another leaderboard for lite version, and you left one leader board in the free version.

Possible to stop availability an in App Store, but keep providing a last update for it?

I want to withdraw a lite version of an app, since the full version became free (and features can be bought trough In-App purchase).
But I want to provide an update for the current lite version owners with some message like "Go get the full version for free". But I don't want any newcomers to download the lite version.
What to do now?
Any similar experiences?
Maybe you can set App's availability to a future date?

How do i change my app's bundle ID?

I'm making a pro version of my app and a free version, whereas i just had the free version, which is already on the app store. So how do i change my bundle ID for the pro version of my app. Do i have to do something inside of xcode?
The best way to do this is to create a new target. In Xcode, just go to File --> New Target.
This will create a separate target with a new main and info.plist. In there you can specify the app bundle ID for your pro version. Then in the target dropdown (the one you use to specify which to device to debug on) you can specify which target you want to debug and eventually build/submit for.
This creates a clean separation of your Pro and Lite builds, while being able to share the code you have already created. For each of your files, you'll need to specify which (or both) targets they need to belong to.
The answer above works; however, might I suggest you use in-app purchase to activate the paid features? That way existing users of your software will get an upgrade notification from Apple (that they should install the new version). I imagine most users interested in paying for your paid features are the same ones who are currently using your free version.

iPhone Create Lite Version

Do I need to create a new app in iTunes connect, for a lite version? I just want to make sure, can't find any articles on it.
If you plan on releasing a full version and a lite version that are separately downloadable from the app store, you will need to create a separate app for each in iTunes connect.
Here are two fantastic links, I used them both with success:
From Full to Lite in Under An Hour by Noel - technical one, describes Xcode project settings, targets and building
The Right Light by Trainyard's developer Matt Rix - much more content and marketing orientated, nonetheless a must read

Testing app upgrade on the iPhone

Say I have app version 1.0 released on the app store. Then I want to release version 1.1.
I will keep existing data that was copied out of the app bundle and into the app's sandbox. These are some XML config files and a sqlite db the user can write data to. These files could need updates that preserve their existing data.
What is the best way to test an upgrade scenario?
Is there any kind of delegate event that is only called on install?
Thanks.
I think testing with AdHoc versions that is dragged dropped in iTunes is a similar upgrade situation.
That's how I tested upgrading our Chess game, so it keeps old and current games on the device.
As for the files/DB I suggest they should contain some version number.
You can use TestFlight for beta testing or preproduction testing.. visit TestFlight.com for more information..