Skip to main content

Overview

You still pick the product in App Store Connect and the Encore Dashboard exactly as in Add Subscription Product. What changes with Adapty is which billing code your EncorePurchaseController calls and how Adapty learns about the purchase. Adapty ships no paywall component, so Presenting Offers needs no change: call show() from your own UI.

Add the product to Adapty first

Creating the product in App Store Connect is not enough. Adapty keeps its own product catalog, and the mapping from a product to an access level lives there rather than in the store.
1

Connect the store product

In the Adapty dashboard, add the product and connect it to the existing App Store product. This requires your App Store credentials to be connected, and it is a manual step per product.
2

Give it an access level

Assign the access level the product should unlock, from the Access level ID list. Adapty makes this mandatory: the field is marked required, and the form refuses to save a product without one.
Adapty is stricter here than the other managers, in your favour. Because the access level is required at creation, you cannot end up with a purchasable product that grants nothing. And a product Adapty does not know about never reaches makePurchase(), so you get Code-1000 noProductIDsFound on your first test purchase rather than a support ticket months later.
Access levels only grant access in the first mode below. If you run Adapty in observer mode, as the second mode does, Adapty does not respond to purchase events to grant or restrict paid access. Its own comparison table marks that unavailable in observer mode, and states: “You are tasked with managing access to the paid content in their app.” Register the product either way, because otherwise the transaction is missing from your analytics, but gate your paid features on your own logic rather than on an Adapty access level.

Route the purchase through Adapty

Have your controller purchase through Adapty. Encore hands it the configured product id and Adapty performs the purchase, so a product you added in the preceding steps updates its access levels the way any other Adapty sale does:

Or purchase with StoreKit 2 and report to Adapty

Alternatively, purchase through StoreKit 2 in your controller and report the transaction to Adapty from the same place. Adapty does not detect StoreKit 2 transactions on its own, so run it in observer mode:
Adapty 3.3 and later require an explicit reportTransaction() call for StoreKit 2 transactions in observer mode.
Observer mode is analytics only. Adapty does not grant or restrict paid access from a reported transaction, so your app owns that decision: gate your paid features on your own state, not on an Adapty access level. Report every transaction anyway, because Adapty’s documentation warns that without reportTransaction it “won’t recognize the transaction, it won’t appear in analytics, and it won’t be sent to integrations.”

Next