android - notification - ¿Cómo enviar notificaciones a usuarios específicos con FCM?
push notification fcm android (2)
¿Necesitaba crear un servidor web?
Sí. Necesita un lugar donde pueda asignar un nombre / correo electrónico a las ID de registro. Estas ID de registro deben incluirse en la solicitud a FCM, por ejemplo
{
''registration_ids'': [''qrgqry34562456'', ''245346236ef''],
''notification'': {
''body'': '''',
''title'': ''''
},
''data'': {
}
}
enviará el empuje a ''qrgqry34562456'' y ''245346236ef''.
El ID de registro que usa en la llamada es el que se llama ''token'' en esta devolución de llamada en la aplicación.
public class MyService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
}
}
Preparé el receptor para FCM y puedo enviar una notificación a todos los dispositivos.
gcm-http.googleapis.com/gcm/send con este enlace puede enviar a los usuarios objetivo que están registrados y publicar en los dispositivos de destino, como a continuación json:
{
"notification": {
"title": "sample Title",
"text": "sample text" },
"to" : "[registration id]"
}
Sin embargo, debo enviar notificaciones a los usuarios objetivo que elijo, por correo electrónico o nombre ... etc. Por ejemplo:
{
"notification": {
"title": "sample Title",
"text": "sample text" },
"to" : "[email or name or sex ...]"
}
¿Cómo puedo hacer eso? ¿Necesito crear un servidor web o algo más?
Puede enviar un mensaje a otro dispositivo usando este código. No hay necesidad de servidor en este código.
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";
}