J'utilise FCM pour fournir des notifications dans mon application. Tout a bien fonctionné, mais maintenant je me suis rendu compte que, lorsque j'installe mon application avec Android Studio (et non avec GooglePlay), le jeton est nul au premier lancement. Lorsque je ferme mon application et que je la redémarre, le jeton n'est plus nul. Quelles sont les causes de ce problème et comment puis-je l'éviter?Android: jeton Firebase est null au premier lancement
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();
}
}
}
En MainActivity:
FirebaseMessaging.getInstance().subscribeToTopic("topic");
String token = FirebaseInstanceId.getInstance().getToken();
Log.d("TOKEN", token);
retours Dernière log null lorsque l'application est installé et démarré pour la première fois
script Inscription:
<?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);
}
?>
mon doute est pourquoi nous devons appeler cela à chaque fois FirebaseMessaging.getInstance(). SubscribeToTopic ("topic"); avant d'obtenir l'instance de jeton. – Ruban