Question

How to make one Offering with different pricing but all in one month

  • 15 May 2024
  • 2 replies
  • 22 views

Badge +1

Hello, I'm encountering an issue with my app.

In my application, users have the option to upgrade to support the app, essentially making a donation without receiving any additional benefits. Users can choose the amount they wish to donate monthly, ranging from 1€ to 10€.

Now, I'd like to consolidate all these options into a single offering, but it appears that I'm unable to do so. Whenever I try to add a package, I receive the message: "The package's display name or identifier already exists for this app."
Although i can attach just Product to a Package.

Is there a method to combine all donation amounts into one offering instead of having four separate offerings?

P.S.: I'm pursuing this because it would streamline the implementation of the UI and simply display the revenuecat title/description in the app rather than coding it myself.

 

This post has been closed for comments

2 replies

Badge +1

Okay.
It seems i can achive what i want if i go on Packages → New → Custom → something Like (“monthly2€”) and so on…

But my Identifier now doesn’t look like this:
$rc_monthly (Monthly) (autogenerated if i press Monthly)

It looks like this:
Monthly2

Feels wrong, hope it will not break anything.

Userlevel 5
Badge +9

Hey @luca-köster,

That’s correct, every offering can only have one package of each duration. So for example you can have a weekly, monthly, and annual package all in one offering with the appropriate labels.

If you need to add multiple offerings of the same duration, for example two monthly products, then only one can be labeled and the others need to be “custom”. This does mean that you can’t use they dynamic labeling of the paywalls, so you can’t simply do `offerings.offering(identifier: "experiment_group")?.monthly`. Instead you will want to get all available offerings and loop through them, similar to this:

       Purchases.shared.getOfferings { (offerings, error) in
if let packages = offerings?.offering(identifier: "my_offering")?.availablePackages {
// access standard package properties like price, duration, etc
}
}