In my application I have a logic of a 3 days free use period, that I provide to the user by granting them Promotional Entitlements through RevenueCat API. During that period user can manually click the upgrade button to start a play store/app store subscription. I would expect that once the store subscription is purchased, promotional entitlements would be replaced with the ones from subscription. However this doesn’t happen, which causes some problems.
For example, I can’t tell if user is currently using play store/app store 7 days subscription-trial (available once, after which they got billed automatically), because entitlement.storeType is always equal to promotional and entitlement.periodType is always equal to normal. Also all the entitlements have product indentifiers starting with rc_promo. Only after the promotional entitlement is expired, they get replaced with correct data from app store/play store.
Currently as a workaround I manually revoke promotional entitlements upon store subscription purchase, but that is not ideal.
Is there a way for me to prioritize store bought subscription entitlements over RevenueCat promotional entitlements?
Related
In Google Play Console, I have previously created yearly and monthly subscriptions and they work just fine, however now I want to create a subscription where the user only pays once and gets a lifetime subscription to the application.
Unfortunately, when I create a new subscription, it is required to select one "Renewal Type", which has the most a period of 1 year
How can I create a subscription, where the user only pays once and is never charged again?
Google Play Console: Create New Subscription
This would technically not fall into the Subscription category. A Subscription has to have recurrent billing. I see two potential solutions to your case:
You could go to the App Pricing page and set a price for your app there.
You can create an In-app product that would not expire.
I see an increasing number of developers using the second option. A good example would be Forest.
I have my paid app in Playstore and AppStore. Now as per our requirement I want to convert a paid app as a yearly subscription.
For example, Users purchase the app at $50 and that will be their first-year subscription. Is that possible?
I notice both Playstore and AppStore only have two options for downloading the app that is,
Users can download the app for free.
Users need to pay some amount to download the app, and users can use that app for a lifetime.
So there is no subscription option for downloading the app.
But Playstore and AppStore provide subscription options as In-app purchases.
To achieve my requirement, I have a thought to implement the below idea,
Once users paid and download the app, we will allow the user to use the app for one year. Then after one year, we will ask for the subscription(In-app purchase) when opening the app (without any free content in the app for the user), the user needs to pay to continue to use it. If payment is successful then I allow the user to login the app, if-else the user needs to exit the app.
Will the AppStore and PlayStore accept the above idea?
Is this possible? If not, please suggest a solution for us?
The main goal is users need to pay $50 per year.
Thanks in advance.
re the Play Store. If you want to have a subscription you need to make your app Free and then add your subscription(s).
See in Google Play console
Monetise,
Products,
App Pricing,
In-App products,
Subscriptions
App Pricing - make it Free. Note you can't change back to Paid after making it free, so make sure you understand that before making it free.
Subscriptions - Enter your subscription details and make the subscription active.
Any app that is marked as Free will have an install button on Google Play. If it is a paid app then the user will be prompted to pay for it before they can download it.
A subscription can have a trial period. The user is only charged when the trial period ends or you option to control the trial within your app via your own server etc.
I can’t comment re the Apple Store.
I added a paid app to the Google Play Store a few weeks ago. Over 2/3 of the purchases are refunded within an hour after payment, reason: user requested a refund.
I see the number of users and the country in the Play Console, so it seems those refunded are still using the app after the refund.
Is there a possibility to check in my code if the app has been paid (as it is not an in-app purchase I don't get a token, purchase ID, etc)? I can't find anything in the Android docs.
I have developed an app in which I want to give a premium version of an app with ad removal and some extra features in-app products.
So, my question is how to verify if a user had purchased already; Then, when a user opens the app, I know if I should give them a premium interface.
Here's the documentation overview for In App Billing, where it says:
Google Play tracks and manages the ownership information of managed products. When a user purchases a managed product, Google Play stores the purchase information for each product on a per-user basis. This enables you to later query Google Play at any time to restore the state of the products a specific user has purchased. This information is persistent on the Google Play servers even if the user uninstalls the application or if they change devices.
To provide premium content, you'll need to create a managed product that doesn't get consumed in the app when the user purchases it. In order to query the user's in-app purchases, send a getPurchases() request, that will return all the current un-consumed products owned by the user.
If you find the premium content in this response, you know the user has purchased it and can grant them the premium interface.
Google Play Billing AIDL is now deprecated and will be removed in a future release. To implement Google Play Billing features, use the Google Play Billing library and to get purchases details for all the items bought within your app use: queryPurchases(skuType).
I am developing an application with subscription feature using Inapp Billing v3.There is login mechanism to access the application. If a user 'X' subscribes to a feature and logs out. If user 'Y' logs into application in same device and if the user attempts to subscribe, Google play tells that product is already bought. Are the subscriptions based on account synced in the device and not based on the user who logged onto the application? If so how is it possible to implement my scenario?
Google Play in-app billing subscription is bound to Google Play account. So as long and Google account is not changed the subscription is considered valid for this account and you cannot purchase it one more time.
If you want to substitute Google account system with your own accounts you need to "cheat" Google Play. What you can do is to create a pool of several different in-app billing subscriptions (like subscription #1, subscription #2, etc). When you subscribe you pass your own login as an additional parameter in developerPayload field.
Now when you enumerate all available subscriptions you check if there is one with current user account in the developerPayload field. If not, then you consider that current user has no subscription and allow to subscribe using the first not used yet subscription from the pool of subscriptions (subscription #1, subscription #2, etc) you generated. Just make sure that there is number of subscriptions in your pool is bigger than number of users on the same device you could have.
It is not a straightforward way, but rather a cheat to find a workaround for your situation.
Currently google IAB supports only one account(Primary gmail account on device) on one device. But from Android 4.2 multiuser feature is available and google is working on giving same support for IAB.