I've been using RevenueCat for managing my iOS app subscriptions, and I recently decided to experiment with pricing using their A/B testing feature.
Here's how it works: In RevenueCat, you can run A/B tests by setting up a new subscription group in Apple's App Store Connect and creating an extra offering in RevenueCat to test against the original one. RevenueCat then presents the test to specific users and provides you with the results. You can read more about setting up A/B testing with RevenueCat here: https://www.revenuecat.com/blog/engineering/price-testing-for-mobile-apps/
However, when I completed the A/B test and decided to switch to the new pricing model, I encountered an issue. I changed the default offering to the one I tested, and an existing subscriber accidentally subscribed again.
Here's where things can get confusing: Offerings are not isolated environments. If a user subscribes to offering A, they can still subscribe to offering B. This happened because I set up offering A in a different subscription group from offering B.
To prevent users from accidentally subscribing twice, you have two options:
1. Implement safeguards in your app or server to prevent this from happening. (Recommended)
2. Ensure that both offering A and offering B are part of the same subscription group. (Not recommended because the user will be able to see these options from Apple's Subscription Details page.)
I found this to be a bit unclear at first. Apple does not currently have a way to manually unsubscribe an individual subscriber, so be careful. If you want to unsubscribe someone on your end, the only option is to remove your subscription from the store. This will remove all subscribers to that subscription. Fortunately, my test offering had a 1-week free trial, and only one subscriber encountered the issue. I simply removed that subscription from being available for purchase to ensure that the existing subscriber would not be charged twice.
Read more about iOS Subscription Groups here: https://www.revenuecat.com/blog/engineering/ios-subscription-groups-explained/