Qué usar ahora que FirebaseInstanceId.getInstance().getToken () está obsoleto [duplicar]
Esta pregunta ya tiene una respuesta aquí:
- FirebaseInstanceIdService está en desuso 4 respuestas
Me gustaría saber cuál sería la forma correcta de obtener Firebase token para enviar notificaciones push ahora que getToken() está obsoleta.
4 answers
Añadiendo a la respuesta de Facundo, el servicio FirebaseMessagingService
ahora tiene un método onNewToken(String token)
que lo anula para obtener un nuevo token.
Nota: No pude publicar un comentario debido a la reputación insuficiente
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-14 18:47:56
Este método fue obsoleto. A favor de getInstanceId ().
Use getInstanceId(). Devolverá una tarea con e InstanceIdResult. Así:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
// Do whatever you want with your token now
// i.e. store it on SharedPreferences or DB
// or directly send it to server
}
});
ACTUALIZACIÓN : Aunque es cierto que este enfoque reemplazará literalmente el uso de FirebaseInstanceId.getInstanceId().getToken () , no resuelve el hecho de que FirebaseInstanceIdService también está obsoleto dejándonos con otra pregunta que es: ¿dónde usarlo? Se puede utilizar en cualquier contexto de actividad que siempre devolverá el token. Pero, ¿qué pasa si queremos obtener el token solo en la creación y cuando rara vez se actualiza? Para ello, debe anular el nuevo método onNewToken de nuestra antigua implementación FirebaseMessagingService : (Sí, "Mensajería", no "InstanceID")
@Override
public void onNewToken(String s) {
super.onNewToken(s);
String deviceToken = s;
// Do whatever you want with your token now
// i.e. store it on SharedPreferences or DB
// or directly send it to server
}
De esta manera el código seguirá siendo más delgado y ni siquiera será necesario usar el primer enfoque.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-05 02:33:57
FirebaseInstanceIdService fue obsoleto .!
Simplemente anula onNewToken()
en FirebaseMessagingService
public class LatestFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String mToken) {
super.onNewToken(mToken);
Log.e("TOKEN",mToken);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}}
{[7] {} En[5]}
<service
android:name=".LatestFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
getToken()
Esto también está en desuso.!
Si necesita obtener token en su actividad, use el siguiente código.
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String mToken = instanceIdResult.getToken();
Log.e("Token",mToken);
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-16 05:50:10
Puede extender FirebaseInstanceIdService, e implementar onTokenRefresh(), y en ese método enviarlo a su servidor backend, o guardarlo en las Preferencias para su uso posterior.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
//or if you want to wait until your user is logged in
//save it in your preferences
saveTokenInPreferences(refreshedToken);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-01 17:05:21