Skip to content

Releases: qonversion/flutter-sdk

2.2.0

10 Feb 07:07

Choose a tag to compare

What's new

  • Offerings
  • Intro eligibility
  • Trial duration
  • Detailed errors and enum logs
  • Purchase processing after failed launch or store products requests
  • Bugfixes and improvements under the hood

Offerings

An offering is a group of products that you can offer to a user on a given paywall based on your business logic. For example, you can offer one set of products on a paywall immediately after onboarding and another set of products with discounts later on if a user has not converted.
Offerings allow changing the products offered remotely without releasing app updates.

try {
  final QOfferings offerings = await Qonversion.offerings();
  final QOffering discount = offerings.offeringForIdentifier("discount");
  if (discount != null) {
    // Offering is available
    // Display products
  }
} catch (e) {
  print(e);
}

We strongly recommend switching to Qonversion Offerings. This allows to:

  • Change products offered to your users without app release
  • Run A/B tests
  • Store products and experiment results in one place with aggregated data on them

Intro eligibility

You can check if a user is eligible for an introductory offer, including a free trial. On the Apple platform, users who have not previously used an introductory offer for any products in the same subscription group are eligible for an introductory offer. Use this method to determine eligibility.

You can show only a regular price for users who are not eligible for an introductory offer.

try {
  final Map<String, QEligibility> eligibility = await Qonversion.checkTrialIntroEligibility(['main', 'premium']);
  final QEligibility mainProductStatus = eligibility['main'];
  if (mainProductStatus.status == QEligibilityStatus.eligible) {
      // handle available trial
  }
} catch (e) {
  print(e);
}

Trial duration

From now you can check the product’s trial duration using QNTrialDuration Enum.
If the duration is not from enum range we will return QNTrialDurationOther then you can check trial duration directly from the product's skProduct.

try {
  final Map<String, QProduct> products = await Qonversion.products();
  final QProduct mainProduct = products['main'];
  if (mainProduct.trialDuration == QTrialDuration.twoWeeks) {
    // handle two weeks trial duration
  }
} catch (e) {
  print(e);
}

2.1.0

28 Dec 16:06

Choose a tag to compare

  • Add setDebugMode() method

2.0.1

21 Dec 07:10

Choose a tag to compare

2.0.1

  • Fix iOS timestamp mapping

2.0.0

04 Dec 14:01

Choose a tag to compare

We have rethought our approach to working with subscriptions and prepared our largest update that includes Product Center – our major feature for working with any type in-app purchases.

2.0.0

What's new

Product Center

A111

  1. Application calls the purchase method to initialize Qonversion SDK.
  2. Qonversion SDK communicates with StoreKit or Google Billing Client to make a purchase.
  3. If a purchase is successful, the SDK sends a request to Qonversion API for server-to-server validation of purchase. Qonversion server unlocks permissions associated with the product.
  4. SDK returns control to the application with a processing state

1.1.2

30 Nov 16:51

Choose a tag to compare

  • Fix Android manualTrackPurchase args parsing
  • Update Example app

1.1.1

22 Sep 08:19

Choose a tag to compare

* Update docs

Release 1.0.0

05 Jul 16:22

Choose a tag to compare

  • API update: new launch method with just one API key argument for both platforms. Contact us at [email protected] to merge your old API keys into one, we can do it now.
  • API update: Remove old launch method; remove all old launch... methods.
  • Add trackPurchase method to track Android purchases manually.
  • Add addAttributionData method implementation for Android.

Release 0.3.0

27 Jun 08:27

Choose a tag to compare

  • API update: new launch method, deprecate all old launch... methods
  • Fix Android init
  • Update iOS Qonversion SDK version

0.2.4

06 May 14:51
a051157

Choose a tag to compare

  • iOS SDK 1.0.3
  • Android SDK 0.2.4