Can I extend the users current auto-renewable subscription expiration date - ios

I would like to implement a referral feature in an app that would add days to the user's current active subscription. Is there a way to do that using Apple's auto-renewable subscriptions?
Example
A user has a 12-month subscription that will renew in 3 months for an additional 12 months
The user refers a friend to use the app
Expected result
The user has a 12-month subscription that will renew in 4 months for an additional 12 months

To sum up:
NO.
https://developer.apple.com/forums/thread/38689
Extend a Subscription Renewal Date API:
Compensation up to 90 days twice a year.
The extension period doesn’t count toward the one year of paid service when the App Store calculates the developer’s commission rate.
Apple Developer Documentation:
https://developer.apple.com/documentation/appstoreserverapi/extend_a_subscription_renewal_date
AppStore Server API documentation:
https://developer.apple.com/documentation/appstoreserverapi
Apple subscriptions documentation:
https://developer.apple.com/app-store/subscriptions/

Related

How Apple IAP Auto-renewable multiple subscriptions for same product works?

In my iOS app I have implemented an Auto-renewable subscription for one year. Let's say a user purchased a subscription one month ago, which will end after 11 months. At this time if the user purchase again he is getting the subscription for the next 12 months which I wanted to have for 11 + 12 = 23 months.
I was wondering:
Is it a limitation or a basic workflow of the category "Auto-renewable" product of Apple IAP.
Which category I should use to accomplish such type of subscriptions?
An auto-renewing subscription is either active or it isn't.
Once a user has purchased it, the subscription will renew automatically at the end of the current period unless they cancel the automatic renewal.
If they do cancel the renewal, then once that subscription period is up they can re-activate it by "purchasing" the subscription again.
It isn't possible to "stack" auto-renewing subscription IAPs.
If you use a non-auto renewing IAP then it is up to you to calculate the validity period for the users subscription. If they purchase another 12 months while the current 12 month subscription is active then you can add those periods together.

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.

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.

How to grant free months to an auto-renewal subscription (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

How to set up In-App purchase Free for One Year?

In my application, I have to give my app features free for one year but user should be charged for every one year later.
The Auto-Renewable Subscription does not give a Free Trial for one year. The Auto-Renewable Subscription’s max free Trial Duration is 3 Months. I can use this Auto-Renewable Subscription after first year. But for giving free subscription for one year which In-App Purchase type should I use and how to validate user that his one year free subscription has expired?
You can use Non renewing subscriptions for this, and you can handle the date of expiration using a Web Service.
Details on non renewing subscriptions:
http://www.raywenderlich.com/36270/in-app-purchases-non-renewing-subscription-tutorial

Resources