checking IAP receipt data during launch of the App

Hi Community,


I am coming to you to ask for advice regarding a part of our App that fails to pass the review process.

I was wondering if you could give me some advices.


Here is what I want to do:

check if the IAP (non-consumable) has not been canceled before letting the user access a particular content.


Here is what I did:

request a fresh receipt data and validate each IAP in the receipt once per application launch.


What I noticed during development, is that we are asked for iTunes Store credentials during that process, but because it's a test environment, (even for TestFlight) I didn't put more thoughts into it.


The review team provided a screen-shot as attachment with the credentials popup so we think it's something we need to fix.

Though they never told us explicitly to fix that part of our app. So I am doing a big guess here.


If automatic receipt checking is not conceivable, what other options do we have?

We really want to ensure the user has the right to access our content.


Thank you for your time, any input will greatly be appreciated.

Replies

>part of our App that fails to pass the review process

>I am doing a big guess here


Might help to describe the fail, including any related comments from the review team in the rejection in the chance someone here can help decipher.

When you try to refresh the receipt the system will ask the user to log into their iTunes account to authenticate themselves. The problem that App Review may be having is that the user will be surprised by this sudden request to log in. A better approach is to allow the user to launch the app and use those features that do not require the IAP. Then when the user tries to use those features that require the IAP you show a screen that says something like........"To use this feature you must first re-authenticate your purchase of the IAP. Do you want to do that now? tap - YES or tap-NOT NOW." If the user taps "YES" then refresh the reciept. App Review may accept this approach. You might add in your notes that you are doing this to assure that the IAP has not been canceled AND that the user is actually that person who bought the IAP and not someone else.


But - IAPs are rarely cancelled. Subscriptions are ended, but IAPs rarely cancelled.

Thank you for your answer.


Our application only runs if at least one IAP is purchased.

I'll explain a bit more what our App is all about to understand the problem better.


We have a web service we want to deliver, but not for free, because we present data in specific ways that is only available to users using our App.

A part of our service online if free to access from a simple browser.

Our online service is a daily ranking of horoscope signs.


We first thought of doing one App per sign (Tier 1 price) but it has been rejected because too similar content in different Apps is not allowed.


Then we made one App (Tier 1) that allows users to select the first dusaply pack for free (free IAP, non-consumable), then next items are Tier 1.


It has been rejected as well because it seems misleading and difficult to understand for the user.

This specific part has been discussed with Apple on the phone so we decided to change for the third approach.


We now want to deliver the App for free, and all 12 sign display packs are Tier 1.

Once user purchased a pack, they can view the related data in a web view.

But we want to check for IAP cancellation so users can't cheat the App.


Your proposition of having a message explaining the situation to the user is a good point that we should implement.

The problem is if the user doesn't activate any display pack, there is nothing to see in our App, we will think about that.


I also hear that cancellations are rare and nobody doesn't really worry about it (also on SO threads etc...) but we wanted to see how far we can control the use of our App (limiting misuse of our App as much as possible).

So basically, there is no way to check IAPs history without that login popup?


I know about the restore button, but it's not exactly how we want our app to work.

And we can do the same with the receipt data, even after re-installing the App, all the items are restored automatically, we were looking for such functionality.

If we use the restore purchases approach (the specific API method, can't recall the name right now), I think the user will get asked to login as well, isn't it?


Thank you for your time.

Yes, the method restoreCompletedTransactions will trigger a loggin request to the user.


I believe the App Store does not approve apps that don't functional, at least minimally, without an IAP purchase. You might have trouble with:

"The problem is if the user doesn't activate any display pack, there is nothing to see in our App"

Get your app to do something - at the very least give explanations of what can be accomplished if they purchase an IAP. And of course, your app functions pre-IAP in that it offers the IAPs to the user.