How to Set-Up in App Purchase Free Trial Period in iOS App

Proper way of Apple in app purchase with free trial in flutter

You can change the settings of the in-app purchase item from app/play store, there is an option to add an introductory/trial offer where you can mention the trial period. In the code, you can deliver the item accordingly.

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

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

Free trial period for iOS non-subscription apps

Good question,

They did NOTHING on the SDK side. All they did is change the Appstore guidelines. You as a developer are responsible for handling all the aspects.

how and when do you present the user with the option for starting the
trial? Is this a modal dialog presented on opening the app?

On you to decide, but I advise you to do that as soon as user start the App to eliminate any misunderstandings.

how do you interact with the user when the trial has expired? Another
modal dialog?

The same as the first one :(

how is the app represented in the app store? It is a paid app but has
an initial price of 0. How does this work?

It's free (which in my opinion is really bad since a user assuming that your app is free and may get frustrated when finding out that it's actually not. Also, that removes the possibility to sell app witch discount for 500, and etc copies for as bulk sell.

How to support / offer iOS subscriptions with a free trial period?

Problem 1 : Understanding eligibility

He will be charged for the subscription immediately. Free-trial can be availed only once

Problem 3 : How to handle eligibility?

  1. Do I have to setup two different subscription products in App Store Connect (one with free trial and one without) to let the user
    purchase the one or the other?

    No. You only need to setup one product and add Introductory offer (free trial or intro offer)

  2. Or the eligibility check only necessary to display the correct UI ("Purchase now with free trial" vs "Purchase now") while I can use the same product in both cases?

    It is only for showing correct CTA and messaging. At the end of the day, Store(Apple) is the one who is taking the decision if user will get free-trial or not

To check eligibility of the user you need to pass the receipt to your server. Your server can then query Apple for the decoded receipt (/verifyReceipt endpoint). In decoded receipt, check all the txn in latest_renewal_info list. if you find is_in_free_trial field to be true for any product in same subscription group then you can safely assume that user has used free trial before and show right messaging to the user.

Also, user can get free trial only once per subscription group even if all the products under that have free trial enabled.

I agree that Apple would have provided eligibility in the app itself while querying the product. But trust me none of the App stores provide this information including Google.

As far as login is concerned, the receipt is always present at a sandbox location and can be retrieved from there. (Also, do consider that user anyway can't buy the subscription if he is not logged in)

Non-consumable Free trial

Introductory offers such as free trials are not available for non-consumables products. Only auto-renewable subscriptions can have introductory offers. More info here: https://developer.apple.com/documentation/storekit/original_api_for_in-app_purchase/subscriptions_and_offers/implementing_introductory_offers_in_your_app

How to make IAP purchase request with free trial period?

I found How can I do payment request subscription product with trial period. I have to set payment's paymentDiscount with a SKPaymentDiscount object.

let payment = SKPayment(product: product)
payment.paymentDiscount = SKPaymentDiscount(identifier: <String>, keyIdentifier: <String>, nonce: <UUID>, signature: <String>, timestamp: <NSNumber>)
SKPaymentQueue.default().add(payment)

Before we can apply the offer we need to convert our SKProductDiscount into an SKPaymentDiscount. The init method for SKPaymentDiscount provides some clue to what we’ll need to achieve that:

  • identifier — The identifier of the subscription offer
  • keyIdentifier — The identifier of the subscription key used to sign the offer
  • nonce — A throwaway value generated along with the signature
  • signature — The signature itself
  • timestamp — The timestamp when the signature was generated.

You can find full process this tutorial

Setup Free Trial for Paid Apps

Apple doesn't provide any simple support for trial periods for "normal" paid apps.

You would need to setup your app as free with an in-app purchases for the full version of the app.

You would need to implement your app to give the user full functionality for some amount of time and then fall back to some limited level of functionality after that time runs out. If, at some point, the user purchases the upgrade, you give them the full functionality forever.

You can add whatever prompting at first load and during the trial period that you want to remind the use how much time is left and that they can upgrade through the in-app purchase.

Receipt validation can be used to keep a user from deleting and reinstalling the app to "reset" the trial period. You can get the original "purchase" (download) date from the receipt.

It's a shame that Apple doesn't allow normal trial periods for non-subscription based paid apps.



Related Topics



Leave a reply



Submit