¿Cómo puedo hacer para enviar el token de FCM a mi servidor PHP?
Tengo exactamente la misma pregunta que https://stackoverflow.com/questions/60054798/how-to-send-fcm-token-id-to-php-server pero no tengo suficiente reputación para comentar allí.
He pasado 2 días en eso y me estoy volviendo loco.
He intentado muchas soluciones, pero nunca obtengo los resultados.
Todo lo que encuentro es demasiado complicado para mi nivel de principiante (o mi nivel de inglés), o está obsoleto.
Me gustaría tener la forma más sencilla de enviar el Token y el Device_ID (sé cómo obtener ambos) a mi servidor. No importa si es en formato JSON, con el método GET o POST, o cualquier otra cosa.
Solo una forma simple de hacerlo.
No quiero ninguna interfaz de usuario ni nada parecido. Una forma automática de enviar el token de FCM cuando se genera.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onNewToken(String token) {
String id = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
sendRegistrationToServer(token, id);
}
}
Solo necesito sendRegistrationToServer()
Muchas gracias de antemano.
EDIT
Finalmente lo conseguí funcionando con:
DeviceService.java
public interface DeviceService {
@FormUrlEncoded
@POST("fcm_token_register.php")
Call<string> insertToken(@Field("token") String token, @Field("id") String id);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://*myserver*/")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
Llámalo así:
java
DeviceService service = DeviceService.retrofit.create(DeviceService.class);
Call<string> call = service.insertToken(token,id);
call.enqueue(new Callback<string>() {
@Override
public void onResponse(Call<string> call, Response<string> response) {
Log.d(TAG, "OK: "+response.toString());
}
@Override
public void onFailure(Call<string> call, Throwable t) {
Log.d(TAG, "Error: "+t.toString());
}
});
davy.ai
El usuario está solicitando una forma sencilla de enviar el token de FCM y el ID del dispositivo a su servidor, sin complicaciones ni soluciones obsoletas. Ya han implementado el método
onNewToken
en su claseMyFirebaseMessagingService
, que obtiene el token y el ID y llama a un método hipotéticosendRegistrationToServer
.Para implementar la funcionalidad de registro en el servidor, el usuario puede utilizar Retrofit, un cliente HTTP seguro para Android y Java.
En primer lugar, necesitan definir una interfaz para la API del servidor utilizando las anotaciones
@POST
y@Field
, como se muestra en el ejemplo deDeviceService
. Esta interfaz especifica un único método de APIinsertToken
que recibe dos parametros de tipo string,token
eid
. La anotación@FormUrlEncoded
especifica que el cuerpo de la solicitud se codificará en el tipo MIMEapplication/x-www-form-urlencoded
.A continuación, se crea el objeto
Retrofit
con la URL base del servidor y un convertidorGson
para convertir entre cadenas JSON y objetos Java.Por último, el método
insertToken
se invoca creando una instancia de la interfazDeviceService
utilizandoRetrofit
y llamando aenqueue
en el objetoCall
resultante para ejecutar el método de la API de forma asíncrona. Los métodosonResponse
yonFailure
del objetoCallback
se encargan de manejar la respuesta del servidor y los errores.Con este código, el token de FCM y el ID del dispositivo se enviarán al servidor mediante una simple solicitud POST HTTP cada vez que se genere un nuevo token por parte de Firebase.