Is restore button necessary for Auto-renewable subscriptions? - ios

Exactly the same question as
this one:
I understand that restore button is necessary so when user upgrades the phone, the user is able to get back the contents/services subscribed earlier.
In our application we require users to login. Once they login, they have to subscribe to use the services of the application. From user's credentials we are keeping track that which users are still subscribed to our application. So when user changes the phone and logs in with his/her credentials there is no need for a restore button as we will verify at the time of login if this user is subscribed to our services or not.
From the forums and developer documents, its evident that I have to add a restore button but whats the sense here and where should I place the restore button as when the user logs in to a new device, he/she is already able to use the app with subscription?
Thanks.

We went for auto-renewable subscriptions in our application WITHOUT restore button and the application got accepted. All we did was, we presented a good case in the Review Notes specifying why we don't need a restore button whilst submitting the application and that was it.

If you are using Auto-renewing subscription you don't keep the "Restore" button Apple will reject your application .
If User has purchased a product .Then that purchase is made to the apple id not by the user id.
After login you can keep the Restore button.

Related

How is the right way to restore Inapppurchases of non-consumable products in combination with server?

This is a question to understand a basic procedure.
Apple says in his Guidelines that you have to add a restore button to your app.
this makes sense if the user, for example, uninstalled the app.
In my case, the users have to log in before they buy. For this the app asks for my server with ajax. When logged in, the user have the option of purchasing a non-consumable product.
If the purchase was successful, the product will be unlocked on my server and the user will have access.
Now I wonder what the restore button should do. if the user uninstalls the app, he can login normally, because my server knows that the product has already been purchased.
it is only problematic if something goes wrong between purchase and transfer to my server. then the information of the successful purchase is missing on my server.
But if you would give the user the option to restore the product on my server after the login, then you could unlock an unlimited number of accounts with this device.
So my question is: how is the right way for restoring in combination with a server?

Mechanism of apple in-app Purchase need a restored button?

After reading Apple's terms with my average English I understand that all application who sell non-consumable item need to use the IAP and insert a "restored button" if not the application is rejected by apple.
My user need to be connected to an account to play in my game and the IAP is attached to his account. And the non-consumable item is a money that he can spend. So I can't add a "restore button"...
So my question is, compared to my project do I really have to install a restore button? And if yes, how?
Update
I found my answer :
Apple documentation
So I don't need a restored button because I've sell consumable item.
The simplest solution is to look, how other similar apps work.
Add a restore button somewhere in settings. User taps the restore button.
If user is logged in, then his balance is automatically restored from the account on your server and you just tell him, that his balance is restored.
If he is not logged in, you should tell him, that he should login to restore his balance and then show him a login view.
All this should be reproducable by AppStore's app tester.

In-App Purchase: "Restore Purchases" button on user-bound purchase

I'm currently implementing In-App Purchases in my Swift app. The product is a non-consumable one which activates a kind of Premium version for the user. Usually, with non-consumable purchases, you have to put a "Restore Purchases" button in your app (mandatory). However, my problem with this is: The app, and therefore the purchase, is user-bound. So every user of the app has to register an account with us. As soon as an user purchases the IAP, the user account gets flagged as Premium internally on our server. Once he logs out and logs into another account for example, the purchase gets "deactivated" as during the login process the app gets info from the server whether the user is Premium or not.
So basically, if I'd put a "Restore Purchase" button in my app it would either be kind of useless as the purchase gets activated anyways as soon as the user logs in, or the button would make it possible for someone to purchase the Premium version once and then activate it on an unlimited number of other accounts, too, simply by logging into them and "restoring purchases".
So, question is: Is this button mandatory in my case? I've seen other apps, especially subscription-based ones do this, too.
If you don't implement restore button for your in-app purchase implementation, Apple will reject your app.
Their idea is if any iTunes user has paid for some content, he should be able to access the content on any device.
How you are using the receipt and allowing the user that's up to you.

iOS:InApp Purchase: Best way to show restore button

Is "Restore Purchase" button mandatory for iOS App submission. I have included Auto-renewable purchase in my application. I am showing the purchase screen First then only user can use my application.
if "Restore Purchase" button is mandatory, I need to show that button when it is required right?. so Is there any way to find out when "Restore Purchase" button should show?
Or else , can we show "Restore Purchase" button without considering whether user already purchased or not
FYI,
I tried to get the receipt from the Bundle.main.appStoreReceiptURL.
Then I tried to verify the receipt. If It is successfully verified, I
know the user has purchased or else I will show the purchase screen
Is it correct?
can we show "Restore Purchase" button without considering whether user already purchased or not
The whole point of the Restore Purchase button is that you are in a situation where you don't know whether the user has purchased. Only the Store knows that, and you have to let the user communicate with the Store through your app.
So, if you know that the user has purchased, fine, you know it, and there is no need for a purchase dialog / offer or a Restore button. But if you don't know it, then you know nothing. Any time you offer the user a chance at a purchase, you must offer a Restore button as well.
When user had purchased your app earlier and due to some reason he/she has uninstalled from his/her device or he/she wants to install in some other device with same apple ID(In order to enjoy purchased benefits). Over here, restore button comes into picture. Whenever we install an app from appstore, sometimes purchase verification get fail and app show itself in a normal form so overcome this situation(or any other where purchase has failed and user feels that it is being purchased), apple has asked the developer(you can see this thing in their documentation also) to provide a restore button.
Now coming to your point
"I tried to get the receipt from the Bundle.main.appStoreReceiptURL. Then I tried to verify the receipt. If It is successfully verified, I know the user has purchased or else I will show the purchase screen"
As long as you are taking the receipt data from this URL(appStoreReceiptURL) and verifying it correctly(hope you are verifying it from the apple server) everything else is fine. On the basis of that you can show or hide the restore button.

how to know if user upgraded the device or using the app in new device?

How the app will know if user has new device. Apple rejected the build due to missing restore button, but my question is how will i know when to show restore button to user. Because in app done through itunes account on device,
1st scenario:
1.So, now if user login in app made inapp purchase, that user registered with transaction id on app's api backend.
Now, user logged out from app, and made login from different account.
Question: Will that user also subscribed in app because itunes account is same in device.
2nd scenario:
if user installed the app on new device.
Logged in via same account for whom subscription purchased earlier.
when user login, api will tell that user is subscribed already so the exclusive content shown already so what is the purpose of restore button how to use it?
3r scenario:
if user installed the app on new device.
Logged in via different account not for whom subscription purchased earlier.
when user login, api will tell that user is unsubscribed.
so, in that case will the user be able to make restore purchase because the itunes account is still same from inapp subscription done earlier.
Please guide. Any help would be appreciated.
Thanks in advance.

Resources