Registers a handler invoked for all not-granted outcomes — when the user dismisses the offer or no offers are available. This signals “Encore didn’t result in a purchase — run your original button logic.”
Set onPassthrough before calling placement().show(). If not set, the SDK will log a warning.
Signature
fun onPassthrough(
handler: (placementId: String) -> Unit
): Encore
Parameters
| Name | Type | Description |
|---|
handler | (String) -> Unit | Callback receiving the placementId. Execute your original button logic here. |
Returns
Returns the Encore instance for chaining.
Usage
Cancel flow passthrough
Encore.shared.onPassthrough { placementId ->
// Encore didn't intercept — proceed with original action
when (placementId) {
"cancel_flow" -> proceedWithCancellation()
"downgrade_flow" -> proceedWithDowngrade()
else -> Log.d("Encore", "Passthrough for $placementId")
}
}
Chained with onPurchaseRequest
Encore.shared
.onPurchaseRequest { productId, placementId ->
billingManager.purchase(productId)
}
.onPassthrough { placementId ->
router.handleOriginalAction(placementId)
}
Use onPassthrough to ensure your original button logic still runs when Encore doesn’t intercept. For example, if a user taps “Cancel Subscription” and Encore has no offers, the passthrough handler lets you proceed with the cancellation flow.