You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: versioned_docs/version-3.0/android-handling-events.md
+58-1Lines changed: 58 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -173,7 +173,7 @@ The method will not be invoked in Observer mode. Refer to the [Android - Present
173
173
174
174
#### Failed purchase
175
175
176
-
If purchase fails, this method will be invoked:
176
+
If a purchase fails due to an error, this method will be invoked. This includes Google Play Billing errors (payment restrictions, invalid products, network failures), transaction verification failures, and system errors. Note that user cancellations trigger `onPurchaseFinished` with a cancelled result instead, and pending payments do not trigger this method.
177
177
178
178
```kotlin showLineNumbers title="Kotlin"
179
179
publicoverridefunonPurchaseFailure(
@@ -209,6 +209,63 @@ public override fun onPurchaseFailure(
209
209
210
210
The method will not be invoked in Observer mode. Refer to the [Android - Present Paywall Builder paywalls in Observer mode](android-present-paywall-builder-paywalls-in-observer-mode) topic for details.
211
211
212
+
#### Finished web payment navigation
213
+
214
+
This method is invoked after an attempt to open a [web paywall](web-paywall.md) for a specific product. This includes both successful and failed navigation attempts:
Copy file name to clipboardExpand all lines: versioned_docs/version-3.0/autopilot.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -65,7 +65,7 @@ If the analysis doesn't start, it may be due to one of the following reasons:
65
65
- Your top-performing paywall has two or more products with the same period.
66
66
:::
67
67
68
-
2.We automatically detect your top-performing placement based on revenue data. If you'd like to analyze a different placement, select one from the **Placement** dropdown. Then, click **Analyze this placement**. After that, Adapty will need some time to analyze your app, but don't leave the page – it won't take long.
68
+
2.Adapty automaticaly selects the top-performing placement based on revenue data. If you'd like to analyze a different placement, select one from the **Placement** dropdown. Then, click **Analyze this placement**. After that, Adapty will need some time to analyze your app, but don't leave the page – it won't take long.
@@ -77,12 +77,12 @@ If the analysis doesn't start, it may be due to one of the following reasons:
77
77
/>
78
78
</Zoom>
79
79
80
-
3.At this stage, we will detect your top-performing paywall. Review the paywall information and click **Proceed to competitors research**.
80
+
3.Adapty automatically selects the top-performing live paywall for analysis. If you wish to analyze a different paywall, click the **Change Paywall** button, and pick another option. You can only select a paywall added to the placement from the previous step.
81
81
82
-
Note that we select your top-performing paywall only among **live** paywalls. If your successful paywall is not added to any placement currently, it won't be considered.
82
+
Review the paywall data: products, conversion metrics, the revenue distribution chart. When you're ready to proceed to the next step, click **Go to competitors research**.
border: '1px solid #727272', /* border width and color */
88
88
width: '700px', /* image width */
@@ -92,10 +92,10 @@ If the analysis doesn't start, it may be due to one of the following reasons:
92
92
/>
93
93
</Zoom>
94
94
95
-
4. Confirm your competitors we've detected, or add some manually using their links from the App Store. Then, click **Generate report**.
96
-
97
-
We recommend focusing on apps with higher MRR that you have.
95
+
4. Adapty suggests a list of up to 5 competitors for analysis. They are chosen based on your app's category and MRR. You can modify the list, and manually add applications with an App Store link. We recommend selecting apps with higher MRR than yours.
98
96
97
+
Click **Generate report** to confirm the list of competitors.
@@ -139,7 +139,7 @@ If the analysis doesn't start, it may be due to one of the following reasons:
139
139
140
140
Once your recommendations are ready, it’s time to put them into action.
141
141
142
-
Your plan consists of three parts: setting new prices, updating paywalls, and conducting A/B tests with them. After each round, the winning strategy will advance to the next round. The winner of the final round will be your most efficient pricing option. Based on our estimates, completing the entire test cycle could increase your revenue by up to 80%.
142
+
Your plan consists of several parts that include setting new prices, updating paywalls, and conducting A/B tests with them. After each round, the winning strategy will advance to the next round. The winner of the final round will be your most efficient pricing option. Based on our estimates, completing the entire test cycle could increase your revenue by up to 80%.
143
143
144
144
To start with the first stage:
145
145
@@ -177,4 +177,4 @@ For a detailed look at how Autopilot analyzes your growth strategy and which dat
|**onCustomAction**|If a user performs some custom action, e.g. clicks a [custom button](paywall-buttons), this method will be invoked.|
249
-
|**onUrlPress**|If a user clicks a URL in your paywall, this method will be invoked.|
250
-
|**onAndroidSystemBack**|If a user taps the system Android **Back** button, this method will be invoked.|
251
-
|**onCloseButtonPress**|If the close button is visible and a user taps it, this method will be invoked. It is recommended to dismiss the paywall screen in this handler. |
252
-
|**onPurchaseCompleted**|If the purchase succeeds, the user cancels their purchase, or the purchase appears to be pending, this method will be invoked. In case of a successful purchase, it will provide an updated `AdaptyProfile`. |
253
-
|**onPurchaseStarted**|If a user taps the "Purchase" action button to start the purchase process, this method will be invoked.|
254
-
|**onPurchaseCancelled**|If a user initiates the purchase process and manually interrupts it, this method will be invoked. |
255
-
|**onPurchaseFailed**|If the purchase process fails, this method will be invoked and provide `AdaptyError`. |
256
-
|**onRestoreStarted**|If a user starts a purchase restoration, this method will be invoked.|
257
-
|**onRestoreCompleted**|If a user's purchase restoration succeeds, this method will be invoked and provide an updated `AdaptyProfile`. It is recommended to dismiss the screen if the user has the required `accessLevel`. Refer to the [Subscription status](capacitor-listen-subscription-changes) topic to learn how to check it. |
258
-
|**onRestoreFailed**|If the restoring process fails, this method will be invoked and will provide `AdaptyError`.|
259
-
|**onProductSelected**|When any product in the paywall view is selected, this method will be invoked, so that you can monitor what the user selects before the purchase. |
260
-
|**onRenderingFailed**|If an error occurs during view rendering, this method will be invoked and provide`AdaptyError`. Such errors should not occur, so if you come across one, please let us know. |
261
-
|**onLoadingProductsFailed**| If you haven't set `prefetchProducts: true` in view creation, AdaptyUI will retrieve the necessary objects from the server by itself. If this operation fails, this method will be invoked and provide `AdaptyError`.|
248
+
|**onCustomAction**|Invoked when a user performs a custom action, e.g., clicks a [custom button](paywall-buttons). |
249
+
|**onUrlPress**|Invoked when a user clicks a URL in your paywall. |
250
+
|**onAndroidSystemBack**|Invoked when a user taps the system Android **Back** button. |
251
+
|**onCloseButtonPress**|Invoked when the close button is visible and a user taps it. It is recommended to dismiss the paywall screen in this handler.|
252
+
|**onPurchaseCompleted**|Invoked when the purchase completes, whether successful, cancelled by user, or pending approval. In case of a successful purchase, it provides an updated `AdaptyProfile`. User cancellations and pending payments (e.g., parental approval required) trigger this event, not `onPurchaseFailed`.|
253
+
|**onPurchaseStarted**|Invoked when a user taps the "Purchase" action button to start the purchase process. |
254
+
|**onPurchaseCancelled**|Invoked when a user initiates the purchase process and manually interrupts it (cancels the payment dialog).|
255
+
|**onPurchaseFailed**|Invoked when a purchase fails due to errors (e.g., payment restrictions, invalid products, network failures, transaction verification failures). Not invoked for user cancellations or pending payments, which trigger `onPurchaseCompleted` instead.|
256
+
|**onRestoreStarted**|Invoked when a user starts a purchase restoration process. |
257
+
|**onRestoreCompleted**|Invoked when purchase restoration succeedsand provides an updated `AdaptyProfile`. It is recommended to dismiss the screen if the user has the required `accessLevel`. Refer to the [Subscription status](capacitor-listen-subscription-changes) topic to learn how to check it.|
258
+
|**onRestoreFailed**|Invoked when the restore process fails and provides `AdaptyError`. |
259
+
|**onProductSelected**|Invoked when any product in the paywall view is selected, allowing you to monitor what the user selects before the purchase.|
260
+
|**onRenderingFailed**|Invoked when an error occurs during view renderingand provides`AdaptyError`. Such errors should not occur, so if you come across one, please let us know.|
261
+
|**onLoadingProductsFailed**|Invoked when product loading fails and provides `AdaptyError`. If you haven't set `prefetchProducts: true` in view creation, AdaptyUI will retrieve the necessary objects from the server by itself. |
Copy file name to clipboardExpand all lines: versioned_docs/version-3.0/flutter-handle-paywall-actions.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,11 @@ This guide shows how to handle custom and pre-existing actions in your code.
25
25
To add a button that will close your paywall:
26
26
27
27
1. In the paywall builder, add a button and assign it the **Close** action.
28
-
2. In your app code, implement a handler for the `close` action that dismisses the paywall.
28
+
2. In your app code, implement a handler for the `CloseAction` and `AndroidSystemBackAction` actions.
29
+
30
+
:::info
31
+
In the Flutter SDK, the `CloseAction` and `AndroidSystemBackAction` actions trigger closing the paywall by default. However, you can override this behavior in your code if needed. For example, closing one paywall might trigger opening another.
0 commit comments