Can you convert an iOS freemium app to a paid app without double-charging customers? - iphone

The scenario is:
I created a free iOS app that had in-app purchases for premium content
I now want to convert the app into a paid only version of it and remove all IAP stuff
My questions are:
Will the AppStore let all current customers download the app again without double-charging them? (i.e. forcing them to pay for an app that used to be free)
As long as I keep the bundle identifier (i.e. com.yourcompanyname.appname) the same, it will just overwrite the old app like a normal upgrade, correct?

You're correct: if it's the same app -- same bundle id, submitted as an update -- then existing customers will be able to download it for free forever, like any upgrade.

Related

Verifying the purchase (receipt) of another application (Mac App Store)

TL;DR: Is there a way to verify that a user has purchased another app (of mine) from the Mac App Store?
In a brief, I want to completely rebrand one of my applications on the Mac App Store. The current version is very buggy and has a user base of nearly 90% pirates. I want to shut down the old application and completely rebrand it as a new product.
However, I don't want to completely screw over my current, legitimate customer base. I am hoping there is a solution to this. The way I was hoping to go about this was to:
Create a new application – completely rebranded
Make it free
Have an In-App Purchase that unlocks the Pro version
Allow customers of my previous app to "restore their purchase" to unlock the Pro version
The new app will have extensive anti-piracy measures. Furthermore, the current application requires a connection to one of my servers. When I release the rebranded app, I will shut down the current app.
I realize the forcing users to migrate may cause some backlash; however, I am hoping that, by providing the new and improved version 100% free, the backlash will pass.
Look for the old app using NSBundle bundleWithIdentifier
get the receipt of this bundle using appStoreReceiptURL
validate the receipt
unlock functionality
Bare in mind that the terms and conditions of Apple say something along the line of "only appstore IAP should be used to unlock features; don't roll your own license mechanism"

How to use another Apple ID to submit an already-online iOS app to the App Store?

My company had outsourced an iOS app to another company, and they published the app on the App Store using their Apple ID. The app have been available for download for a few months and has a number of users. Now my company developed a slightly newer version of the app and would like to distribute the app using our own Apple ID. What's the correct way to do it? The major concerns we have are:
Should we submit the newer version using our ID before or after we take the old app down from the App Store. Would it happen that the newer app get rejected because Apple feel the two apps are too similar? (Actually they are quite similar, for that the update is slim.)
Is there a graceful way to notify the currently online app's users that they should switch to the newer app? And How to coordinate it, since the newer app may take a certain amount of time to get approved.
Thanks.
There are some different scenarios here, I am going to try to address some of them to see which one helps you the most:
1-)You have a current application that contains no use of push notification and no use of in app purchase. This is the easiest one. Basically, It does not matter what version the user has had before. You can remove the old one from the previous developer account and add it to the new developer account. By completely removing the previous application (not just from the app store listing, but from the developer account), you can reuse the bundle ID. When the user reinstall the app, the user will be able to replace the old application with the new application (note that the new application will not appear on the user's update list).
2-)You have push notification. Here, you will have to keep the old application if you wish to maintain the push notification certificates, so, the new application will have to use a new bundle ID, which means that the app will appear on the user as a new application, and the user will be able to have both app simultaneously.
3-)You have in app purchase and subscriptions. You will need to remove the old in app purchase entries from the old developer account, and add it to the new account (if you wish to reuse the product id, if not, you will have to create it either way).
I am not sure what kind of measure you need to take if you are using iCloud and/or other services. Best course of action is to contact Apple developer support. They will give you some guidance on what to do with your specific case. Also, when submitting, make sure to point to the reviewer that you are trying to move the application from one company to another. I think they can access review notes from the review to the previous submission(instead of reviewing it as a new app), and speed up the process.
Edit: You can not transfer apps between companies using iTunes connect. More information here: link

iOS - transferring in-apps between apps

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.plist setting.
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.

InApp Purchase Clarification

I have an App that I want to have two version in the App store, one is the lite version and the other is a full version. I would like to have the lite version offered as free with the option to upgrade using InApp Purchase. The full version will be offered for a price.
For InApp purchases in my other apps, i used MKStoreKit to do the InApp Purchase of my non-consumable product (upgrade). For the lite version I am ok with that approach.
My question is, for the full version that will be available in the App store for a cost, do I need to use something like MKStoreKit, or can I just publish it and Apple handle the purchase because they know it costs to download?
Thanks
There is no reason why you should include MKStoreKit in the full version if it won't be using it.
You may want to build both apps from the same code base though (that's what I do for my own app, which like yours comes in a Freemium and Paid version), and have your XCode project build two targets, one for each. But even when doing so, you can exclude MKStoreKit in the full version and only include it in the freemium version.
You only need MKStoreKit if you're doing an in-app purchase. So for the app that is the paid version, you will not need it.
Going by your question, it seems you might think you can have an in app purchase that downloads the full version from the app store. This is not possible.
You need 2 seperate version and in the free one to keep it all locked down unless they have made the in app purchase to unlock it all. If it has 'free' or 'lite' in the app title, they'll still have this even after unlocking the full thing as the app itself won't change.

How to take my app off in the iphone appstore

I have an App in iphone appstore, it have both Lite and Full editions. Lite one have ad and limited features.
What I want to do is that I want to make the Full edition free and supported with Ads, so the lite one has no reason to exist, then I want to remove it from appstore. Or is there any method to merge these two apps into one? in that case my old users can all upgrade to the new full-featured all free app.
To remove your app from the App Store, you will have to uncheck all App Store territories under your App Summary > Rights and Pricing.
This will remove your app from sale.
You will not be able to 'join them together'. You will have to alter the code of your FULL version to support ads, and change the price. The in iTunes Connect, you can just remove the lite version from the App Store.
Since your new app will be free, current users can then just download the free app. As long as you do not change the Bundle ID, any saved user information will stay in tact upon updating.