Non-renewing IAPs (e.g. one time purchases) unlock lifetime entitlement access. When lifetime access to rocketsim_pro is purchased, that “Entitlements” card will show the purchase date, since there’s no expiration - this would also override the display of any future subscription purchase, since the lifetime access is still active.
However, the latest purchase date for the entitlement through the REST API / SDK should be updating. Can you make a GET /subscribers
call and confirm?
Ah yeah, that must be it! Though, wouldn’t you expect the entitlement to return the actual `latestPurchaseDate`? In other words; shouldn’t the renewing subscription overwrite the non-renewing one since it’s newer?
I’ll look into `GET /subscribers`, though, I should likely built in a hard-coded check using `activeSubscriptions` don’t you think?
Though, wouldn’t you expect the entitlement to return the actual `latestPurchaseDate`? In other words; shouldn’t the renewing subscription overwrite the non-renewing one since it’s newer?
Yes, it should. Can you make a GET /subscribers call for this customer and confirm?
> Yes, it should. Can you make a GET /subscribers call for this customer and confirm?
I wonder how I would do that w/o an app update, that’s not really possible, is it? Or do I miss some context here?
Oh sorry! As long as you have their App User ID, you can make the request through our REST API: https://docs.revenuecat.com/reference#subscribers
For authentication you can use the same API key you’ve embedded in your app. This is the same endpoint the SDK calls to check subscription status, so it can be used to confirm what behavior the device is seeing.
Thanks, Ryan, that helped!
However, the latest purchase date for the entitlement through the REST API / SDK should be updating. Can you make a GET /subscribers
call and confirm?
This is not the case, unfortunately:
{
"request_date": "2021-11-14T13:36:26Z",
"request_date_ms": 1636896986009,
"subscriber": {
"entitlements": {
"rocketsim_pro": {
"expires_date": null,
"grace_period_expires_date": null,
"product_identifier": "com.rocketsim.yearly.subscription",
"purchase_date": "2020-10-22T14:12:58Z"
}
},
"first_seen": "2020-10-22T14:11:28Z",
"last_seen": "2021-11-14T13:34:43Z",
"management_url": "itms-apps://apps.apple.com/account/subscriptions",
"non_subscriptions": {
"com.rocketsim.yearly.subscription": i{
"id": "XXX",
"is_sandbox": false,
"original_purchase_date": "2020-10-22T14:12:58Z",
"purchase_date": "2020-10-22T14:12:58Z",
"store": "app_store"
}]
},
"original_app_user_id": "XXX",
"original_application_version": "3.0.1",
"original_purchase_date": "2020-10-22T14:10:43Z",
"other_purchases": {
"com.rocketsim.yearly.subscription": {
"purchase_date": "2020-10-22T14:12:58Z"
}
},
"subscriptions": {
"com.rocketsim.yearly.renewing.subscription": {
"billing_issues_detected_at": null,
"expires_date": "2022-11-10T14:56:42Z",
"grace_period_expires_date": null,
"is_sandbox": false,
"original_purchase_date": "2021-11-10T14:56:43Z",
"ownership_type": "PURCHASED",
"period_type": "normal",
"purchase_date": "2021-11-10T14:56:42Z",
"store": "app_store",
"unsubscribe_detected_at": null
}
}
}
}
In this response, my expectation would be that the entitlement latestExpiryDate would be set to the `subscriptions.expires_date`, does that make sense?