Работаю с Google-картой, используя Xamarin. Мне нужно, чтобы метку (маркер), которую я поставил в своем приложении, увидели все устройства.
К примеру: я создал новую метку на карте и эта же метка отобразилась на другом устройстве.
Пока в голове крутится такая мысль: при создании метки посылать на сторонний сервер координаты метки (который в свою очередь сохраняет ее) и в приложении делать все время запросы и при появлении новой метки ее показывать на карте.
Правильно ли я думаю? Может есть другие более легкие способы? Решил сначала спросить, прежде чем начать реализовывать.
Ответ
Да, синхронизация через сервер - правильное решение. Для такой простой задачи (отображение у клиентов общей простой инфы с сервера) можно даже взять готовое решение типа Firebase. Вот даже какая-то либа под Xamarin есть:
Firebase.Xamarin
Общая идея такова:
Клиент подписывается на получение всех элементов из выборки в БД.
При изменении БД у клиента будет вызван метод, в который придёт изменённая инфа
При добавлении клиентом инфы в удалённую БД она появится у всех остальных подписанных клиентов.
По факту вам надо лишь составить модель данных, отправить её и получать её же. Все методы для этого в либе есть и кода нужно минимум. А серверного кода не нужно вообще.
Стоит учесть, что в РФ в данный момент не очень ясно как будет FireBase работать, ибо гугл делал НЕмассовую расылку юзерам о прекращении работы с физ.лицами из-за нежелания возиться с НДС. Но вот лично у меня пока что всё работает и писем таких не было. В любом случае есть аналогичные сервисы, в т.ч. отечественные
Кажется, прямо сегодня Realm запилил аналог FireBase, который можно поднять на своём сервере. В итоге получается та же штука что и с Firebase, только на своём сервере и через привычный Realm.
https://realm.io/docs/get-started/installation/linux/
Комментариев нет:
Отправить комментарий