title: Why does FCM changes token some times
body: <p>What I learned about FCM is that its token never gets expired unless;</p>
  
  <ul>
  <li>The app deletes Instance ID</li>
  <li>The app is restored on a new device</li>
  <li>The user uninstalls/reinstall the app</li>
  <li>The user clears app data.</li>
  </ul>
  
  <p>I have provided a option to user to enable/disable notification, user clicks on disable and i send <code>null</code> to server, and <code>FirebaseInstanceId.getInstance().getToken()</code> when user enable <code>push notifications</code></p>
  
  <p>Now some times it sends the same token when user re-enable the notifications, and few times it changes the <code>FCM Token</code>.</p>
  
  <p>My Questions are:</p>
  
  <ol>
  <li>Why does it change the <code>Token</code>, when nothing of the 4 conditions
  mentioned above are <code>true</code>, and if it's changing it randomly, then there is a chance that it changed the token at any point of time,
  and the server is sending the notification to the wrong Token.</li>
  <li>I noticed that, if I clear data, and open the app, it hits for Token
  registration and gets the same token sometimes does it store <code>udid</code>
  of devices, or what mechanism, by which it knows that it's the same
  device.</li>
  </ol>