Skip to content

Commit

Permalink
Troubleshooting for paywalls load too long (clearing purchase history…
Browse files Browse the repository at this point in the history
… as a solution), brocken links
  • Loading branch information
Lutik-sun committed Oct 10, 2024
1 parent 9c9a743 commit bddfd43
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 8 deletions.
34 changes: 34 additions & 0 deletions versioned_docs/version-3.0/android-push-notifications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: "Push Notifications"
description: ""
metadataTitle: ""
---



import Zoom from 'react-medium-image-zoom';
import 'react-medium-image-zoom/dist/styles.css';

To send push notifications you have to enter Firebase Cloud Messaging \(FCM\) **server key** in Adapty dashboard. Open Firebase, choose the app you want to use, go to **Project Settings > Cloud Messaging**, and copy the server key. If you don't have one you can create it by clicking the Add server key button in the right top corner.

<Zoom>
<img src={require('./img/cleanshot-2020-09-25-at-14.34.29-2x.webp').default}
style={{
border: '1px solid #727272', /* border width and color */
width: '700px', /* image width */
display: 'block', /* for alignment */
margin: '0 auto' /* center alignment */
}}
/>
</Zoom>

<Zoom>
<img src={require('./img/cleanshot-2020-09-25-at-14.36.18-2x.webp').default}
style={{
border: '1px solid #727272', /* border width and color */
width: '700px', /* image width */
display: 'block', /* for alignment */
margin: '0 auto' /* center alignment */
}}
/>
</Zoom>
5 changes: 3 additions & 2 deletions versioned_docs/version-3.0/fallback-paywalls.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ A paywall is an in-app storefront where customers can see and purchase products
Adapty generates fallbacks as a JSON file in the necessary format, reflecting English versions of the paywalls you've configured in the Adapty Dashboard. To let your users see your fallback paywall:

1. Download the file from the Adapty Dashboard - one per app store and Adapty SDK version - as described below.
2. For iOS, Android, and React Native: Place it alongside your app on the user's device, and pass it to the `.setFallbackPaywalls` method. See detailed instructions for [iOS](ios-use-fallback-paywalls), [Android](android-use-fallback-paywalls), and [React Native](react-native-use-fallback-paywalls).
3. For Flutter and Unity: Pass the contents of the file (the JSON string itself) to the `.setFallbackPaywalls` method. See detailed instructions for [Flutter](flutter-use-fallback-paywalls) and [Unity](unity-use-fallback-paywalls).
2. For iOS, Android, and React Native: Place it alongside your app on the user's device, and pass it to the `.setFallbackPaywalls` method. See detailed instructions for [iOS](ios-use-fallback-paywalls), [Android](android-use-fallback-paywalls), and [React Native](/2.0/react-native-use-fallback-paywalls).
3. For Flutter and Unity: Pass the contents of the file (the JSON string itself) to the `.setFallbackPaywalls` method. See detailed instructions for [Flutter](/2.0/flutter-use-fallback-paywalls) and [Unity](/2.0/unity-use-fallback-paywalls).

## Download fallback paywalls as a file in the Adapty Dashboard

Expand All @@ -33,6 +33,7 @@ To download the JSON file with the fallback paywalls:
1. Open the **[Paywalls and Products](https://app.adapty.io/products)** section from the Adapty main menu, then select the **Products** tab or just the **[Placements](https://app.adapty.io/placements)** section in the Adapty main menu.



<Zoom>
<img src={require('./img/9c63367-placements.webp').default}
style={{
Expand Down
2 changes: 1 addition & 1 deletion versioned_docs/version-3.0/sdk-installation-android.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ Configurational options:
|---------|--------|-----------|
| **PUBLIC_SDK_KEY** | required | <p>The key you can find in the **Public SDK key** field of your app settings in Adapty: [**App settings**-> **General** tab -> **API keys** subsection](https://app.adapty.io/settings/general).</p><p>Make sure you use the **Public SDK key** for Adapty initialization, the **Secret key** should be used for [server-side API](getting-started-with-server-side-api) only.</p> |
| **observerMode** | optional | <p>A boolean value that controls [Observer mode](observer-vs-full-mode). Turn it on if you handle purchases and subscription status yourself and use Adapty for sending subscription events and analytics. The default value is `false`.</p><p></p><p>🚧 When running in Observer mode, Adapty SDK won't close any transactions, so make sure you're handling it.</p> |
| **customerUserId** | optional | An identifier of the user in your system. We send it in subscription and analytical events, to attribute events to the right profile. You can also find customers by `customerUserId` in the [**Profiles and Segments**](https://app.adapty.io/profiles/users) menu. If you don't have a user ID at the time of Adapty initialization, you can set it later using `.identify()` method. Read more in the [Identifying users](android-identifying-users) section. |
| **customerUserId** | optional | An identifier of the user in your system. We send it in subscription and analytical events, to attribute events to the right profile. You can also find customers by `customerUserId` in the [**Profiles and Segments**](https://app.adapty.io/profiles/users) menu. If you don't have a user ID at the time of Adapty initialization, you can set it later using `.identify()` method. Read more in the [Identifying users](identifying-users) section. |
| **IpAddressCollectionDisabled** | optional | <p>A boolean parameter. Set to `true` to disable the collection of the user IP address. The default value is `false`.</p><p>Parameter works with `AdaptyConfig.Builder` only.</p> |


Expand Down
2 changes: 1 addition & 1 deletion versioned_docs/version-3.0/sdk-installation-reactnative.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ Activation parameters:
|---------|--------|-----------|
| **PUBLIC_SDK_KEY** | required | <p>A Public SDK Key is the unique identifier used to integrate Adapty into your mobile app. You can copy it in the Adapty Dashboard: [**App settings** -> **General **tab -> **API Keys** section](https://app.adapty.io/settings/general).</p><p>**SDK keys** are unique for every app, so if you have multiple apps make sure you choose the right one.</p><p>Make sure you use the **Public SDK key** for the Adapty initialization, since the **Secret key** should be used for the [server-side API](getting-started-with-server-side-api) only.</p> |
| **observerMode** | optional | <p>A boolean value controlling [Observer mode](observer-vs-full-mode) . Turn it on if you handle purchases and subscription status yourself and use Adapty for sending subscription events and analytics. The default value is `false`.</p><p></p><p>🚧 When running in Observer mode, Adapty SDK won't close any transactions, so make sure you're handling it.</p> |
| **customerUserId** | optional | <p>An identifier of a user in your system. We send it with subscription and analytical events, so we can match events to the right user profile. You can also find customers using the `customerUserId` in the [Profiles](profiles-crm) section.</p><p></p><p>If you don't have a user ID when you start with Adapty, you can add it later using the `adapty.identify()` method. For more details, see the [Identifying users](react-native-identifying-users) section.</p> |
| **customerUserId** | optional | <p>An identifier of a user in your system. We send it with subscription and analytical events, so we can match events to the right user profile. You can also find customers using the `customerUserId` in the [Profiles](profiles-crm) section.</p><p></p><p>If you don't have a user ID when you start with Adapty, you can add it later using the `adapty.identify()` method. For more details, see the [Identifying users](identifying-users) section.</p> |
| **logLevel** | optional | A string parameter that makes Adapty record errors and other important information to help you understand what's happening. |
| **\_\_debugDeferActivation** | optional | A boolean parameter, that lets you delay SDK activation until your next Adapty call. This is intended solely for development purposes and **should not be used in production**. |
| **ipAddressCollectionDisabled** | optional | <p>Set to `true` to disable user IP address collection and sharing.</p><p>The default value is `false`.</p> |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ If you encounter transaction issues, please first make sure you have completed a
| No event is present in my testing profile | <p>A new user profile record is automatically created in Adapty in the following cases:</p><ul><li> When a user runs your app for the first time</li><li> When a user logs out of your app</li></ul><p>All transactions and events in a chain are tied to the profile that generated the first transaction. This helps keep the entire transaction history, including trial periods, subscription purchases, renewals, and more linked to the same profile. This means that a new profile record that generated a subsequent translation - we call it a non-original profile - may not have any events associated with it but will retain the granted access level. In some cases, you'll also see `access_level_updated` events here. It's advised to ignore these new, empty profiles and focus on the original ones for a clearer view of the user's transaction history.</p><p>This behavior is more prominent for testing scenarios but also normal for production. It should not be treated as a bug or SDK misconfiguration.In order to run the test with only one profile and have fun concise history in one place, create a new test account (Sandbox Apple ID) each time you reinstall the mobile app.</p><p>Please see an example of a non-original profile under the table. For more details on profile creation, please see [Profile record creation](profiles-crm#profile-record-creation).</p> |
| Prices do not reflect the actual prices set in App Store Connect | <p>In both Sandbox and TestFlight which uses the sandbox environment for in-app purchases, it's important to verify that the purchase flow functions correctly, rather than focusing on the accuracy of prices. It's worth noting that Apple's API can occasionally provide inaccurate data, particularly when different regions are configured for devices or accounts. And since the prices come directly from the Store and the Adapty backend does not affect purchase prices in any way, you can ignore any inaccuracy in prices during the testing of the purchases through Adapty.</p><p></p><p>Therefore, prioritize testing the purchase flow itself over the accuracy of prices to ensure it functions as intended.</p> |
| The transaction time in the **Event Feed** is incorrect | The **Event Feed** uses the time zone set in the **App Settings**. To align the time zone of events with your local time, adjust the **Reporting timezone** in [**App settings** -> **General** tab](https://app.adapty.io/settings/general). |
| Paywalls and products in them load long | <p>This issue can occur if your test account has a long transaction history. We highly recommend creating a new test account each time, as outlined in our [Create a Sandbox Test Account (Sandbox Apple ID) in App Store Connect](test-purchases-in-sandbox#step-1-create-a-sandbox-test-account--sandbox-apple-id-in-the-app-store-connect) section.</p> <p>If you're unable to create a new account, you can clear the transaction history on your current account by following these steps on your iOS device:</p> <ol><li> Open **Settings** and tap **App Store**.</li><li> Tap your **Sandbox Apple ID**.</li><li> In the popup, select **Manage**.</li><li> On the **Account Settings** page, tap **Clear Purchase History**.</li></ol> <p>For more details, check out the [Apple Developer documentation](https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_sandbox/#3894622).</p> |
| Paywalls and products take a long time to load | <p>This issue can occur if your test account has a long transaction history. We highly recommend creating a new test account each time, as outlined in our [Create a Sandbox Test Account (Sandbox Apple ID) in App Store Connect](test-purchases-in-sandbox#step-1-create-a-sandbox-test-account--sandbox-apple-id-in-the-app-store-connect) section.</p> <p>If you're unable to create a new account, you can clear the transaction history on your current account by following these steps on your iOS device:</p> <ol><li> Open **Settings** and tap **App Store**.</li><li> Tap your **Sandbox Apple ID**.</li><li> In the popup, select **Manage**.</li><li> On the **Account Settings** page, tap **Clear Purchase History**.</li></ol> <p>For more details, check out the [Apple Developer documentation](https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_sandbox/#3894622).</p> |


Here is an example of a non-original profile. Notice the absence of events in the **User history** and the presence of an access level.
Expand Down
6 changes: 3 additions & 3 deletions versioned_docs/version-3.0/use-fallback-paywalls.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ Adapty generates fallbacks as a JSON file in the necessary format, reflecting En

- [iOS](ios-use-fallback-paywalls)
- [Android](android-use-fallback-paywalls)
- [Flutter](flutter-use-fallback-paywalls)
- [React Native](react-native-use-fallback-paywalls)
- [Unity](unity-use-fallback-paywalls)
- [Flutter](/2.0/flutter-use-fallback-paywalls)
- [React Native](/2.0/react-native-use-fallback-paywalls)
- [Unity](/2.0/unity-use-fallback-paywalls)

0 comments on commit bddfd43

Please sign in to comment.