Aide à la migration firebase FCM ver HTTP v1

CR16_Padawan Messages postés 58 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 11 septembre 2024 - 23 août 2024 à 16:03
CR16_Padawan Messages postés 58 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 11 septembre 2024 - 11 sept. 2024 à 20:11

Bonjour le forum,

Je viens vous demander conseils pour faire la migration firebase FCM vers HTTP v1.

J'ai lu la documentation firebase et modifier les paramètres dans mon appli mais ça ne fonctionne pas.

Lorsque je suis sur la console firebase je peux envoyer une notification push "test" sur mon AVD sur Android Studio mais pas de résultat pour un téléphone physique.

j'ai suivi cette doc:

https://firebase.google.com/docs/cloud-messaging/migrate-v1?hl=fr

Voici quelques infos: (j'ai volontairement laissé l'ancienne écriture)

class ApiClient.java

public class ApiClient {

    private static Retrofit retrofit = null;

    public static Retrofit getClient() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    //.baseUrl("https://fcm.googleapis.com/fcm/")
                    .baseUrl("https://fcm.googleapis.com/v1/projects/"ID_PROJECT"/messages:send")
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
}

construction entête de message:

    public static HashMap<String, String> getRemoteMsgHeaders() {
        if (remoteMsgHeaders == null) {
            remoteMsgHeaders = new HashMap<>();
            remoteMsgHeaders.put(
                    REMOTE_MSG_AUTHORIZATION,

//"key=AAAAYC40Jzc:APA91bHe...yo1Rk0I0PM4bp"

                    "Bearer ya29.a0AcM612zt4_HV2Eug...XlZw017x"
                    
            );
            remoteMsgHeaders.put(
                    REMOTE_MSG_CONTENT_TYPE,
                    "application/json"
            );
        }
        return remoteMsgHeaders;
    }

Je ne suis pas sur d'avoir vraiment fait ce qu'il faut.

Merci d'avance pour votre concours 


1 réponse

CR16_Padawan Messages postés 58 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 11 septembre 2024
11 sept. 2024 à 20:11

bonjour,

bon, après beaucoup de tentatives j'ai obtenu ce code:

    public void sendPushNotification(String fcmToken, String title, String body, String accessToken) {
        try {
            URL url = new URL("https://fcm.googleapis.com/fcm/send");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Authorization", "Bearer " + accessToken);
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setDoOutput(true);

            JSONObject message = new JSONObject();
            message.put("to", fcmToken);
            JSONObject notification = new JSONObject();
            notification.put("title", title);
            notification.put("body", body);
            message.put("notification", notification);

            OutputStream os = conn.getOutputStream();
            os.write(message.toString().getBytes("UTF-8"));
            os.close();

            InputStream is = conn.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String response;
            StringBuilder sb = new StringBuilder();
            while ((response = br.readLine()) != null) {
                sb.append(response);
            }
            br.close();
            Log.d("FCM", "Response: " + sb.toString());
        } catch (Exception e) {
            Log.e("FCM", "Error sending push notification", e);
        }
    }

toutefois pour l'essayer il me faut le jeton d'accès (accessToken) et je n'arrive pas à l'obtenir.

Si quelqu'un a une idée?

cordialement

0