Firebase (FCM) registration token

2019-03-29 10:40发布

问题:

I am the new for FCM. Here are some questions about the registration token:

  1. Is the registration token generated by the FCM connection server?
  2. Does the token change periodically in the connection server?
    • When?
    • Will it force the onTokenRefresh() in the app to be called?

I have googled for a week but didn't get any details. Please help. Thanks.

回答1:

1. Is the registration token generated by the FCM connection server?

No. It gets generated by the FirebaseInstanceID. The way I understand the flow of event on first time registration:

  1. The app retrieves a unique Instance ID.
  2. The registration token is generated by calling the InstanceId.getToken().
  3. Developer (usually) sends the token to the App Server.

2. Does the token change periodically in the connection server?

I think the onTokenRefresh() docs pretty much answers this.

Called when the system determines that the tokens need to be refreshed. The application should call getToken() and send the tokens to all application servers.

This will not be called very frequently, it is needed for key rotation and to handle Instance ID changes due to:

  • App deletes Instance ID
  • App is restored on a new device
  • User uninstalls/reinstall the app
  • User clears app data

The system will throttle the refresh event across all devices to avoid overloading application servers with token updates.

See this part of the docs for more details.