How to grant free months to an auto-renewal subscription (iOS)? - ios

I have an iOS app with different auto-renewal subscription possibilities, and I want to offer it's user the chance to earn a free month when they invite friends to the app.
I know how to handle the scenario where I'd give a free month to a user that's not already subscribed, but I'm wondering how to handle a user that's in the middle of a year-long paid subscription and should receive a free month..

EDIT
Make sure to read budiDino reply below, it seems this is now possible (Full disclosure, I haven't tried it myself but I did glance over the references linked).
OLD ANSWER
Ok, after some digging and asking around on Apple's forums I can confirm it's not possible.
The only way to achieve this is to give users a free month outside of Apple's subscription process...meaning users should turn off auto renewal to enjoy those free months.
Whether this is good or bad for your app depends, but it required that the user manually turns off auto-renewal while using the earner out of charge time, and then turn it on to get back into the normal auto-renewal flow handled by Apple.

You can maintain a value like additionalMonths on your server side.
So once his subscription period gets over, you can check for the value of additionalMonths and accordingly provide him subscription for those number of months.

1. Promotional Offers
This option allows you to add a free or discounted price for a period that you specify and it will be executed before the next payment cycle. You can use this feature starting with iOS 12.2.
Apple Documentation:
You can provide lapsed or current subscribers a limited-time offer of a discounted or free period of service for auto-renewable subscriptions on macOS, iOS, and tvOS.
Some useful links:
Implementing Promotional Offers in Your App
Set up promotional offers for auto-renewable subscriptions
Subscription Offers Best Practices video - WWDC 2019.
2. Offer Codes
Apple Documentation:
Offer codes can help you acquire, retain, and win back subscribers by providing a subscription at a discount or for free for a limited time.
Read more
3. "Extend a Subscription Renewal Date" endpoint:
Potentially simpler alternative that is not really suggested to use for this use-case. It has certain limitations though:
you can move the renewal date for a customer’s subscription up to 90 days into the future for each extension
you can extend the renewal date twice within a year (365 days) per customer
The following types of subscriptions aren’t eligible for renewal date extensions:
Subscriptions in a free offer period
Inactive subscriptions in a billing retry state
Subscriptions in a grace period state, with an expiration date in the past
Subscriptions that have already received two renewal date extensions within the last 365 days
Read more

Related

Consumable vs. Non-renewing vs. Renewing Subscriptions in iOS

I have created my first app and I am almost ready to submit it to the Appstore. I have spent the entirety of the last few months of quarantine focusing on this app so I am implementing a subscription in app purchase in order to repay my efforts while simultaneously adding value to my customers. There is great probability that this app will succeed.
I would like to offer 1 month, 6 months, and 12 month subscriptions. I have looked into auto-renewing subscriptions but when it comes to checking the subscription status of a user I have quickly noticed how complicated everything is with Apple's encrypted receipts.
I would like to offer subscriptions but it seem that I will be unable to offer auto-renewing subscriptions as I have absolutely no clue how to decrypt and parse Apple's receipts and resources online seem feeble.
Would it be best/easiest to have my subscriptions as non-renewable or even consumables? This way I could track my users subscription status on my own backend without the added layer of complexity that comes with parsing encrypted data from Apple.
From a business perspective, notifying a user that their subscription is ending is certainly not as effective as auto-renewing it. Will there be a noticeable difference in revenue if I set my subscriptions to consumables or non-renewing?
I thank the community ahead of time for its insights.
In your case, if you don't want to waste your time on handling auto-renewable subscriptions, you can use subscriptions backend as a service like ours or competitor's: Apphud or RevenueCat. We do exactly what you need. Hope that helps, thanks.
Auto renewable subscriptions would be the best option for you in terms of revenue. Although customers are notified by the apple itself for renewal deduction so you just need a backend services which will be keep on tracking on extending the user subscriptions through the initial receipt stored in your databases.
You need to use meta data from the receipt under key "latest_receipt" to get the latest update in the subscription.
Below is the link for reference.
https://developer.apple.com/documentation/storekit/in-app_purchase/validating_receipts_with_the_app_store#//apple_ref/doc/uid/TP40010573-CH104-SW1

Is is possible to create date-ranged in-app subscription in Apple and Google Plays stores?

We are currently offering a variety of premium plans on our app using in-app purchases and not Subscriptions. We have a 4 months plan and 1 year plan when user pays from the start (he can cancel at any-time by contacting us and our back-end manages the plans so after the period of the plan has ended he is downgraded automatically) and we want to switch this mechanism to monthly payments subscriptions for better revenue reasons.
It looks as (at least on Google Play) that we can define the billing period by weekly, monthly, etc, but the period of the subscription is still indefinit by meaning of time.
Are subscriptions are "for life" until user cancels it? How does it work?
Is it possible to create a fixed 4 months or 1 year subscription that is paid monthly until its finished automatically? How can we define that a subscription needs to end after exactly 4 months since user first purchase it? (It should also be auto-renewal month by month in that period).
If this is not possible, can we somehow create an indefinit subscriptions and "cancel" the subscription on iOS and Google Play stores for the user without him knowing? (from back-end or clients)
Also, what happens if user to buy a different subscription while he is already in one? Should he cancel and also then buy?
Thanks for any clarification. The official guidelines by both companies are no so clear.

Does free trial achievable via introductory price in IAP ?(IOS)

Summing up my R&D free trial via introductory price only meant to be free for specific time after customer bought subscription.
I want that feature to be initially free for a month and then user buy the subscription.
How can I achieve this ?Is it achievable via Introductory price?
Yes It is achievable by introductory price. You can choose free trial
duration for a month inside introductory price's.
With Free trial, New subscribers access content for free for a
specified duration(say month). Their subscription begins immediately but theywon’t be billed until the free trial period is over.
Check it out for more details : docs
If you are asking that, if user can get free month trial subscription without going for IAP subscription purchase. You need to set logic for that by your own, that after user has installed your app, he/she should be able to use services for a month and after a month all those services should get blocked. and it will be again enabled only after user purchase subscription.

Does free trial period for In App Purchases in iOS only work once?

We are integration IAP in our iOS11 app and want to give new users some start offerings with a long free trial period.
My implementation alternatives are:
Use auto-renewable subscription with a generous free trial (like 2 months for monthly subscription), and rely on Apple that a user that cancels can't restart and get 2 months again. Is this correct?
or
Make two IAPs, present the one with free trial to new users and present the one without free trails to a user that has canceled or stopped the free trail version. But users might find the IAP on App store (specially now when Apple will start feature IAP) and buy it anyway?
What is the best thing to do?
I'm managing an application with InApp Purchase and auto-renewable subscription.
As far as I know, InApp Purchase is linked to user AppStore account, and free trial can be consume only once per account.
If you present the same product after a free trial period, the user will resume your auto-renewable subscription and not benefit the free trial again.
So in my mind the first option is the best.
However if you would like to implement the second one, you should know that the new IAP management feature in your product store page allow you to show and hide the subscriptions you want.
For more information about this new feature, take a look at the WWDC video : What's New in StoreKit

Setting expiry date for Non-Renewable subscription using storekit

I am writing a non-renewable subscription module for my new application. It includes 1 month, 3 month and 6 month subscription period. I do not understand, how to set expiry date using icloud. Any help would be appreciated?
For Apple, there is no "within the validity period" for non-renewing subscriptions. The duration of the period, fortunately or unfortunately, is left up to the developer.
Subscription validity/expiry date is up to the developer.
It seems common for developers to use their own server to track the expiry period of a non-renewing subscription.
"So if When you use iCloud for restoration you should have to manage expiry date on your own server..."
Non-renewable subscriptions. Subscriptions that don’t involve
delivering episodic content. Examples include access to a database of
historic photos or a collection of flight maps. It’s your app’s
responsibility to make the subscription available on all of the user’s
devices and to let users restore the purchase. This product type is
often used when your users already have an account on your server that
you can use to identify them when restoring content. Expiration and
the duration of the subscription are also left to your app (or your
server) to implement and enforce.
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html
Hope it help you.

Resources