ReduceChurn offer sells a product, Encore asks your game to buy it through an IEncorePurchaseController you pass to Configure(). Encore decides when; your code buys it, through your own store or billing library. Encore owns the sheet, the analytics, and the attribution around the call. A reward placement never asks for a purchase.
Definition
- A throw is a failed purchase, never a cancelled one. So are a faulted task, a null task, and a result the package doesn’t know.
- The controller lives for the process.
Configuretakes it once; a secondConfigureis ignored.
PurchaseRequest
Example
Implement the controller over your own billing code:GamePurchases.cs
MyStore stands for your own billing code, such as Unity IAP or RevenueCat. Then pass the controller to Configure in place of the plain call, and show a Reduce Churn placement:
Notes
- Android: the sheet draws in your game’s own window, so Unity keeps running and your controller is called while the sheet is open. If your game sets
com.encorekit.offerSheetInHostWindowtofalsein its manifest, the sheet opens as its own Activity, Unity pauses, and a purchase runs only after the sheet closes. - WebGL: the web SDK sells nothing, so Encore never calls the controller.