I have developed an app which is submitted to app store already and also approved. But I have following questions in my mind.
Currently my app is free. But my client wants to make it paid after
2 months. I did not set pricing information because not yet
confirmed which tier want to select. So my question is if I set
pricing information after some days of my app approval, does app
will go for review again? Changing pricing information needs
approval?
Suppose one of the user downloaded app on his device when app is
free. Client changed pricing details and now app is not free. Now my
question is how that user will do payment procedure. Does apple
handle this scenario?
Currently my app is free. But my client wants to make it paid after 2 months. I did not set pricing information because not yet confirmed which tier want to select. So my question is
if I set pricing information after some days of my app approval, does app will go for review again? Changing pricing information needs approval ?.
NO. Unless you make some changes in your app and you want to upload a new version or something. Just a price change doesn't required a reapproval
Suppose one of the user downloaded app on his device when app is
free. Client changed pricing details and now app is not free. Now my question is how that user will do payment procedure. Does apple handle this scenario ?.
No apple won't handle this scenario. They'll continue to use it as free. Apple says App you once buy/download is yours. And all the updates which comes later are free.
Below are answers of your question.
No, your app will not go to review again for price change. Your app simply become paid app.
If user has downloaded your app when it was free, then he/she can use your app all the time. Even if after 2 months, if you make your app as paid, then existing users need not to pay for that, because they have already downloaded app when it was free. Only new user has to paid to download app.
Hope, you got an idea of your question.
Cheers!
No, changing price doesn't require another review
Once the app is downloaded the user has it they do not pay again.
Related
We have a paid iOS application in the AppStore currently. We are planning to convert it to a free application with in-app purchases. We would want to make the in-app purchases free to the users who have already paid for the application in the previous version. I think this can be done via App Receipt Validation. But will the receipt get updated once the application is converted from paid to free and will the purchase details get lost?
If you convert your app from paid to free, you are still able to inspect the receipt and see which version was originally downloaded and act accordingly.
When we did this in one of our titles, we implemented a three tier system:
We bumped the version of the save file. Any time we promoted from a save file with version <= X (where X is the last one that was on the premium version) we would award the appropriate IAPs (in our case we gave them a coin doubler, an ad disabler and a chunk of coins). You should use this simple mechanism for the majority of the users because receipt checking can require an internet connection, and your users might not be online the first time they boot after an update.
We had a 'restore IAP' button. You need this anyway on iOS if you have any non-consumable IAPs, but we additionally added a check of the App Store receipt which lets you discover whether or not the user originally paid for the game. Here's the tutorial we based our code on, we chose the easy way, but you might need to weigh that up against piracy concerns.
Our reimbursement system also checks a file that we host, which can give out extra coins/doubler unlocks/ad removers. If the receipt checking failed (we supported pre-iOS 7 so we couldn't rely on receipt checking APIs) then we could reimburse users that way if they contacted us. This is a good idea anyway, with luck you'll have a lot more users after you go free, which means more people who will discover some progress-losing bug in your app - it's good to be able to give them stuff in return.
Edit: I'd also recommend keeping track of the user's category in the save file. So, you might have 'free' users who have never paid anything, 'paid' users who downloaded for free but have bought some IAPs, 'premium' users who bought your app when it was paid, and 'premium+' users who bought your app when it was paid AND have since bought IAPs. Even if you don't need this info immediately, it's worth tracking for analytics and so that you can reward your old premium customers with free content in the future if you decide to do so.
I have Freemium apps in the AppStore. Originally it was Paid but I wanted to see if Freemium versions make any difference in Downloads and Sales. It did make difference - number of downloads increased by 10 times but number of purchases reduced by 2 times. So Freemium modal didn't work for me. I want to change back to Paid.
I do not want to create other versions of the Apps as I have really good reviews on all Apps which I don't want to miss. Can someone please help me if it is possible to convert my Apps to Paid and do not allow people to use full functionality who has already downloaded apps but haven't paid?
I will somehow need to detect they have been using old app and not paid. I can do it by releasing an update that store key in the Keychain but I don't understand hoe would those users be able to pay at all as Apple doesn't charge for the App as it is already downloaded in the past, and they won't be able to use full features as they downloaded freemium app....arghhhhh!!! Not sure if this is even possible but want to hear some of yours thought.
I believe paid upgrades are not possible, you will lose profit and you can't do anything about it unless you are willing to create a new app to replace the old one. The move from paid to fremium is a permanent one, you cannot force existing users to pay after the app is free.
It is possible to move back to Paid, without giving the previous Freemium users the full version.
To do this, you have to:
Know the last version of your app that was Paid
Check the user's purchase receipt (refresh receipt if necessary from Apple)
Know whether the user has made any in-app purchases during the Freemium period (e.g. every time the user upgraded, you added an 'Upgraded' item to their keychain)
Switch to Paid
If you have this information, you go ahead and switch your app back to Paid and:
Check whether they have made any in-app purchases (via e.g. their keychain 'Upgraded' flag). If they have, give them the functionality - easy. If they haven't then go to the next step.
Check the user receipt to see what version/date of the app they first downloaded. If it is during the Paid period, upgrade them to full version. If it is not, and the user has not made an in-app purchase, keep them at Freemium.
Disadvantages
There are 2 disadvantages I can see with this approach:
Any user that downloads the app after Freemium will need access to the Internet for you to confirm their receipt. This means the user might download the full version, then at a later time when they are not connected to the Internet, open the app only to find that they have to Upgrade. Of course once they connect to the Internet and their receipt is validated, they will be upgraded, but in the meantime you might get some bad reviews and angry customers.
Your app will now be a Paid app that has In-App purchases. This may confuse users thinking that if they buy your app, they will have to further upgrade via in-app purchases... and put them off.
Of course the advantage is that your Freemium users will stay freemium :)
I have done this myself, and had no problems with the process.
I am looking to start selling an app on the Apple app store however currently the app uses our own servers to generate a license to the customer once they have purchased it. How can our existing licensing system which uses our own servers be implemented if a customer purchases the app from the App Store instead?
The application license will be a yearly renewable one. Therefore, so far, from what I have read, the app on the App Store could just come with an auto-renewal option (opt-out of course) so that would take care of the subscription cycle but how can our own server issue the customer the one year license which they could then renew from iTunes using the auto-renew function of the App Store?
I am sorry if this is not clear but it would go like this:
Customer downloads application from app store with a one year auto
renewal subscription.
Customer pays.
The app store verifies the
payment.
Once payment is verified it contacts our server to create a
license for that purchase and for one year.
That license is sent back
from our server to the purchased app to unlock the subscription.
Please correct me if my understanding on how this works is wrong but if anyone can point me in the right direction or give examples of how an application on the app store can successfully issue licenses from their own server then I would be very grateful.
As an example, look at "Aviation Exam". They let you buy subscriptions on-device as in-app purchases, or on their own website. In each case the details are synced to a user's account on their own server, so the same exam can be used from any device.
Look at the Apple documentation for how in-app purchase subscriptions work on iOS. Then your app can send details of a purchase to your servers, and download further information.
Edit; after discussion in comments:
If you want payment to go via Apple then it has to be via App Purchase or In-App Purchase. In-App Purchase specifically supports the idea of buying a subscription for a limited time. This is explained at the second link above.
If you want the user to create an account on your server you can either have a page in the app for them to input their details, or you can bring up a web page served from your website. Either way, the info can go to your server and it can create an account.
The key thing is, if payment went via Apple then inside the app is the only place you know this. The app can send this info to your server. You need some common identifier (i.e. a user-name) that is known to your server and to your user, then the user keys it in to your app and it can all be matched up.
There is nothing complicated here, to a decent software developer. All they need is an existence proof such as I gave at the top, and they can figure out how to link the info together.
Edit 2
Some tutorials for in-app purchase listed at: In-App purchase server model
Lots of low-level detail at: Verify receipt for in App purchase
If you prefer to handle payment yourself, not via Apple, then the situation is very different. Now, your own systems have to keep track of what has been bought, when subscriptions run out, etc. To begin with, the app won't know this at all. However, once you identify the user by having them enter credentials (username/password), you can fetch all the details from your back-end system to the app and proceed as above. Again, this is all visible in the example I gave at the beginning, which supports both Apple and non-Apple payments.
One thing to note: if you handle payment yourself then Apple isn't getting its 30% cut, which is the usual App Store commission, so they may not like this. The guidelines say:
11.1 Apps that unlock or enable additional features or functionality with mechanisms other than the App Store will be rejected
11.13 Apps that link to external mechanisms for purchases or subscriptions to be used in the App, such as a "buy" button that goes to a web site to purchase a digital book, will be rejected
That's pretty clear-cut, but since there are apps that rely on subscriptions or content purchased elsewhere, they don't seem to follow these rules in every case. Even the Amazon Kindle app was allowed back, once they took the 'buy' button off.
I have 2 application on appstore
Free app with in app purchase.
Paid app.
Now, I want to keep only one app on appstore from above options 1.Free app with in app purchase and remove the paid app. But here I want to give the app with full functionality to those user who used the paid app (Purchased the paid app).
Here my question is how can I merge these 2 app into single app which will be free and contains in app purchase by keeping the paid app user as it is ?
If anyone have any idea regarding this then please share.
Thanks in advance.
I solved my problem by using the icloud. First I provided the update to both the application by doing following changes.
I used "key value store" icloud option and stored some setting on icloud just need to make sure here "iCloud Key-Value Store" value in .entitlements file (which was automatically created by XCode) in both the application is same for both the application. The setting stored here is accessible to both application and depending on the setting I identified the user and gave access to specific functionality.
Under iOS7, you can use Receipt Validation. Receipt Validation offers you to see information about purchasing the app and in app purchases. If it returns date before you made the app free, that means that the user paid for the app.
This will work only under iOS7.
See Receipt Validation Programming Guide
I too am facing this issue with a couple of my apps. I'm still looking for a good solution, but I came up a less-than-ideal solution in the meantime. You can issue an update to your paid app that will connect to a database (on your web server) and insert a row with information about the purchase (AppleID, maybe some kind of digital receipt). Then in the free version with IAPs, the same database connection can be used to see if the owner of the free app already purchased the other app. Based off of that, you can unlock the IAPs. The only problem is that this is dependent on all previous customers updating to the latest version.
As mentioned, Receipt Validation would probably be more efficient, however this isn't backwards compatible. Good luck!
I'm assuming you're looking to merge the purchase history on Apple's servers; you can't merge the purchase data for two bundle IDs, you'll have to devise some way of having users persist their data on a server that you control. Update your app with a login and tie that login with the purchases as user has made.
The workflow would be something like this:
1) User logs in on paid app
2) User restores purchase history
3) Paid app saves restored purchase history to your server
4) User logs in on free app
5) Free app downloads all purchase data for the logged in user
Our app is moving from paid to free, and in the process, moving a key functionality from being included to activating via In-App purchase. Obviously, we don't want current users who paid for the app functionality to be charged again in the In-App purchase for functionality they already had. So on the update by the user, we want to 1) identify current users and 2) make it so they don't see the In-App purchase in the first place, sort of 'faking' the In-App purchase so that the app will appear to them exactly as it did before.
The app does not have a backend, so we have to determine current users from new by examining the saved user data fields for certain values. I do understand that if a previous user has deleted the app from their device that nothing can be done, and I don't mind charging them for the In-App purchase, since they never used the app anyway.
But for those current users who update and assuming we can examine the saved user data and determine that they are current users, what would be a good way to bypass the In-App purchase and make the app look like they already got it, when in fact they never paid for it? Thanks!
Here's what I would do - keep in mind this will take some time:
Set up a server (I prefer EC2) with mySQL on it. Plenty of tutorials about this.
Submit an update to your app that sends the user's UUID to your server.
Wait. This is the hardest part. You'll need to wait until satisfactory majority has updated to your app. That majority percentage is up to you to figure out. It could take months for this to happen.
Make your new, free, app send the UUID to the server.
Check to see if the UUID is in the DB.
If it is, set whatever you would have set when an in-app purchase was made to true.
You have several options:
Free in-app purchase for a limited time:
You would create a free tier in-app purchase content and release an update that somehow makes the user sign up for it. This way, when your user switches devices they can restore the purchase and regain the functionality.
Wait for a period so most people use the in-app purchase content
Change the tiers and release your app as free
Dual versions
Make a demo version of your app. Note this can be rejected by Apple.
Create a file in the filesystem
Make a file in the filesystem and save into iCloud. The app will check for the file and thats how you would determine if the user has paid for the app (or should buy the in-app purchase).
iCloud will synchronise the file between user's devices and it will make sure that whatever device the user uses the app will see the user as 'paid'.
I hope this helps, currently having this problem myself.