According to In-App Subscription documentation there is no mechanism to detect when the user cancels the subscription. Since it is not canceled immediately. Instead it waits for the end of the cycle for the subscription to expire.
Excerpt from document (source)
When the user cancels a subscription, Google Play does not offer a
refund for the current billing cycle. Instead, it allows the user to
have access to the canceled subscription until the end of the current
billing cycle, at which time it terminates the subscription. For
example, if a user purchases a monthly subscription and cancels it on
the 15th day of the cycle, Google Play will consider the subscription
valid until the end of the 30th day (or other day, depending on the
month)
The app won't receive any kind of notification when user cancels the subscription.
The behavior of subscription is whenever you query the inventory in the app SKU will be returned if subscription is valid. When the subscription expires the SKU won't be returned when you query the inventory.
According to the documentation in this link
It is okay to run a batch query whenever subscription is nearing the end
Excerpt from document (source):
Query for subscription status only at expiration — Once your server
has retrieved the expiration date of subscription tokens, it should
not query the Google Play servers for the subscription status again
until the subscription is reaching or has passed the expiration date.
Typically, your servers would run a batch query each day to check the
status of expiring subscriptions, then update the database
The following server api lets you query the subscription status:
https://developers.google.com/android-publisher/api-ref/purchases/subscriptions#resource-representations
The variables autoRenewing
and cancelReason
will let you know if the subscription has been canceled.
By using the above API you would be able to implement a system wherein the subscription nearing expiration can be queried for status and then determine whether they are canceled or not.
Full details for subscription cancellation can be found at this link.
Note:
Documentation states that you should continue to provide the content as long as the user has valid subscription. If you are planning to deny access to the content if someone canceled the subscription will go against the Google Policy
Excerpt from document (source)
Important: In all cases, you must continue to offer the content that
your subscribers have purchased through their subscriptions, as long
any user is able to access it. That is, you must not remove any
content while any user still has an active subscription to it, even if
that subscription will terminate at the end of the current billing
cycle.
realtime-notification
no longer exists. Similar information can be found here, though: developer.android.com/google/play/billing/… – Silda