Well...we also have the 2x2 setup - two plans, basic and pro, with two periods: monthly and annual. We obtained information about changing subscription types on the client side by implementing our logic.
Using RenewalInfo, we can retrieve autoRenewPreference, which represents the next subscription product ID. When a change occurs, we compare it to the new ID, and then it's a matter of implementing an if-else code structure to cover all possible states (DOWNGRADE, UPGRADE, CROSSGRADE, and NO_INFO).
Like this (but more complex):
if ((isCurrentMonthly && isNextAnnual) || (isCurrentAnnual && isNextMonthly)) {
return ChangeSubscriptionType.CROSSGRADE
}
Disclaimer: Don't know if it's the best solution, but it's 100% working for us ;).
Topic:
App & System Services
SubTopic:
StoreKit
Tags: