Hi, I’m developing iOS 18+ app with RevenueCat 5.12.1.
I found SubscriptionStoreView is almost perfect for me to make a paywall.
My earlier code without SubscriptionStoreView used a custom purchase button like this.
1 var buttonToPurchase: some View {23 let packages = offering?.availablePackages ?? []4 let package = packages.first ?? nil56 Button {78 guard let currentPackage = package else { return }910 Purchases.shared.purchase(package: currentPackage) { (transaction, info, error, userCancelled) in1112 if info?.entitlements[Constants.entitlementID]?.isActive == true {13 navigationViewModel.path.removeAll()14 } else if let error = error {15 self.error = error as NSError16 self.displayError = true17 }18 }1920 } label: {21 Text("Continue")22 }23 }
I don’t know how to apply Purchase.shared.purchase(package:) into SubscriptionStoreView.
I know SubscriptionStoreView provides two modifiers
.onInAppPurchaseStart { product in … }
.onInAppPurchaseCompletion { product, result in … }
I also know SubscriptionStoreView displays inherently ‘subscribe button’.
But my code below seems to be wrong because it triggers subscription sheet twice, and I wonder, when a firstly triggered subscription is completed, if RevenueCat server is appropriately tracking the subscription with correct anonymousID for customer.
1SubscriptionStoreView.forOffering(offering!) {2 premiumDescription3}4.onInAppPurchaseCompletion { product, result in5 let packages = offering?.availablePackages ?? []6 let package = packages.first ?? nil78 if case .success(.success(let transaction)) = result {9 print("Purchased successfully: \(transaction.signedDate)")1011 guard let currentPackage = package else { return }1213 Purchases.shared.purchase(package: currentPackage) { (transaction, info, error, userCancelled) in 1415 if info?.entitlements[Constants.entitlementID]?.isActive == true {16 navigationViewModel.path.removeAll()1718 } else if let error = error {19 self.error = error as NSError20 self.displayError = true21 } 22 }23 } else {24 print("Purchase was cancelled.")25 }26}
Please help me 🙏 Thanks in advance!!