### Handle Installment Plans in Java Source: https://documentation.qonversion.io/docs/android-8-migration-guide Example demonstrating how to check for and retrieve installment plan details for a product using the Qonversion SDK in Java. This is useful when a customer commits to pay for several subsequent subscription periods. ```java Qonversion.getSharedInstance().products(new QonversionProductsCallback() { @Override public void onSuccess(@NonNull Map products) { QProduct installmentProduct = products.get("installmentProductId"); if (installmentProduct == null) { // Product not found return; } QProductStoreDetails storeDetails = installmentProduct.getStoreDetails(); if (storeDetails != null && storeDetails.isInstallment()) { QProductOfferDetails basePlan = storeDetails.getBasePlanSubscriptionOfferDetails(); if (basePlan == null) { // No base plans exist return; } QProductInstallmentPlanDetails installmentPlanDetails = basePlan.getInstallmentPlanDetails(); // Use the installment plan information } } @Override public void onError(@NonNull QonversionError error) { // Handle error here } }); ``` -------------------------------- ### Run pod install Source: https://documentation.qonversion.io/docs/install-no-codes-sdk-via-cocoapods Execute the 'pod install' command in your project directory to download and integrate the Qonversion SDK. ```bash pod install ``` -------------------------------- ### Handle Installment Plans in Kotlin Source: https://documentation.qonversion.io/docs/android-8-migration-guide Example demonstrating how to check for and retrieve installment plan details for a product using the Qonversion SDK in Kotlin. This is useful when a customer commits to pay for several subsequent subscription periods. ```kotlin Qonversion.shared.products(object : QonversionProductsCallback { override fun onSuccess(products: Map) { val installmentProduct = products["installmentProductId"] val storeDetails = installmentProduct?.storeDetails if (storeDetails?.isInstallment == true) { val installmentPlanDetails = storeDetails.basePlanSubscriptionOfferDetails?.installmentPlanDetails // Use the installment plan information } } override fun onError(error: QonversionError) { // Handle error here } }) ``` -------------------------------- ### Initialize SDK with Project Key Source: https://documentation.qonversion.io/docs/installation Initialize the Qonversion SDK using only the project key. This is the basic setup required for all platforms. ```swift // You can initialize using only project key let configuration = NoCodesConfiguration(projectKey: "projectKey") NoCodes.initialize(with: configuration) ``` ```kotlin // You can initialize using only project key val noCodesConfig = NoCodesConfig.Builder(this, "projectKey").build() NoCodes.initialize(noCodesConfig) ``` ```java // You can initialize using only project key final NoCodesConfig noCodesConfig = new NoCodesConfig.Builder(this, "projectKey").build(); NoCodes.initialize(noCodesConfig); ``` ```typescript // You can initialize using only project key const noCodesConfig = new NoCodesConfigBuilder('projectKey') .build(); NoCodes.initialize(noCodesConfig); ``` ```dart final noCodesConfig = new NoCodesConfigBuilder(projectKey).build(); NoCodes.initialize(noCodesConfig); ``` ```typescript // You can initialize using only project key const noCodesConfig = new Qonversion.NoCodesConfigBuilder('projectKey') .build(); Qonversion.NoCodes.initialize(noCodesConfig); ``` ```typescript // You can initialize using only project key const noCodesConfig = new NoCodesConfigBuilder('projectKey') .build(); NoCodes.initialize(noCodesConfig); ``` -------------------------------- ### Install Unity SDK via OpenUPM Source: https://documentation.qonversion.io/docs/install-no-codes-unity-sdk Install the Qonversion Unity SDK package from the openupm registry using the openupm-cli. This is a convenient way to manage SDK installations. ```shell openupm add com.qonversion.unity ``` -------------------------------- ### Initialize Qonversion SDK Source: https://documentation.qonversion.io/docs/initialize-sdks-capacitor Initializes the Qonversion SDK with the provided project key and launch mode. Ensure you have the '@qonversion/capacitor-plugin' installed. ```javascript import Qonversion, { QonversionConfigBuilder, LaunchMode } from '@qonversion/capacitor-plugin'; const config = new QonversionConfigBuilder( 'projectKey', LaunchMode.SUBSCRIPTION_MANAGEMENT ).build(); Qonversion.initialize(config); ``` -------------------------------- ### Install iOS Pods Source: https://documentation.qonversion.io/docs/install-no-codes-cordova-plugin After installing the plugin, navigate to the iOS directory and run this command to install the necessary pods. ```bash cd ios && pod install ``` -------------------------------- ### Get Offerings and Products (Objective-C) Source: https://documentation.qonversion.io/docs/displaying-products Retrieve main product offerings using Objective-C. Qonversion SDK must be initialized. ```objectivec [[Qonversion sharedInstance] offerings:^(QONOfferings * _Nullable offerings, NSError * _Nullable error) { if (offerings.main.products.count > 0) { // Display products for sale } }]; ``` -------------------------------- ### Install Plugin with Yarn Source: https://documentation.qonversion.io/docs/install-no-codes-capacitor-plugin Use this command to install the Qonversion Capacitor plugin via Yarn. ```bash yarn add @qonversion/capacitor-plugin ``` -------------------------------- ### Install Web SDK using npm Source: https://documentation.qonversion.io/docs/web-sdk Install the Qonversion SDK package using npm. This is the first step to integrate the SDK into your web application. ```shell npm install @qonversion/web-sdk ``` -------------------------------- ### Install Web SDK using Yarn Source: https://documentation.qonversion.io/docs/web-sdk Install the Qonversion SDK package using Yarn. This is an alternative to npm for package management. ```shell yarn add @qonversion/web-sdk ``` -------------------------------- ### Install Unity SDK via Git URL Source: https://documentation.qonversion.io/docs/install-sdk-unity Add this entry to your `Packages/manifest.json` file to install the Qonversion Unity SDK using its Git URL. Ensure you are using the correct version tag. ```json { "dependencies": { "com.qonversion.unity": "https://github.com/qonversion/unity-sdk.git#9.2.0" } } ``` -------------------------------- ### Install Qonversion Capacitor Plugin Source: https://documentation.qonversion.io/docs/capacitor Install the Qonversion Capacitor Plugin package from npm. This command fetches the necessary files for your project. ```bash npm install @qonversion/capacitor-plugin ``` -------------------------------- ### Get Products for Purchase Source: https://documentation.qonversion.io/docs/make-purchase-unity Retrieve product details using their IDs from the Qonversion Dashboard. This is the first step before initiating a purchase. ```csharp Qonversion.GetSharedInstance().Products((products, error) => { if (products.TryGetValue("your_product_id", out var product)) { // Use product to make a purchase } }); ``` -------------------------------- ### Initialize Qonversion SDK (Java - New) Source: https://documentation.qonversion.io/docs/android-4-migration-guide Demonstrates the new instance-based initialization using QonversionConfig and Qonversion.initialize(). Use QLaunchMode.Infrastructure for infrastructure-related features. ```java public class App extends Application { @Override public void onCreate() { super.onCreate(); final QonversionConfig qonversionConfig = new QonversionConfig.Builder( this, "projectKey", QLaunchMode.Infrastructure ).build(); Qonversion.initialize(qonversionConfig); } } ``` -------------------------------- ### Accessing Installment Plan Details Source: https://documentation.qonversion.io/docs/react-native-8-migration-guide Example of how to check if a product has an installment plan and access its details using the Qonversion SDK. This is useful for handling subscriptions with installment payments. ```typescript const products = await Qonversion.getSharedInstance().products(); const installmentProduct: Product = products['installmentProductId']; const storeDetails = installmentProduct?.storeDetails; if (storeDetails?.isInstallment) { const installmentDetails = storeDetails?.basePlanSubscriptionOfferDetails?.installmentPlanDetails; // Use the installment plan information } ``` -------------------------------- ### Create Basic SDK Configuration Source: https://documentation.qonversion.io/docs/web-sdk Create a basic launching configuration for the Qonversion SDK using `QonversionConfigBuilder`. This requires your project key. ```javascript import {QonversionConfigBuilder} from '@qonversion/web-sdk'; ... const config = new QonversionConfigBuilder(projectKey).build(); ``` -------------------------------- ### Access Installment Plan Details Source: https://documentation.qonversion.io/docs/cordova-6-migration-guide Example of how to check for and access installment plan details for a product offer. This is useful when dealing with subscription offers that involve installment payments. ```typescript const products = await Qonversion.getSharedInstance().products(); const installmentProduct = products['installmentProductId']; const storeDetails = installmentProduct?.storeDetails; if (storeDetails?.isInstallment) { const installmentDetails = storeDetails?.basePlanSubscriptionOfferDetails?.installmentPlanDetails; // Use the installment plan information } ``` -------------------------------- ### Install SDK via Swift Package Manager Source: https://documentation.qonversion.io/docs/swift-ios-sdk Use Xcode to add the Qonversion SDK package by providing the repository URL. ```swift https://github.com/qonversion/qonversion-ios-sdk ``` -------------------------------- ### Get Offering by ID in Flutter Source: https://documentation.qonversion.io/docs/displaying-products This Flutter example shows how to get an offering by its ID. Use a try-catch block for error management. ```dart try { final QOfferings offerings = await Qonversion.getSharedInstance().offerings(); final QOffering discount = offerings.offeringForIdentifier("discount"); if (discount != null) { // Offering is available // Display products } } catch (e) { print(e); } ``` -------------------------------- ### Install Flutter Dependencies Source: https://documentation.qonversion.io/docs/flutter-sdk Run 'flutter pub get' in your terminal to install the dependencies, including the Qonversion Flutter SDK, after updating your pubspec.yaml file. ```bash flutter pub get ``` -------------------------------- ### Initialize Qonversion SDK (Java - Old) Source: https://documentation.qonversion.io/docs/android-4-migration-guide Shows the previous singleton-based initialization method using Qonversion.launch(). ```java public class App extends Application { @Override public void onCreate() { super.onCreate(); Qonversion.launch(this, "projectKey", false); } } ``` -------------------------------- ### Access Installment Plan Details in Unity Source: https://documentation.qonversion.io/docs/unity-8-migration-guide Example of how to check for and access installment plan details for a product offer in the Unity SDK. This is useful when Google Play introduces new subscription models. ```csharp Qonversion.GetSharedInstance().Products((products, error) => { var installmentProduct = products["android_installment"]; var storeDetails = installmentProduct?.StoreDetails; if (storeDetails?.IsInstallment == true) { var installmentPlanDetails = storeDetails.BasePlanSubscriptionOfferDetails?.InstallmentPlanDetails; // Use the installment plan information } }); ``` -------------------------------- ### Initialize SDK with Configuration Source: https://documentation.qonversion.io/docs/web-sdk Initialize the Qonversion SDK using the prepared configuration object. This returns an instance of the SDK. ```javascript import Qonversion from '@qonversion/web-sdk'; ... const qonversionInstance = Qonversion.initialize(config); ``` -------------------------------- ### Initialize Qonversion SDK (Kotlin - New) Source: https://documentation.qonversion.io/docs/android-4-migration-guide Demonstrates the new instance-based initialization using QonversionConfig and Qonversion.initialize(). Use QLaunchMode.SubscriptionManagement for subscription management features. ```kotlin class App : Application() { override fun onCreate() { super.onCreate() val qonversionConfig = QonversionConfig.Builder( this, "projectKey", QLaunchMode.SubscriptionManagement ).build() Qonversion.initialize(qonversionConfig) } } ``` -------------------------------- ### Get Qonversion User ID in Unity Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```csharp Qonversion.GetSharedInstance().UserInfo((userInfo, error) => { if (error == null) { // use userInfo.QonversionId } else { // Handle the error Debug.Log("Error" + error.ToString()); } }); ``` -------------------------------- ### Get Qonversion User ID in Flutter Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```dart try { final userInfo = await Qonversion.getSharedInstance().userInfo(); // use userInfo.qonversionId } catch (e) { // handle error here } ``` -------------------------------- ### Initialize Qonversion SDK (Kotlin - Old) Source: https://documentation.qonversion.io/docs/android-4-migration-guide Shows the previous singleton-based initialization method using Qonversion.launch(). ```kotlin class App : Application() { override fun onCreate() { super.onCreate() Qonversion.launch(this, "projectKey", false) } } ``` -------------------------------- ### Get Qonversion User ID in Kotlin Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```kotlin Qonversion.shared.userInfo(object : QonversionUserCallback { override fun onSuccess(user: QUser) { // use user.qonversionId } override fun onError(error: QonversionError) { // handle error here } }) ``` -------------------------------- ### Initialize Qonversion SDK Source: https://documentation.qonversion.io/docs/initialize-sdks-unity Use this snippet to initialize the Qonversion SDK with a project key and launch mode for subscription management. ```csharp QonversionConfig config = new QonversionConfigBuilder( "projectKey", LaunchMode.SubscriptionManagement ).Build(); Qonversion.Initialize(config); ``` -------------------------------- ### Get Qonversion User ID in Java Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```java Qonversion.getSharedInstance().userInfo(new QonversionUserCallback() { @Override public void onSuccess(@NonNull QUser user) { // use user.getQonversionId() } @Override public void onError(@NonNull QonversionError error) { // handle error here } }); ``` -------------------------------- ### Get Qonversion User ID in Objective-C Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```objectivec [[Qonversion sharedInstance] userInfo:^(QONUser * _Nullable user, NSError * _Nullable error) { // use [user qonversionId] if no error occurred }] ``` -------------------------------- ### Initialize Qonversion SDK Source: https://documentation.qonversion.io/docs/initialize-sdks-react-native Initialize the Qonversion SDK with your project key and set the launch mode for subscription management. ```javascript import Qonversion, { QonversionConfigBuilder, LaunchMode } from 'react-native-qonversion'; const config = new QonversionConfigBuilder( 'projectKey', LaunchMode.SUBSCRIPTION_MANAGEMENT ).build(); Qonversion.initialize(config); ``` -------------------------------- ### Get Qonversion User ID in Swift Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```swift Qonversion.shared().userInfo { user, error in // use user?.qonversionId } ``` -------------------------------- ### Get Qonversion User ID in React Native Source: https://documentation.qonversion.io/docs/user-identifiers Retrieve the unique Qonversion User ID for the current app installation. Use this ID for third-party integrations or matching data from webhooks. ```typescript try { const userInfo = await Qonversion.getSharedInstance().userInfo(); // use userInfo.qonversionId } catch (e) { // handle error here } ``` -------------------------------- ### Initialize Qonversion SDK in Unity Source: https://documentation.qonversion.io/docs/initialize-sdk-unity Add this code to your app's entry point, typically in a Start() method. Ensure you replace '[projectKey]' with your actual Qonversion project key. ```csharp using QonversionUnity; private void Start() { QonversionConfig config = new QonversionConfigBuilder( "[projectKey]", LaunchMode.SubscriptionManagement ).Build(); Qonversion.Initialize(config); } ``` -------------------------------- ### Make Purchase with Qonversion (Swift) Source: https://documentation.qonversion.io/docs/adapty-migration-guide Initiates a purchase using Qonversion's Swift SDK. This example demonstrates handling successful purchases, cancellations, pending states, and other errors. ```swift Qonversion.shared().purchase(product) { (result) in if result.isSuccessful { if let premium: Qonversion.Entitlement = result.entitlements["premium"], premium.isActive { // Grant user access to premium features } } else if result.isCanceledByUser { // Handle canceled purchase } else if result.isPending { // Handle pending purchase } else { // Handle errors } } ``` -------------------------------- ### Swift: Get UIViewController for Navigation Source: https://documentation.qonversion.io/docs/displaying-no-codes Implement the `controllerForNavigation` function in your delegate to return a `UIViewController`. This controller will be used as the starting point for displaying the No-Codes flow. If not provided, the topmost screen will be used. ```swift func controllerForNavigation() -> UIViewController? ``` -------------------------------- ### Initialize SDK with Objective-C Source: https://documentation.qonversion.io/docs/initialize-sdk-ios Use this Objective-C code to initialize the Qonversion SDK in your application's entry point. Replace '[projectKey]' with your actual project key. ```objectivec #import "Qonversion.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { QONConfiguration *configuration = [[QONConfiguration alloc] initWithProjectKey:@"[projectKey]" launchMode:QONLaunchModeSubscriptionManagement]; [Qonversion initWithConfig:configuration]; return YES; } ``` -------------------------------- ### Get Promotional Offer in React Native Source: https://documentation.qonversion.io/docs/apple-promotional-offers This React Native TypeScript example shows how to retrieve a promotional offer. It finds the relevant discount and handles errors using a try-catch block. ```typescript try { // You can obtain the product and discount in any other way. This approach is used here as an example. const promo = subscriptionProduct.skProduct?.discounts?.find(discount => discount.identifier === 'my_promo_offer_id' ); if (promo) { const promoOffer = await Qonversion.getSharedInstance().getPromotionalOffer(subscriptionProduct, promo); } // handle promo offer here } catch (e) { // handle error here } ``` -------------------------------- ### Get Offerings and Products (Java) Source: https://documentation.qonversion.io/docs/displaying-products Fetch main product offerings in Java. Requires Qonversion SDK initialization and a callback for results. ```java Qonversion.getSharedInstance().offerings(new QonversionOfferingsCallback() { @Override public void onSuccess(@NotNull QOfferings offerings) { if (offerings.getMain() != null && !offerings.getMain().getProducts().isEmpty()) { // Display products for sale } } @Override public void onError(@NotNull QonversionError error) { // handle error here } }); ``` -------------------------------- ### Initialize Qonversion SDK (v3) Source: https://documentation.qonversion.io/docs/ios-3-migration-guide Initialize Qonversion SDK version 3.+ using a Configuration object. Specify the project key and the desired launch mode. This replaces the older 'launch' method. ```swift let configuration = Qonversion.Configuration(projectKey: "projectKey", launchMode: .subscriptionManagement) Qonversion.initWithConfig(configuration) ``` ```objectivec QONConfiguration *configuration = [[QONConfiguration alloc] initWithProjectKey:@"projectKey" launchMode:QONLaunchModeSubscriptionManagement]; [Qonversion initWithConfig:configuration]; ``` -------------------------------- ### Initialize Qonversion SDK in Swift Source: https://documentation.qonversion.io/docs/adapty-migration-guide Shows how to initialize the Qonversion SDK in a Swift application. ```swift import Qonversion func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let config = Qonversion.Configuration(projectKey: "projectKey", launchMode: .subscriptionManagement) Qonversion.initWithConfig(config) return true } ``` -------------------------------- ### Send Tenjin Installation ID to Qonversion Source: https://documentation.qonversion.io/docs/tenjin Retrieve the Tenjin installation ID using the Tenjin SDK and set it as a user property in Qonversion. Ensure the Tenjin SDK is installed and Qonversion SDK is set up. ```swift let tenjinId = TenjinSDK.getAnalyticsInstallationId() Qonversion.shared().setUserProperty(.tenjinAnalyticsInstallationId, value: tenjinId) ``` ```objectivec [[Qonversion sharedInstance] setUserProperty:QONUserPropertyKeyTenjinAnalyticsInstallationId value:[TenjinSDK getAnalyticsInstallationId]]; ``` ```java TenjinSDK instance = TenjinSDK.getInstance(this, ""); String analyticsId = instance.getAnalyticsInstallationId(); Qonversion.getSharedInstance().setUserProperty(QUserPropertyKey.TenjinAnalyticsInstallationId, analyticsId); ``` ```kotlin val instance = TenjinSDK.getInstance(this, "") val analyticsId = instance.analyticsInstallationId Qonversion.shared.setUserProperty(QUserPropertyKey.TenjinAnalyticsInstallationId, analyticsId) ``` ```dart String? analyticsId = await TenjinSDK.instance.getAnalyticsInstallationId(); if (analyticsId != null) { Qonversion.getSharedInstance().setUserProperty(QUserPropertyKey.tenjinAnalyticsInstallationId, analyticsId); } ``` ```typescript const analyticsId = await Tenjin.getAnalyticsInstallationId() Qonversion.getSharedInstance().setUserProperty(UserPropertyKey.TENJIN_ANALYTICS_INSTALLATION_ID, analyticsId); ``` ```csharp BaseTenjin instance = Tenjin.getInstance(""); analyticsId = instance.GetAnalyticsInstallationId; Qonversion.GetSharedInstance().SetUserProperty(UserPropertyKey.TenjinAnalyticsInstallationId, analyticsId); ``` ```typescript Qonversion.getSharedInstance().setUserProperty(Qonversion.UserPropertyKey.TENJIN_ANALYTICS_INSTALLATION_ID, "tenjinAiid"); ``` ```typescript const analyticsId = await Tenjin.getAnalyticsInstallationId(); Qonversion.getSharedInstance().setUserProperty(UserPropertyKey.TENJIN_ANALYTICS_INSTALLATION_ID, analyticsId); ``` -------------------------------- ### Display Qonversion Offerings in Swift Source: https://documentation.qonversion.io/docs/glassfy-migration-guide Fetch Qonversion offerings to display products for sale. Ensure Qonversion SDK is initialized. ```swift Qonversion.shared().offerings { (offerings, error) in if let products = offerings?.main?.products { // Display products for sale } } ``` -------------------------------- ### Install Cordova Plugin with Yarn Source: https://documentation.qonversion.io/docs/install-no-codes-cordova-plugin Use this command to install the Qonversion Cordova plugin via Yarn. ```bash yarn add @qonversion/cordova-plugin ``` -------------------------------- ### Initialize RevenueCat SDK (Unity) Source: https://documentation.qonversion.io/docs/migrating-from-revenuecat-to-qonversion Shows how to initialize the RevenueCat SDK in a Unity application. ```csharp Purchases.PurchasesConfiguration.Builder builder = Purchases.PurchasesConfiguration.Builder.Init(); Purchases.PurchasesConfiguration purchasesConfiguration = .SetAppUserId() .Build(); purchases.Configure(purchasesConfiguration); ``` -------------------------------- ### Install Cordova Plugin with npm Source: https://documentation.qonversion.io/docs/install-no-codes-cordova-plugin Use this command to install the Qonversion Cordova plugin via npm. ```bash npm install @qonversion/cordova-plugin --save ``` -------------------------------- ### Initialize Qonversion SDK with Proxy URL (Java) Source: https://documentation.qonversion.io/docs/solving-russian-federation-traffic-blocking Configure the Qonversion SDK with a project key, launch mode, and a proxy URL for Java applications. ```java final QonversionConfig qonversionConfig = new QonversionConfig.Builder( this, "projectKey", select_needed_launch_mode ) .setProxyURL("https://api-eu.qonversion.io") .build(); Qonversion.initialize(qonversionConfig); ``` -------------------------------- ### Install SDK via Yarn Source: https://documentation.qonversion.io/docs/install-no-codes-react-native-sdk Use this command to install the Qonversion React Native SDK using Yarn. ```bash yarn add @qonversion/react-native-sdk ``` -------------------------------- ### Get Offerings and Products (Swift) Source: https://documentation.qonversion.io/docs/displaying-products Use this snippet to retrieve main product offerings in Swift. Ensure Qonversion SDK is initialized. ```swift Qonversion.shared().offerings { (offerings, error) in if let products = offerings?.main?.products { // Display products for sale } } ``` -------------------------------- ### Displaying Products in Qonversion (Unity) Source: https://documentation.qonversion.io/docs/migrating-from-revenuecat-to-qonversion Shows how to retrieve and display products using Qonversion's Unity SDK. ```csharp Qonversion.GetSharedInstance().Offerings((offerings, error) => { if (error == null) { ``` -------------------------------- ### Install SDK via npm Source: https://documentation.qonversion.io/docs/install-no-codes-react-native-sdk Use this command to install the Qonversion React Native SDK using npm. ```bash npm install @qonversion/react-native-sdk --save ``` -------------------------------- ### Android Play Store URL Example Source: https://documentation.qonversion.io/docs/appsflyer Example of an Android Play Store URL to find the App ID. ```text https://play.google.com/store/apps/details?id=com.android.chrome ``` -------------------------------- ### Display Qonversion Offerings in C# (Unity) Source: https://documentation.qonversion.io/docs/glassfy-migration-guide Fetch Qonversion offerings to display products for sale. Ensure Qonversion SDK is initialized. ```csharp Qonversion.GetSharedInstance().Offerings((offerings, error) => { if (error == null) { Offering mainOffering = offerings.Main; if(mainOffering != null) { ``` -------------------------------- ### iOS App Store URL Example Source: https://documentation.qonversion.io/docs/appsflyer Example of an iOS App Store URL to find the App ID. ```text https://apps.apple.com/us/app/apple-developer/640199958 ``` -------------------------------- ### Get Offerings and Products (Kotlin) Source: https://documentation.qonversion.io/docs/displaying-products Retrieve main product offerings in Kotlin. Ensure Qonversion SDK is initialized and handle the callback. ```kotlin Qonversion.shared.offerings(object: QonversionOfferingsCallback { override fun onSuccess(offerings: QOfferings) { val mainOffering = offerings.main if (mainOffering != null && mainOffering.products.isNotEmpty()) { // Display products for sale } } override fun onError(error: QonversionError) { // handle error here } }) ``` -------------------------------- ### Initialize Qonversion SDK Source: https://documentation.qonversion.io/docs/initialize-sdks-copy Initialize the Qonversion SDK with your project key and subscription management launch mode. ```kotlin val qonversionConfig = QonversionConfig.Builder( this, "projectKey", QLaunchMode.SubscriptionManagement ).build() Qonversion.initialize(qonversionConfig) ``` -------------------------------- ### Initialize RevenueCat SDK (Swift) Source: https://documentation.qonversion.io/docs/migrating-from-revenuecat-to-qonversion Shows how to initialize the RevenueCat SDK in a Swift application. ```swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { Purchases.logLevel = .debug Purchases.configure(withAPIKey: , appUserID: ) } ``` -------------------------------- ### Handle Action Start Execution (Objective-C) Source: https://documentation.qonversion.io/docs/handle-automations-result Use automationsDidStartExecutingActionResult in Objective-C to manage logic or track events when an automation action starts. ```objectivec - (void)automationsDidStartExecutingActionResult:(QONActionResult * _Nonnull)actionResult { // do some logic or track event } ``` -------------------------------- ### Initialize Qonversion SDK with Sandbox Environment (Java) Source: https://documentation.qonversion.io/docs/test-purchase-google Configure the Qonversion SDK to use the sandbox environment for testing purchases. Ensure your project key is replaced with the actual key. ```java final QonversionConfig qonversionConfig = new QonversionConfig.Builder( this, "[projectKey]", QLaunchMode.SubscriptionManagement ) .setEnvironment(QEnvironment.Sandbox) // Add this line for testing .build(); Qonversion.initialize(qonversionConfig); ``` -------------------------------- ### Handle Action Start Execution (Kotlin) Source: https://documentation.qonversion.io/docs/handle-automations-result Implement automationsDidStartExecuting in Kotlin to handle logic or track events when an automation action starts executing. ```kotlin override fun automationsDidStartExecuting(actionResult: QActionResult) { // Do some logic or track event } ``` -------------------------------- ### Initialize Qonversion SDK in Swift Source: https://documentation.qonversion.io/docs/getting-started-with-no-code-screens Initialize the Qonversion SDK with your project key and set the launch mode to subscription management. This is typically done in your application's entry point. ```swift import Qonversion func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let qonversionConfig = Qonversion.Configuration(projectKey: "projectKey", launchMode: .subscriptionManagement) Qonversion.initWithConfig(qonversionConfig) return true } ``` -------------------------------- ### Access Installment Plan Details Source: https://documentation.qonversion.io/docs/flutter-9-migration-guide Check if a product has an installment plan and retrieve its details. This code snippet demonstrates how to access `isInstallment` and `installmentPlanDetails` from `QProductStoreDetails`. ```dart var products = await Qonversion.getSharedInstance().products(); var installmentProduct = products["installmentProductId"]; var storeDetails = installmentProduct?.storeDetails; if (storeDetails?.isInstallment == true) { var installmentPlanDetails = storeDetails?.basePlanSubscriptionOfferDetails?.installmentPlanDetails; // Use the installment plan information } ``` -------------------------------- ### Initialize Qonversion SDK in Objective-C Source: https://documentation.qonversion.io/docs/adapty-migration-guide Shows how to initialize the Qonversion SDK in an Objective-C application. ```objectivec #import "Qonversion.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { QONConfiguration *configuration = [[QONConfiguration alloc] initWithProjectKey:@"projectKey" launchMode:QONLaunchModeSubscriptionManagement]; [Qonversion initWithConfig:configuration]; return YES; } ``` -------------------------------- ### Handle Action Start Execution (React Native) Source: https://documentation.qonversion.io/docs/handle-automations-result Implement automationsDidStartExecuting in React Native to manage logic or track events when an automation action starts. ```javascript automationsDidStartExecuting(actionResult) { // do some logic or track event } ``` -------------------------------- ### Initialize Qonversion SDK with Proxy URL (Swift) Source: https://documentation.qonversion.io/docs/solving-russian-federation-traffic-blocking Configure the Qonversion SDK with a project key, launch mode, and a proxy URL for Swift applications. ```swift let config = Qonversion.Configuration(projectKey: "projectKey", launchMode: select_needed_launch_mode) config.setProxyURL("https://api-eu.qonversion.io") Qonversion.initWithConfig(config) ``` -------------------------------- ### Get All Remote Configurations (Unity) Source: https://documentation.qonversion.io/docs/launch-experiments Use this C# snippet to get all remote configurations within your Unity project. It employs a callback to manage the results. ```csharp Qonversion.GetSharedInstance().RemoteConfigList((remoteConfigList, error) => { // Use remoteConfigList here }); ``` -------------------------------- ### Complete Purchase (Unity) Source: https://documentation.qonversion.io/docs/app-store-promoted-purchases Call `startPromoPurchase` in Unity to initialize the purchase, for example, immediately after onboarding screens. Handle the purchase result, including active entitlements or errors. ```csharp startPromoPurchase((entitlements, error) => { if (error == null) { if (entitlements.TryGetValue("premium", out Entitlement premium) && premium.IsActive) { // Handle the active entitlement here } } else { // Handle the error Debug.Log("Error" + error.ToString()); } }); ``` -------------------------------- ### Get Promotional Offer in Flutter Source: https://documentation.qonversion.io/docs/apple-promotional-offers Use this Dart code within a Flutter application to get a promotional offer. It finds the discount by its identifier and handles potential exceptions. ```dart try { // You can obtain the product and discount in any other way. This approach is used here as an example. var promo = subscriptionProduct.skProduct?.discounts?.firstWhereOrNull( (discount) => discount.identifier == 'my_promo_offer_id' ); if (promo != null) { var promoOffer = await Qonversion.getSharedInstance().getPromotionalOffer(subscriptionProduct, promo); // handle promo offer here } } on Exception catch (e) { // handle error here } ``` -------------------------------- ### AppsFlyer Event Payload Example Source: https://documentation.qonversion.io/docs/appsflyer Example of the event payload structure sent from Qonversion to AppsFlyer, including details like user ID, event type, and revenue information. ```json { "appsflyer_id": "", "os": "14.6", "app_version_name": "1.0.0", "customer_user_id": "outside_uid", "idfa": "", "idfv": "", "eventCurrency": "EUR", "ip": "", "bundleIdentifier": "com.app.name", "eventName": "trial_converted", "storefront": "USA", "eventTime": "Y-m-d H:i:s.u", "eventValue": { "af_content_type": "product", "af_content_id": "product_id", "q_uid": "QON_...", "af_revenue": "1.99", "af_currency": "EUR" } } ``` -------------------------------- ### Initialize Adapty SDK in Unity Source: https://documentation.qonversion.io/docs/adapty-migration-guide Shows placeholder steps for initializing the Adapty SDK in a Unity application. Specific implementation details are omitted. ```csharp // Few different steps with iOS Info.plist and AndroidManifest.xml files. // Create a script which will be responsible for listening of Adapty events. // Few other steps ``` -------------------------------- ### Initialize Qonversion SDK with Proxy URL (Unity C#) Source: https://documentation.qonversion.io/docs/solving-russian-federation-traffic-blocking Configure the Qonversion SDK with a project key, launch mode, and a proxy URL for Unity applications using C#. ```csharp QonversionConfig config = new QonversionConfigBuilder( "projectKey", select_needed_launch_mode ).SetProxyURL("https://api-eu.qonversion.io") .Build(); Qonversion.Initialize(config); ```