AFAIK, you no longer have to expect working with Canonical IDs (although having your server/client to be able to handle them would be good). Ever since FCM came into play, I haven't seen Canonical IDs being used anymore.
A portion from my answer here:
In FCM, it seems the Canonical IDs are no longer used (or at the very least extremely rarely) because of how the Instance ID service works. To put it simply, the service works that there would only be one valid token per App Instance.
If the older token expires (for whichever reason), FCM triggers a tokenRefresh event where you would get a new registration token, and where you must also handle it accordingly (in onTokenRefresh()
).