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