# Описание передачи геолокации на мобильных устройствах

В этой статье описывается передача геолокации с мобильных устройств посетителей посредством **Webim Mobile SDK** для платформ **Android** и **iOS**.

Передача геолокации в мобильных приложениях осуществляется посредством функции `sendGeolocation(Geolocation geolocation, GeolocationCallback callback)` **Webim Mobile SDK**. Частности реализации и вызова отличаются в зависимости от платформы, но общий алгоритм работы следующий:

  1. В клиентском приложении при включенной в [account config](https://webim.ru/kb/for-admins/service-pages/account-config-editor.html) опции отправки геолокации отображается кнопка **Отправить местоположение**.

  1. По нажатию на кнопку открывается виджет используемой картографической службы ([Yandex.Карты](https://maps.yandex.ru), [Google Maps](https://google.com/maps/), [2GIS](https://2gis.ru), etc., настраивается через account config).

  1. Посетитель отправляет своё местоположение по нажатию на кнопку **Отправить**.

  1. На **Chat Backend** посредством `sendGeolocation(Geolocation geolocation, GeolocationCallback callback)` отсылается `action=geo_response`.

  1. В **Chat Backend** происходит валидация и сохранение геолокации в объекте `Visitor` с последующей отправкой дельт оператору и посетителю.

  1. С **Chat Backend** приходит ответ:

    * `{'result': 'ok')` в случае успеха;

    * `{'error': 'invalid-coordinates-recieved'}` в случае, если были переданы невалидные координаты

Параметр `geolocation`, передаваемый функции - объект класса `Geolocation`, в котором хранятся следующие параметры:

  * `'latitude'` - широта, тип `float`, либо `String`

  * `'longitude'` - долгота, тип `float`, либо `String`

---

Источник: https://webim.ru/kb/dev/geo-mobile-description.html
