New Apple InApp-Purchases in iOS 11...

We should be good to go if I understood everything correctly.

We of course will have to test it once iOS 11 goes live.

Rob

Any news yet about this and will there be a sample on how to implement the new stuff?

There really are no changes you have to make. If someone buys something through the App Store, when your app starts it will receive queued up transactions.  You should init the store.* API’s as soon as you can and be prepared to handle transactions.

But there are no new API calls you need to make. As long as you can process purchase transactions you should be good to go.

Rob

I have the store init only when the user is in the app pushing a button… so would this mean I should do a store init best in main.lua right at the start then, so the user has to log in with his AppleID at the start of the game?

This can be annoying with educational apps… everytime the game starts the login is appearing then. Or did I get this totally wrong?

I don’t believe store.* generates a login event when it’s .init() calls. You shouldn’t get prompted until you do something like purchase an item.  I’m unsure about loadProducts() but that can be deferred until needed.

Rob

Just to make sure we implement this correctly:

With the new iOS11 a user can “buy” an app  by clicking on promoted InApp Purchases in the App Store. So for example: He clicks on an InApp Purchase, then the app get’s downloaded. When the download is finished the app is started and a purchase with the purchase ID is queued, so I have to look at the start of the app for an existing transaction (with the transaction listener). This means: I init the store at start, then check for the purchase right at the beginning and unlock it if it is there. Correct?

UPDATE: Normally when a product (non-consumable) is purchased from inside the app we have to call the store.purchase()… so does this mean the app starts and the store.purchase call is queued already? How is this handled correctly?

Can I also do a store.restore() parallel to that at start?

Basically, its like store.purchase() is called for you.

Rob

The thing which got me confused is: normally you have to do store.init() first before the store.purchase is working.

Thx!

I don’t know the full underlying mechanics but yes, you have to call store.init(). This will set up a delegate on the native side that in addition to processing your store.purchase() and store.restore() calls, it listens for transactions not originated in your app and sends them to your transaction listener function just as if the user had purchased it from inside your app.

Basically, if your app can take a purchased event, enable it, you shouldn’t need to do anything more than call store.init(), set up your transaction handling function and then sit back and process transactions as they happen.

Rob

The new update for the app is now available. We have included 2 new InApp products, but on the App Store it only lists one InApp-purchase… the one which was in the version before the update.

And the new InApp options (https://developer.apple.com/app-store/promoting-in-app-purchases/) are NOT shown and not visible in the store also!

Has anybody here implemented the new InApp purchases in an app or game which can be promoted in the App Store? What did we miss?

And when adding new InApp-purchases to exisiting ones with an app update is there something to think about? Maybe we missed something here!?

Thx for your help!
 

With a new game we have uploaded a binary for testing and when accessing the App Store Promotion part in itunes connect we get the following message in itunes connect:

These in-app purchases can’t be promoted on the App Store because your latest app binary doesn’t include the SKPaymentTransactionObserver method.

Does anybody know if this will disappear once the binary is submitted for review? Is this message normal? We are accessing the store right from the beginning in the game and we don’t know what else there is to do!?

What version of Corona are you using?

Rob

Follow up question.  I just had an app rejection:

"Hello,

Thank you for your response.

To clarify, when the user taps a promoted in-app purchase product on the App Store, the in-app purchase flow within the app is not behind a parental gate.

Please ensure that parental gate is available when users initiate the IAP, even from promoted in-app purchase product on the App Store."

My app is in the kids category and requires a parental gate for IAPs.  When it is tapped from the app store promoted IAP, it goes into the app and asks to make the purchase.  I some how need to have a parental gate with this.  Is it possible?