I know the in-app subscription component will be out soon, hopefully before the end of the year.
But, if I start with the in-app single purchase, is it possible when i switch to the in-app subscription that the same features in the app are unlocked for users who purchased on the single purchase?
User A pays $20/lifetime access today (single in-app purchase component)
App switches from single purchase to subscription
User A still gets access to full app
User B gets access to full app but now under new sub plan
^ is that possible currently?
Curious how this works. Thanks!
As for me this is possible. On Apple’s and Google’s side, single purchase and subscriptions are separated, so I assume you can have both options active for one app.
On Adalo side, you will need to replace the components and set up the subscriptions routine. The main challenge will be not to forget about those who have made a one-time purchase.
For example, you have a T/F property “Premium User”, which allows users to access the paid app content. You need to be sure that when you implement subscriptions, you will use the same property.
However, as subscriptions tend to expire / could be cancelled, you need to be sure that when you check for subscription expiration you will accidentially NOT disable the users which have bought lifetime access. So probably you’ll have to introduce another property for that (e.g. T/F property “subscriber” which will be active only for new users).
Best regards, Victor.
This is now all new to me, I was thinking of another way but this is much shorter…lol. Just need a little clarification so I understood you correctly…
- Create two separate T/F properties (under users collection) for “One Time Premium” and “Subscription Premium”. This will allow easier switch between premium users when I switch to only subscriptions later?
Noob question. How do I connect say the Stripe Subscription component to the T/F properties of an item? I don’t see how I can connect the stripe component to a collection either.
Hi Mark @marklive,
Let me elaborate a bit.
For current setup, I assume that you have a T/F property “Premium User”. I can imagine that this property is set to True when the lifetime access is purchased. And also this property is used to “block” the users from accessing premium content (using visibility + conditions).
In some time, IAP subscriptions component becomes available. The purchasing process is similar: when user buys a subscription, Premium User is set to True.
However, there is one important difference, which happens afterwards. Subscriptions can be cancelled by users. In order see whether subscription is active or not, you will use a special function which checks the subscription status for a certain user (this is usually done upon app opening by adding an action to a button or a timer). And if subscription is expired - you have a following action to move a user to a Free tier (i.e. set Premium Access to False).
There is a way to receive changes from Apple and I think Google, but this will require creating a webhook and processing requests from it, so let’s leave this option for now.
So, imagine some user from “initial” group, with a lifetime access plan, opens the updated version of the app. The app runs a function if subscription is active… and gets the result that it is not (of course - this user never had any subscriptions), and as a consequence a user is moved to a free tier.
To avoid this, you need to run this function only for those users, who don’t have a Lifetime plan active. That’s the reason that most probably you’ll need a second T/F property for users who have purchased a subscription.
So for them you will set both properties (Premium and Subscription) to True when they buy the subscription. “Premium” will serve as an indication of access to paid content (like it was before). Subscruption status will be checked each time only for those who has “Subscription” set to true (so that you won’t disable old premium users). And if subscription expires, you set both Premium and Subscription to False.
Of course this all should be tested. I hope I didn’t make any mistake in my logic
Best regards, Victor.
Thanks for the explanation of the process. That all helps tremendously. I will have to play around with things to get a feel but this is a great start.
This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.