diff --git a/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-kmp.kt b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-kmp.kt new file mode 100644 index 000000000..c73ca8809 --- /dev/null +++ b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-kmp.kt @@ -0,0 +1,9 @@ +Purchases.sharedInstance.getEligibleWinBackOffersForPackage( + packageToCheck = packageToCheck, + onError = { error: PurchasesError -> + // TODO: handle the error in your UI + }, + onSuccess = { eligibleWinBackOffers: List -> + // TODO: display eligible win-back offers in your UI + } +) \ No newline at end of file diff --git a/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-unity.cs b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-unity.cs new file mode 100644 index 000000000..ade3ea6dd --- /dev/null +++ b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-unity.cs @@ -0,0 +1,11 @@ +Purchases purchases = GetComponent(); +purchases.GetEligibleWinBackOffersForPackage(package, (winBackOffers, error) => { + if (error != null) + { + // TODO: handle the error in your UI + } + else + { + // TODO: display eligible win-back offers in your UI + } +}); \ No newline at end of file diff --git a/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-kmp.kt b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-kmp.kt new file mode 100644 index 000000000..56ace9adf --- /dev/null +++ b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-kmp.kt @@ -0,0 +1,10 @@ +Purchases.sharedInstance.purchase( + packageToPurchase = packageToPurchase, + winBackOffer = winBackOffer, + onError = { error: PurchasesError, userCancelled: Boolean -> + // TODO: handle failed purchase in your UI + }, + onSuccess = { transaction: StoreTransaction, customerInfo: CustomerInfo -> + // TODO: handle successful purchase in your UI + } +) \ No newline at end of file diff --git a/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-unity.cs b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-unity.cs new file mode 100644 index 000000000..b8b8b002b --- /dev/null +++ b/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-unity.cs @@ -0,0 +1,15 @@ +Purchases purchases = GetComponent(); +purchases.PurchasePackageWithWinBackOffer( + package, + winBackOffers[0], + (productIdentifier, customerInfo, userCancelled, purchaseError) => + { + if (purchaseError != null) + { + // TODO: handle failed purchase in your UI + return; + } + + // TODO: handle successful purchase in your UI + } +); \ No newline at end of file diff --git a/docs/subscription-guidance/subscription-offers/ios-subscription-offers.mdx b/docs/subscription-guidance/subscription-offers/ios-subscription-offers.mdx index e88170803..9fb207e9f 100644 --- a/docs/subscription-guidance/subscription-offers/ios-subscription-offers.mdx +++ b/docs/subscription-guidance/subscription-offers/ios-subscription-offers.mdx @@ -341,6 +341,8 @@ import fetchEligibleWinbacksReactNative from "!!raw-loader!@site/code_blocks/sub import fetchEligibleWinbacksFlutter from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-flutter.dart"; import fetchEligibleWinbacksCordova from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-cordova.js"; import fetchEligibleWinBacksCapacitor from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-capacitor.ts"; +import fetchEligibleWinBacksKMP from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-kmp.kt"; +import fetchEligibleWinBacksUnity from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-fetch-eligible-winback-offers-unity.cs"; + { + type: 'kotlin', + title: "Kotlin Multiplatform", + content: fetchEligibleWinBacksKMP, + }, + { + type: 'unity', + title: "Unity", + content: fetchEligibleWinBacksUnity, + } +]}/> :::info ☝️ Note: The `eligibleWinBackOffers` function only returns the win-back offers that the current subscriber is eligible for, not all of the win-back offers that you've created for a product. It will return an empty array when the subscriber is not eligible for any win-back offers. @@ -383,6 +394,8 @@ import purchaseWinbackOfferReactNative from "!!raw-loader!@site/code_blocks/subs import purchaseWinbackOfferFlutter from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-flutter.dart"; import purchaseWinbackOfferCordova from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-cordova.js"; import purchaseWinbackOfferCapacitor from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-capacitor.ts"; +import purchaseWinbackOfferKMP from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-kmp.kt"; +import purchaseWinbackOfferUnity from "!!raw-loader!@site/code_blocks/subscription-guidance/subscription-offers/ios-winback-offers-purchase-winback-offer-unity.cs"; + { + type: 'kotlin', + title: "Kotlin Multiplatform", + content: purchaseWinbackOfferKMP, + }, + { + type: 'unity', + title: "Unity", + content: purchaseWinbackOfferUnity, + } +]}/> For more information on displaying and purchasing products on your paywall, check out our [Displaying Products](https://www.revenuecat.com/docs/getting-started/displaying-products) and [Making Purchases](https://www.revenuecat.com/docs/getting-started/making-purchases) guides.