28.3 · What the user owns: entitlements, restore, family sharing, refunds and revocation
Selling is one moment; owning is every launch after it. Entitlement logic is where free access, double charges and support tickets come from.
Mental model. Compute access from facts the store signed (current entitlements, revocation date, expiry), never from a flag you set once at purchase time.
Computing entitlements
Which transactions count, and why a purchase-time flag is not enough.
- How do you compute what a user is entitled to, and which transactions are excluded from Transaction.currentEntitlements?
The rule of thumb: derive access, never store it. At launch, after every Transaction.updates element, and after a purchase, iterate…
Restore, sharing and refunds
Restore on a new device, family sharing, refunds, and removing access.
- How do restore, Family Sharing and refunds work in StoreKit 2, and how should the app remove access?
Restore. With StoreKit 2 entitlements sync automatically through the Apple ID, so a new device normally sees currentEntitlements without any action. App Review…
More in Purchases & subscriptions
- 28.1 · Products, prices, the purchase call, verification and the update stream
- 28.2 · Subscription groups, renewal states, grace period, billing retry and offers
- 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