Implement in-app purchase for existing iOS application - ios

I have an application that was made before in app purchase and we did two versions: free and paid. Now I want to move to one app with upgrade through app purchase.
I will implement the in-app purchase in the free version, so all next users that will upgrade, will use this feature.
What about old users that downloaded the paid version, how to get rid of the paid version without affecting existing users? Should I still update the paid version to have old users get the new features I added to my app?

Related

App Store Connect. Disable in-app purchases for new version of app

I have already released an application to the App Store. This current version contains an in-app purchase item to unlock premium features.
Now we made a new design for the app and want to release a new version of the app and this new build will not include any purchase options.
So now as you see I have two versions. First one provides in-app purchases and the second one doesn't.
How to disable in-app purchases for the second version of the app?
Just remove in-app-purchase related code from the new version so It will not affect existing in-app-purchase in the AppStore Connect. And do not delete your in-app-purchases from the AppStore Connect so it'll work for the older version.
In-app purchases are independent from app versions. You cannot enable/disable them in App Store Connect for specific versions. You will simply need to "hide" the purchase option directly in the app, if you want it to be available for older app versions.
If that is not the requirement, simply remove the in-app purchase from sale in App Store Connect.

iOS check if user purchased the app before or no

I have developed an iOS application that was a paid app and it was released on AppStore. Many users have purchased it and downloaded it from there.
Now we have changed it to be free with some paid features. The problem now is that the past users who have already purchased the app are asked to pay for these new paid features. It shouldn't happen since they already purchased the whole app before.
Moreover, if one of those old users removed the app before new release then installed the new free release, he will be asked to pay for these new features also.
Is there a way to know whether the current Apple account has purchased this app - using the App ID - before ?
If not, is there a way to check if this app was installed before on the device then removed ?

Pro and in-app version of the same app

We have in the AppStore a free app which has a PRO in-app purchase.
The in-app it's the usual appId of form com.our.appid.pro and purchasing it sets a boolean in userdefaults which enables or disables specific features in the app. It's all working fine.
However, I have the requirement to create a version which is PRO as soon as you download it from the AppStore. It would be equivalent to a free version with the in-app purchase already bought.
My question is, what is the most convenient way to do this ? Do I simply change the appid and force that boolean to YES for the purchased state and reupload it again as a different app ? I guess it cannot be done without having another app/appid ( that's why in-app purchases were implemented in the first place ... ).
Thanks
Yes, If you want to submit an app with fully featured app including the In App Purchase Functionality of your older version, then just change the bundle Id of your new app.
Make a new app on iTunes with a different app name and all features without In App Purchase for your those extra functionality of your older version.
Then you will be good to go.
Another option is that if you don't want to go for the PRO version of the app, then remove In App Purchase from your free version and increase the price tier of your free version and submit your app again without In App Purchase.
Hope this helps you.

In-app purchase - different versions

I would like to add an in-app purchase with downloadable content hosted on Apple servers to my app. This purchase with its content will be updated with every new version of the app. The updated purchase will work only with the latest app version. In this case the owner of the older version will be able to purchase and download the new version content. How can I resolve the issue?
I see that an array of SKDownload is available in SKPaymentTransaction. Does it mean that all in-app purchase versions will be available for the app? In this case it would be enough to download only the version compatible with the app.
Another variant is to link a purchase version to an app version. If they don't match the customer will be offered to update the app before purchasing.

in-app purchase theoretical procedure

i've searched around a similar question but i didn't found any, so:
I have an old iphone paid app on iStore (and a free/lite version with iAds banner), now i want to renew it, adding iPad version and other stuffs;
with this new version i'd like to set the app free, add in-app purchase to the paid app (and delete the lite version), adding iAd banner until user buy the in-app purchase item.
the problem is that an old user who paid for the old app and now download the new version will see the iAd banner (and of course i don't want this) and must pay again to avoid it.
Is there any way to check if a user of my new-version app is also an old user of the old-version app?
A partial solution i found out is to check a preference file that the old app saves in it's bundle documents folder, but that could work fine just in case the user has installed the old app on the device when he update my app, not in case he deleted from device (or installing to a new one)
Other solution could be to keep the lite version on iStore and add the inApp purchase only to that version, and let the full version with the current price, but doing so, the lite version after a user pay for inApp purchase item would become exactly equal to the piad app (and Apple may refuse this, and i don't like this solution too)
Any idea for this purpose, is there an easy way i have not seen?
thanks in advance
There is no way how to find out if the user paid for the app. The solution with the "bundle documents folder" is not good in my opinion, because once the user delete the app, he will not have available the premium version of the app again.
Similar questions:
Convert existing iOS paid app to freemium model with in-app purchase
Transition an existing paid for app to free version with In App Purchase
iPhone + upgrade existing paid application on app store to free application with In App purchase + what about the customers who have already purchased the paid application
I too had similar issues where I wanted to switch a paid app to free. There really isn't anyway to reliably check which user had already downloaded your app in the past. If you add iAds and they only disable through in-app purchase then it means it applies to everyone.
While writing this post I thought of one trick. Lets say you submit your app with iAd changes today to app store and it gets approved on 7/20/13. What you can do is upon app startup have a grace period code check i.e.
if (TodaysDate < 8/20/13)
{
//Make your NSUserdefaults to true. As if the user had purchased your in-app purchase. So don't show them any ads.
}
else
{
//Month has passed and hopefully most of your users who owned the app already had updated it by now
}
This way you have given your existing and any new users a month time (with no iAds). Any users who download the app after 8/20/13 will see your iAds and will have to pay in-app to disable them.
From my experience I have found that it's always advisable to keep your current users happy otherwise they will bomb your app rating with negative reviews. Which will show up under your latest app update.
Have you tried contacting developer support? https://developer.apple.com/support/
From what I know to be true you can't tell if they have previously bought the app without invading their privacy.

Resources