Skip to main content

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
     

Hi, you can use PaywallView to do this by wrapping that into your own view/display/navigation logic to make the behavior that you want. We can share a code sample with how to do this if you’d like.


Thanks Haley, I appreciate your reply.

the tl:dr request from = yes, please show us an example of how we can use the  PaywallView where upon dismissal it goes to our  ContentView . This was the original way I tried to solve it in the the is subscribed or not logic, but i wasn’t sure how to handle the next step for the user after the dismissal, which I think is the great advantage of the  presentPaywallIfNeeded method. 

(1). The Current Status Quo is Actually Good For Certain Situations, so Please Don’t Remove It (please just add optionality). First, for the team to know, the current functionality actually does serve a utility for apps that are using a model that says ‘donate what you can.’ So I certainly hope RevenueCat doesn’t take away the current set up when they extend it further.

 

(2) I’ve Received, I Think, Two Different Answers From You. Second, by any chance, was your reply edited? Because in my email I got this:

 

Dear ghayward,

Haley Pace has responded in "Hard Paywall or WorkAround".

Preview:
Hi, thank you for this feedback. At this time the way to help with this would be to disable the close button, but this will not prevent users from swiping it away. I have forwarded this feedback to our paywalls team and will update here with more information.

 

(3) Next Steps, yes please at least show me the  PaywallView navigation code sample. Third, moving on to what the current reply says:

Hi, you can use PaywallView to do this by wrapping that into your own view/display/navigation logic to make the behavior that you want. We can share a code sample with how to do this if you’d like.

 

When I head over to the Paywall docs (pertinent part here), we talk about (1) the presentPaywallIfNeeded method and the (2)  PaywallView  view, but what I still don’t see if how you can ‘unpack’  PaywallView to offer the logic in the dismissal phase. So what I’m saying is let’s say I have a navigation stack, and I put layer the  PaywallView  into it. Normally, I’d open up the  PaywallView.swift file and alter the code inside that document, but I can’t do that in this case (which is also what makes this dynamic and a real plus). So then, yes, please show an example of how you would call this  PaywallView and then have it navigate to your  ContentView upon user-dismissal, including after user hits the Restore subscription ‘link’. 

Thanks so much in advance, and this feature of the dynamic Paywall is super helpful, and a reason I love Revenue Cat.

George


Hi George, I apologize for the delay. We looked into this further on our end. You can use .onRequestedDismissal() with your Paywall view in order to handle the behavior when a user clicks the close button (docs), but that won’t currently handle the behavior when the user swipes to close the view. The Engineering team is aware of this and will be working on resolving it.


Is there any resolution to this issue? Can anyone please let us know the estimated date to release a fix?

I would also like to use the RevenueCat paywalls but do not want the user to be able to close or swipe away the paywall. I tried using .presentPaywallIfNeeded() with .onRequestedDismissal(), but the user can still swipe away the paywall.

I have a work around using PaywallView() and getCustomerInfo(), but would prefer to use the .presentPaywallIfNeeded().

Thank you.


Hi, any news on hard paywall possibility?


Reply