Все, что вам нужно для отправки уведомлений на конкретное устройство, является токеном устройства.
Таким образом, вы можете сделать это двумя способами:
- Задать сервер для конкретного маркера и отправить запрос через firebase от устройства
- Задать сервер для отправки запроса на какое-то устройство.
Таким образом, вы должны хранить токены устройств на сервере. Если собрать эту информацию с подключением пользователей счетов вы можете отправить уведомление от одного пользователя к другому
Существует code snippet отправить уведомление concreate устройства из приложения Android с помощью OkHttp библиотеки:
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
//in JSON field "to" is target device token.
//you can get it so: FirebaseInstanceId.getInstance().getToken();
//but, ofcause, you must get it from i.e. server
String json = "{
\"notification\": {
\"title\": \"news\",
\"text\": \"newsTExt\",
\"click_action\": \"test\"
},
\"data\": {
\"keyname\": \"any value\"
},
\"to\" : \"dAQilNw:APA91IFd666h7WVSlAOyS-WraSrGv_IRZM\"
}"
String keyFromConsole = ...;//here is key from firebase console (Settings-prohect settings-CLOUD MESSAGING-server key)
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url("https://fcm.googleapis.com/fcm/send")
.addHeader("Authorization", "key=" + keyFromConsole)
.addHeader("ContentType", "application/json")
.post(body)
.build();
Response response = client.newCall(request).enqueue(new Callback() {
@Override public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
}
});
Я бы рекомендовал гораздо более простой подход, выделенный здесь: https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html –