11

Ho preparato il ricevitore per FCM e posso inviare una notifica a tutti i dispositivi.Come inviare notifiche a utenti specifici con FCM?

gcm-http.googleapis.com/gcm/send con questo link può inviare per indirizzare gli utenti che è registrato e inviare ai dispositivi di destinazione come di seguito JSON:

{ 
    "notification": { 
       "title": "sample Title", 
       "text": "sample text" }, 
     "to" : "[registration id]" 
     } 

Tuttavia, ho bisogno di inviare notifiche agli utenti target che scelgo, via e-mail o nome ... ecc. Per esempio:

{ 
    "notification": { 
       "title": "sample Title", 
       "text": "sample text" }, 
     "to" : "[email or name or sex ...]" 
     } 

Come posso fare questo? Devo creare un server web o qualcos'altro?

risposta

14

Forse ho bisogno di creare un web server

Sì. È necessario un luogo in cui è possibile mappare il nome/e-mail agli ID di registrazione. Questi ID di registrazione devono essere inclusi nella richiesta di FCM, per esempio

{ 
    'registration_ids': ['qrgqry34562456', '245346236ef'], 
    'notification': { 
     'body': '', 
     'title': '' 
    }, 
    'data': { 

    } 
} 

invierà la spinta a 'qrgqry34562456' e '245346236ef'.

L'ID di registrazione che si utilizza nella chiamata è quella denominata "token" in questa richiamata nell'app.

public class MyService extends FirebaseInstanceIdService { 
    @Override 
    public void onTokenRefresh() { 
    } 
} 
+0

grazie per la vostra risposta. È utile per me. Ho letto quasi tutti i documenti di FCM. In questo caso ho letto la tua risposta. Voglio essere sicuro. perché penso che ci sia un server per la notifica. –

+1

è registration_id e il token di registrazione è la stessa cosa? –

+1

@AnggaAriWijaya sì –

0

è possibile inviare messaggi ad altri dispositivi utilizzando questo codice. non c'è bisogno di server in questo codice.

public String send(String to, String body) { 
      try { 

       final String apiKey = "AIzaSyBsY_tfCQjUSWEWuNNwQdC1Vtb0szzz"; 
       URL url = new URL("https://fcm.googleapis.com/fcm/send"); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setDoOutput(true); 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("Content-Type", "application/json"); 
       conn.setRequestProperty("Authorization", "key=" + apiKey); 
       conn.setDoOutput(true); 
       JSONObject message = new JSONObject(); 
       message.put("to", to); 
       message.put("priority", "high"); 

       JSONObject notification = new JSONObject(); 
       // notification.put("title", title); 
       notification.put("body", body); 
       message.put("data", notification); 
       OutputStream os = conn.getOutputStream(); 
       os.write(message.toString().getBytes()); 
       os.flush(); 
       os.close(); 

       int responseCode = conn.getResponseCode(); 
       System.out.println("\nSending 'POST' request to URL : " + url); 
       System.out.println("Post parameters : " + message.toString()); 
       System.out.println("Response Code : " + responseCode); 
       System.out.println("Response Code : " + conn.getResponseMessage()); 

       BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       String inputLine; 
       StringBuffer response = new StringBuffer(); 

       while ((inputLine = in.readLine()) != null) { 
        response.append(inputLine); 
       } 
       in.close(); 

       // print result 
       System.out.println(response.toString()); 
       return response.toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return "error"; 
     } 
+0

Questo non è consigliato in quanto chiunque può ottenere la chiave API utilizzando strumenti come Smali2Java e può inviare la notifica a nessuno. – kunwar97

+0

questa è la parte dell'hacking, e anche io non lo consiglio, ma stavo dando la risposta che possiamo farlo da qui, possiamo proteggere quella parte crittografando la chiave se necessario. e sì grazie per avermi fatto sapere questo. –

+0

Come useremo questo? –

Problemi correlati