11

J'ai préparé le récepteur pour FCM et peut envoyer une notification à tous les périphériques.Comment envoyer une notification à des utilisateurs spécifiques avec FCM?

gcm-http.googleapis.com/gcm/send avec ce lien peut envoyer à cibler les utilisateurs qui est enregistré et poster aux dispositifs cibles comme ci-dessous JSON:

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

Cependant, je dois envoyer des notifications aux utilisateurs que je choisis, par email ou nom ... etc. Par exemple:

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

Comment puis-je faire cela? Ai-je besoin de créer un serveur Web ou autre?

Répondre

14

Ai-je besoin de créer un serveur web

Oui. Vous avez besoin d'un endroit où vous pouvez associer nom/adresse électronique aux ID d'enregistrement. Ces ID d'enregistrement doivent être inclus dans la demande de la FCM, par exemple

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

    } 
} 

va envoyer le pousser à « qrgqry34562456 » et « 245346236ef ».

L'ID d'enregistrement que vous utilisez dans l'appel est celui qui est appelé «jeton» dans ce rappel dans l'application.

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

merci pour votre réponse. C'est utile pour moi. J'ai lu presque tous les documents de FCM. Il y a la même chose que votre réponse. Je veux être sur. parce que je pense qu'il y a un serveur pour la notification. –

+1

est registration_id et jeton d'enregistrement même chose? –

+1

@AnggaAriWijaya oui –

0

Vous pouvez envoyer un message à un autre périphérique à l'aide de ce code. il n'y a pas besoin de serveur dans ce code.

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

Ceci n'est pas recommandé car tout le monde peut obtenir votre clé API en utilisant des outils comme Smali2Java et peut envoyer la notification à n'importe qui. – kunwar97

+0

c'est la partie du piratage, et oui, je ne le recommande pas non plus, mais je donnais la réponse que nous pouvons le faire à partir d'ici, nous pouvons sécuriser cette partie en cryptant la clé si nécessaire. et oui merci de me le faire savoir. –

+0

Comment allons-nous l'utiliser? –