I'm testing subscription downgrade and upgrade cycles in sandbox, and seeing a behavior I can't explain.
- Code is generally similar to WWDC sample code for StoreKit2, including listening to incoming transactions.
- Three entitlement levels, say, Standard, Plus, Pro
- Corresponding subscription plans all same duration (quarterly)
I go through this purchase sequence quickly,
- Purchase the Pro plan
- Before the Pro plan expires, purchase the Standard plan
- Still before the Pro plan expires, purchase the Plus plan
Transaction.currentEntitlements after each of the purchases (logged in transaction listener),
- After step 1: { Pro plan }
- After Step 2: { (only) Pro plan }
- After Step 3: { Plus plan , Pro plan }
I was expecting to see {Standard, Pro } in entitlements after step 2 (user entitlement calculated from the set is still correct -- Pro). If that's not the case then why after step 3 entitlements includes both Plus and Pro plans?