FCM을 사용하여 특정 사용자에게 알림을 보내는 방법은 무엇입니까?
FCM을 위해 수신기를 준비했고 모든 기기에 알림을 보낼 수 있습니다.
이 링크를 가진 gcm-http.googleapis.com/gcm/send 은 등록된 대상 사용자에게 보내고 아래와 같은 대상 장치에 게시할 수 있습니다.
{
"notification": {
"title": "sample Title",
"text": "sample text" },
"to" : "[registration id]"
}
하지만 이메일이나 이름을 통해 내가 선택한 대상 사용자에게 알림을 보내야 합니다.. 등. 예:
{
"notification": {
"title": "sample Title",
"text": "sample text" },
"to" : "[email or name or sex ...]"
}
내가 어떻게 그럴 수 있을까?웹 서버나 다른 서버를 만들어야 합니까?
웹 서버를 만들어야 합니까?
네. 등록 ID에 이름/이메일을 매핑할 수 있는 곳이 필요합니다.이러한 등록 ID는 FCM에 대한 요청에 포함되어야 합니다(예:
{
'registration_ids': ['qrgqry34562456', '245346236ef'],
'notification': {
'body': '',
'title': ''
},
'data': {
}
}
그러면 푸시가 'qrgqry34562456' 및 '245346236ef'로 전송됩니다.
당신이 통화할 때 사용하는 등록 ID는 앱의 이 콜백에서 '토큰'이라고 불리는 ID입니다.
public class MyService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
}
}
이 코드를 사용하여 다른 장치로 메시지를 보낼 수 있습니다.이 코드에는 서버가 필요 없습니다.
public String send(String to, String body) {
try {
final String apiKey = "AIzaSyBsY_tfxxxxxxxxxxxxxxx";
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";
}
언급URL : https://stackoverflow.com/questions/37700995/how-to-send-notification-to-specific-users-with-fcm
'programing' 카테고리의 다른 글
VUE 경로 리디렉션이 다른 페이지에서 모달을 닫지 않음 (0) | 2023.06.09 |
---|---|
VBA에서 C++ DLL로 문자열 전달 중 (0) | 2023.06.09 |
Apache POI getRow()가 null을 반환하고 .createRow가 실패함 (0) | 2023.06.09 |
Ruby <=> (로컬) 연산자란 무엇입니까? (0) | 2023.06.09 |
node_modules 폴더 안에 있는 스크립트를 포함하는 방법은 무엇입니까? (0) | 2023.06.09 |