11

Ich habe den Empfänger für FCM vorbereitet und kann eine Benachrichtigung an alle Geräte senden.Wie wird eine Benachrichtigung an bestimmte Benutzer mit FCM gesendet?

gcm-http.googleapis.com/gcm/send mit diesem Link senden können Nutzer auszurichten, die registriert ist und es zu den Zielgeräten wie unter json:

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

, muss ich Senden Sie Benachrichtigungen an Zielbenutzer, die ich wähle, per E-Mail oder Name ... etc. Zum Beispiel:

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

Wie kann ich das tun? Muss ich einen Webserver oder etwas anderes erstellen?

Antwort

14

Habe ich brauche einen Web-Server

Ja zu erstellen. Sie benötigen einen Ort, an dem Sie Name/E-Mail den Registrierungs-IDs zuordnen können. Diese Anmeldung IDs müssen in der Anfrage an FCM enthalten sein, zum Beispiel

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

    } 
} 

die Push-to 'qrgqry34562456' senden und '245346236ef'.

Die Registrierungs-ID, die Sie beim Aufruf verwenden, ist diejenige, die in diesem Rückruf in der App als "Token" bezeichnet wird.

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

Dank für Ihre Antwort. Es ist hilfreich für mich. Ich lese fast alle Dokumente von FCM.There wirte das Gleiche wie deine Antwort. Ich will sicher sein. weil ich denke, dass es einen Server für die Benachrichtigung gibt. –

+1

ist Registrierungs-ID und Registrierungs-Token das gleiche? –

+1

@AnggaAriWijaya ja –

0

können Sie Nachricht an ein anderes Gerät mit diesem Code senden. In diesem Code ist kein Server erforderlich.

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

Dies ist nicht zu empfehlen, weil jeder kann Ihren API-Schlüssel mit Tools wie Smali2Java bekommen und kann die Benachrichtigung senden jemand. – kunwar97

+0

das ist der Teil des Hackens, und Ja, ich empfehle das auch nicht, aber ich gab die Antwort, dass wir es auch von hier aus tun können, wir können diesen Teil sichern, indem wir den Schlüssel bei Bedarf verschlüsseln. und ja, danke, dass du mich das wissen lässt. –

+0

Wie werden wir das verwenden? –

Verwandte Themen