Hello,
We would like to report an issue we are facing with the RevenueCat framework.We are implementing the delegate to receive subscription status changes, as it’s recommended in the documentation: https://docs.revenuecat.com/docs/purchaserinfo#listening-for-purchaser-info-updates
Quite often, this delegate is called with invalid subscription information. For example, here is one callback from today, December 13th -- the app wasn’t launched since friday, and instead of fetching the new subscription status (which should be “expired”), it returned an active subscription from December 10th:
delegate update info: <PurchaserInfo
originalApplicationVersion: 1.0,
latestExpirationDate: 2021-12-10 16:04:57 +0000
activeEntitlements: {
PremiumAccess = {
billingIssueDetectedAt = null;
expiresDate = “2021-12-10 16:04:57 +0000";
isActive = Yes;
isSandbox = Yes;
latestPurchaseDate = “2021-12-10 16:01:57 +0000”;
originalPurchaseDate = “2021-12-06 16:39:57 +0000";
periodType = null;
productIdentifier = “com.neybox.today.premium.monthly”;
store = 0;
unsubscribeDetectedAt = null;
willRenew = Yes;
};
},
activeSubscriptions: {
“com.neybox.today.premium.monthly” = {
expiresDate = “2021-12-10 16:04:57 +0000”;
};
},
nonConsumablePurchases: {(
)},
requestDate: 2021-12-10 16:03:21 +0000
firstSeen: 2021-12-09 18:13:32 +0000,
originalAppUserId: C6611DDC-E232-4936-95AC-586C7108D951,
entitlements: {
PremiumAccess = {
billingIssueDetectedAt = null;
expiresDate = “2021-12-10 16:04:57 +0000";
isActive = Yes;
isSandbox = Yes;
latestPurchaseDate = “2021-12-10 16:01:57 +0000”;
originalPurchaseDate = “2021-12-06 16:39:57 +0000";
periodType = null;
productIdentifier = “com.neybox.today.premium.monthly”;
store = 0;
unsubscribeDetectedAt = null;
willRenew = Yes;
};
},
>
Using the `purchaserInfo` API (https://docs.revenuecat.com/docs/purchaserinfo#get-user-information), we do get the correct, expired, subscription status.
manual update info: <PurchaserInfo
originalApplicationVersion: 1.0,
latestExpirationDate: 2021-12-10 18:06:51 +0000
activeEntitlements: {
},
activeSubscriptions: {
},
nonConsumablePurchases: {(
)},
requestDate: 2021-12-13 08:59:21 +0000
firstSeen: 2021-12-09 18:13:32 +0000,
originalAppUserId: C6611DDC-E232-4936-95AC-586C7108D951,
entitlements: {
PremiumAccess = {
billingIssueDetectedAt = null;
expiresDate = “2021-12-10 18:06:51 +0000";
isActive = No;
isSandbox = Yes;
latestPurchaseDate = “2021-12-10 18:03:51 +0000”;
originalPurchaseDate = “2021-12-06 16:39:57 +0000";
periodType = null;
productIdentifier = “com.neybox.today.premium.monthly”;
store = 0;
unsubscribeDetectedAt = “2021-12-10 18:06:55 +0000";
willRenew = No;
};
},
>
We’ve implemented on our side a check for `requestDate`, ignoring old responses, but we thought to share this in case there is something we or the framework should do to make sure the delegate callback is up to date. We are using a sandbox account for this test.
Thank you!