title: Android: Firebase token is null at first run
body: <p>I am using FCM to provide notifications in my app. Everything worked well, but now I realised that, when I install my application using Android Studio (not from GooglePlay) the token is null at first run. When I close my app and restart it, the token is not null anymore. What cause this problem and how can I avoid it?</p>
  
  <p>InstanceIDService:</p>
  
  <pre><code>public class InstanceIDService extends FirebaseInstanceIdService {
  
      @Override
      public void onTokenRefresh() {
  
          String token = FirebaseInstanceId.getInstance().getToken();
          registerToken(token);
      }
  
      private void registerToken(String token) {
  
          OkHttpClient client = new OkHttpClient();
          RequestBody body = new FormBody.Builder()
                  .add("Token",token)
                  .build();
  
          Request request = new Request.Builder()
                  .url("url_to_registration_script")
                  .post(body)
                  .build();
  
          try {
              client.newCall(request).execute();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>In MainActivity:</p>
  
  <pre><code>FirebaseMessaging.getInstance().subscribeToTopic("topic");
  String token = FirebaseInstanceId.getInstance().getToken();
  Log.d("TOKEN", token);
  </code></pre>
  
  <p>Last log returns null when app is installed and started for the first time</p>
  
  <p>Registration script:</p>
  
  <pre><code> &lt;?php 
   if (isset($_POST["Token"])) {
  
         $_uv_Token=$_POST["Token"];
         $conn = mysqli_connect("localhost","user","pass","db") or die("Error connecting");
         $q="INSERT INTO users (Token) VALUES ( '$_uv_Token') "
            ." ON DUPLICATE KEY UPDATE Token = '$_uv_Token';";
  
    mysqli_query($conn,$q) or die(mysqli_error($conn));
    mysqli_close($conn);
  }
  ?&gt;
  </code></pre>