Android: токен Firebase имеет нулевое значение при первом запуске

Я использую FCM для предоставления уведомлений в моем приложении. Все работало хорошо, но теперь я понял, что, когда я устанавливаю свое приложение с помощью Android Studio (не из GooglePlay), токен становится нулевым при первом запуске. Когда я закрываю свое приложение и перезапускаю его, токен больше не является нулевым. В чем причина этой проблемы и как ее избежать?

InstanceIDService:

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();
        }
    }
}

В MainActivity:

FirebaseMessaging.getInstance().subscribeToTopic("topic");
String token = FirebaseInstanceId.getInstance().getToken();
Log.d("TOKEN", token);

Последний журнал возвращает ноль, когда приложение установлено и запущено в первый раз

Сценарий регистрации:

 <?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);
}
?>

Ответы на вопрос(9)

Ваш ответ на вопрос