Hey Everyone,
The Problem: Paywall looks great, is super easy to implement, BUT seems easy to bypass
The issue is when you run
ContentView()
.presentPaywallIfNeeded(requiredEntitlementIdentifier: "standard")
you get a great UI on the iOS paywall, but the user can swipe down and go to ContentView() for free, or press the ‘close button’ x in the upper right hand corner and get to the ContentView for free. This issue was raised here a few months ago, but there does not seem to be a solution yet.
An Idea of Workaround, but it’s not there yet
One way I like to add logic goes like this
if subscriptionManager.isSubscribed || subscriptionManager.isOnIntroductoryOffer
{
ContentView()
} else {
PaywallView()
//But seems to have no way to send this to ContentView
}
above you can see that I just to the logical check myself. But the issue then is that even if I call the PaywallView() itself, you do get the great UI, and the simplicity. But I don’t see a way to send the user who does pay to the ContentView() when the payment goes to Apple. If they restart the app, then I think the logic should send them to the ContentView(), but there doesn’t seem to be a way to pass a response handler into this View, and since I don’t have access to the under-the-hood code where I could trigger a ContentView() on one of the user payment actions.
The Ask:
Does anyone have a solution?
Either a argument to pass into the `.presentPaywallIfNeeded()` function or a way to connect `PaywallView()` to `ContentView()` in the same user session.
For now I’m just leaving the paywall as soft, since trying to grow users anyway, but just wanted to check.
And if anyone is interested the app is called Sound Recipe.
Specs
- RevenueCat 4.41.0
- Xcode 15.3
- iOS 17.0