views:

44

answers:

1

Hi,

I was just making a free version of one of my apps. I copied the folder, renamed the project, and changed the icon file, loading screen, interface, and code. BUT YET it still replaces a build on my phone.

1)how do I stop this from happening (i want both the free and paid version on my phone)

2) if you can fix this, will a customer who has the paid, and downloads the free, will that replace it on their phone?

I really need to know these, as I have the app ready to go, and would like to get it before the end of the week.

cheers

Sam

+1  A: 

You need to have a different app bundle identifier. I think that's your problem.

Long answer:

Go into your projectname-info.plist file and change the CFBundleIdentifier.

I'd recommend something like:

  • com.mycompany.mycoolapp for the app store
  • com.mycompany.mycoolapp-beta for the beta version

You should actually be able to set up the "Debug" build configuration to use a different info.plist file configured with a different CFBundleIdentifier and a different icon filename. That way you'll automaticlly get the beta ID and icon, etc for the Debug build and the real id/icon for the full one.

This should allow users to install and use both the production and test versions of the apps at the same time without confusion.

You might also find this IPA target template helpful if you're doing ad-hoc distribution to Windows users for testing:

http://devblog.appmagination.com/2010/01/target-template-for-building-iphone-ipa.html

Nimrod
SPOT ON! Cheers Nimrod. i changed mine like this com.mycompany.myCoolApp for the app storecom.mycompany.myCoolAppFree fro the free version
Sam Jarman
Another trick that many people are not aware of is to add preprocessor macros like DEBUG, or FREE_VERSION the build configuration. I haven't needed to do this yet, but I believe you can also do this by Target which avoids you having to have n^2 build configurations. For example, you can have a Debug, Ad-Hoc, and Release configurations that use different provisioning profiles, then have targets for "Free", "Standard", and "Pro" that define different macros for #ifdef'ing things out. That way, whether something is "debug" or not is logically separated from whether it's the free or std. version.
Nimrod