Я сделал 2 разных приложения, которые общаются через уведомления
Вот как:
Обратите внимание, что это просто псевдокод, использующий rxjava и модификацию 2.0
Ваш код зависит от того, что вы используете
В вашем экземпляре дооснащения:
примечание: https://fcm.googleapis.com - базовый URL
retrofit = new Retrofit.Builder()
.baseUrl("https://fcm.googleapis.com")
.client(getHttp())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
service = retrofit.create(SendMsgService.class);
Тогда в вашем классе обслуживания:
@POST("/fcm/send")
rx.Observable<Message> sendMsg(@Header("Authorization") String auth,
@Body Message Message);
Ваш класс DataModel (здесь data, message_id - это несколько предопределенных параметров в fcm):
@SerializedName("to")
@Expose
private String to;
@SerializedName("data")
@Expose
private NotifyData notification;
@SerializedName("message_id")
@Expose
private String message_id;
public Message(String to, NotifyData notification, String message_id) {
this.to = to;
this.notification = notification;
this.message_id = message_id;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public NotifyData getNotification() {
return notification;
}
public void setNotification(NotifyData notification) {
this.notification = notification;
}
public String getMessage_id() {
return message_id;
}
public void setMessage_id(String message_id) {
this.message_id = message_id;
}
Тогда позвоните своему API:
sendMsgBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotifyData notifydata = new NotifyData("Notification title","Notification body");
subscription.add(sendMsgViewModel.sendMsg("key=YOUR_KEY_HERE"
,new Message("fcm_id_of_other_device_you_want_to_send_notification"
,notifydata,""))
.subscribe(new Observer<Message>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Message message) {
}
}));
}
});