28.2 · Subscription groups, renewal states, grace period, billing retry and offers
Subscriptions are a state machine owned by Apple, and your app only sees snapshots of it. Knowing the states and who may change them prevents both free access and angry paying users.
Mental model. Think of one group as one seat: a user holds at most one active subscription in it, moves between levels by upgrade, downgrade or crossgrade, and passes through grace and billing retry when a payment fails.
States and groups
Renewal states, grace period, billing retry, and how plan changes take effect.
- What are the subscription renewal states, how do grace period and billing retry differ, and who should keep access?
An auto-renewable subscription reports a Product.SubscriptionInfo.RenewalState: .subscribed, .expired, .inBillingRetryPeriod, .inGracePeriod or .revoked. The…
Offers
Introductory, promotional, offer-code and win-back offers, and who signs what.
- How do subscription groups and levels govern upgrades, and what are introductory, promotional, offer-code and win-back offers?
Subscriptions that compete live in one subscription group; a user can hold only one active subscription per group, ordered by level (level 1 is the highest).…
More in Purchases & subscriptions
- 28.1 · Products, prices, the purchase call, verification and the update stream
- 28.3 · What the user owns: entitlements, restore, family sharing, refunds and revocation
- 28.4 · JWS, certificate chains, notifications, the Server API and why receipts gave way to transactions
- 28.5 · Paywall design, price display and testing with StoreKit configuration, sandbox and TestFlight
- 28.6 · App Review rules, external purchases and designing a billing platform
- 28.7 · Building the integration: the store object, the catalogue, the SwiftUI views, status, account tokens and tests