Что такое “дубль гис” и как его установить

Название компании

История 2ГИС началась с того, что компания, занимавшаяся профессиональными ГИС, в результате кризиса 1998 года оказалась не у дел, а ее продукция разошлась широким тиражом пиратских копий. Поэтому «геоинформационщикам» пришлось искать новую нишу для своего существования. Так была сформулирована концепция развития компании за счет предоставления рекламных мест на электронной карте города, первоначально это был Новосибирск.

 Слияние в одном продукте карты и справочника отразилось на названии новой компании: Дубль ГИС означает интеграцию двух ГИС (геоинформационные системы и городской информационный справочник).

Однако в 2011 году фирма проводит процедуру ребрендинга, изменяя название на 2ГИС. Считается, что это связано с началом международной деятельности и название справочника любой пользователь может читать на своем родном языке так как ему удобно, например Два ГИС на русском или Ту ГИС на английском. Как видно, после ребрендинга, смысл названия не поменялся.

Контролы на карте

Итак, мы получили нашу карту на экране магнитолы. Теперь необходимо было сделать первые и очевидные для любой карты вещи: контролы зума, текущего местоположения и перемещения карты.

Начнём с зума и текущего местоположения, ведь эти контролы находятся на самой карте и это не обычные UIControl. Как я писал выше, на base view находится только карта.

Для того, что бы поместить эти контролы на карту, пришлось снова лезть в документацию и sample-приложение. Там я вычитал про первый темплейт — CPMapTemplate.

CPMapTemplate — прозрачный темплейт для отображения некоторых контролов на карте и аналога navigationBar’а. Создаётся и выставляется он так:

Далее необходимо создать эти контролы и положить их на карту.

Но массив mapButtons оказался с приколом, ведь сколько в него элементов ни клади, он возьмёт только первые три элемента и отобразит их на экране. Ни ошибок в лог, ни ассертов вы не получите.

Дальше я полез смотреть, как мне заставить двигаться карту, и нашёл в документации вот такое:

Странно, подумал я, и полез смотреть, как это сделано в sample-приложении CountryRoads. Ответ — через вот такой интерфейс:

Не очень удобно, но по-другому никак, документация же не будет врать, верно?

Поскольку место для контролов на карте у нас закончилось, необходимо было сделать кнопку для перевода карты в режим «таскания» в этом аналоге navigationBar’а.

Но вот массивы leadingNavigationBarButtons и trailingNavigationBarButtons тоже оказались не без прикола: сколько элементов в них ни пихай, они возьмут только первые два. Тоже без ошибок в логе и ассертов.

А для активации и деактивации режима перетаскивания карты необходимо написать:

То, о чём нельзя говорить

Перемещение карты жестами

Примерно в это же время вышел навигатор под CarPlay от Google Maps — и там можно было передвигать карту жестами по экрану. Приватные API, подумал я, это очевидно! Ребята из Google просто пришли из соседнего здания и сказали, что им надо. Ведь документация гласит:

Однако я всё-таки решил убедиться и полез гуглить, хоть это и было почти бессмысленно, ведь никаких технических статей про CarPlay Navigation Apps не было. Однако я умудрился найти что-то полезное и, ВНЕЗАПНО, на сайте Apple.

В гайдлайнах я нашел видео, которое говорит, что документация нагло врёт. На видео видно, как карту всё-таки можно перетаскивать жестами. Я понял, что ничего не понял, и единственное, что мне оставалось, — открыть CarPlay.framework и пересмотреть все .h файлы.

И о чудо! Я нахожу в CPMapTemplate’е его делегат CPMapTemplateDelegate, в котором есть 3 метода, которые как будто кричат о том, что если их реализовать, то можно будет получить управление жестами картой.

Я реализовал их и запустил приложение на симуляторе — ничего не сработало. Не успев расстроиться, я понял, что симулятор может быть такого же качества, как и документация, и собрал на девайс. Всё завелось, счастью не было предела!

Забавный факт: CarPlay-магнитоле необходима четверть экрана, чтобы понять, что начался pan-жест. Хочу заметить, что UIPanGestureRecognizer’у нужно всего 10 поинтов.

Неодинаковость UI на разных магнитолах

Нам в поддержку поступило обращение: у пользователя в поиске вылезает всего один саджест, хотя могло бы быть и больше. Странно, подумал я, ведь на всех экранах помещается всего одна строка. Запросили скриншот:

И это совсем отличается от UI CPSearchTemplate, который я показывал выше. И это нужно учитывать при разработке, хоть и никак нельзя понять, сколько ячеек в табличке внизу может вместиться в экран.

Контрол ограничения скорости

Мы посмотрели на статистику и поняли, что навигатором для CarPlay пользуются и надо довести его хотя бы до уровня навигатора в основном приложении. В первую очередь решили добавить контрол ограничения скорости. Без проблем, конечно, не обошлось.

Вопрос номер один: где размещать?

Пошарив снова по .h файлам в CPWindow, я нашел любопытный layoutGuide:
var mapButtonSafeAreaLayoutGuide: UILayoutGuide

И это оказалось тем, что нужно. Наш контрол отлично туда вписался:

Вопрос номер два: это, вообще, законно?

Дело в том, что технически контрол находится на base view. А base view по документации не может содержать в себе ничего, кроме карты:

Но ревьюверы пропустили нас в AppStore, а значит контролы, которые касаются навигации, встраивать всё-таки можно.

Голосовой поиск

По-хорошему, эту фичу нужно было сделать в первую очередь, но у нас накопилось несколько задач из техдолга, которые мешали реализовать голосовой поиск для CarPlay. И эта задача оказалась не такой простой, как казалось.

Проблема первая: анимации. Дело в том, что в CPVoiceControlTemplate нет возможности сделать стандартные анимации. Анимацию для распознавания речи и поиска пришлось собирать покадрово из картинок и указывать, сколько они идут по времени.

Выглядит, как можете догадаться, не очень, но и размер приложения раздувать не хочется.

Проблема вторая: доступы. Алерты на доступ к микрофону и распознаванию речи появляются на дисплее телефона. Пришлось писать на дисплее магнитолы, что пользователю необходимо взять телефон в руки, дать разрешение и только потом пользоваться навигатором на магнитоле. Очень удобно!

Праворульные автомобили.

Нам прислали скриншот, в котором UI всего приложения был перевёрнут!

И, естественно, вьюпорт карты оставался таким, как мы его захардкодили, ведь никто не ожидал, что есть отдельная настройка для праворульных автомобилей. Как «правильно» это обойти, я не нашёл, но заметил, что, поскольку наш контрол ограничения скорости лежит в layoutGuide’е для контролов карты, он переместился в левую сторону.

Ультрафикс не заставил себя ждать. Сделали грубо, но это работает.

Очень надеюсь, что есть правильное решение, и я просто не дочитал.

На этом у меня всё. Если вдруг соберётесь делать свой навигатор под CarPlay, учтите, что документация и фреймворк несовершенны. Платформа абсолютно новая, никто ничего не знает, а Apple делиться знаниями не торопятся.

Данные 2ГИС

Компания заявляет, что придерживается стандартов 95 % точности данных. Обеспечением этих показателей занимаются ГИС-специалисты, выверяющие карты на местности и контакт-центр, актуализирующий информацию в справочнике.

Для каждой организации в справочнике приведены адрес, телефон, время работы, интернет-адрес и расположение входа в здание. Помимо этого, в так называемой карточке компании может содержаться информация, специфическая для рода деятельности организации. Например, способы оплаты, виды кухни (для заведений общепита), перечень услуг и т. п.

Поисковый движок 2ГИС может находить организации по запросам не только на русском, но и на языках остальных стран присутствия проекта. Также он находит здания по «народным» названиям (например, по запросу «ленинка» в Москве, справочник предложит информацию о Российской государственной библиотеке).

Карты 2ГИС отрисовываются на основе спутниковых снимков территории, а затем выверяются специалистами-«пешеходами». Трехмерные модели зданий изготавливаются на основе снимков строения с нескольких ракурсов.

2ГИС первой из российских компаний, занимающихся электронными картами, стала собирать информацию о расположении входов в организации.

В 2014 году в 2ГИС появились «Этажи»: подробные схемы внутреннего устройства торговых центров. Впервые Этажи были запущены с планами шести торговых центров Москвы.

It just works!

Когда основная функциональность для навигатора был готова, я решил показать эту поделку на внутренней презентации. Презентация удалась: все загорелись идеей доделать, потестировать и запустить навигатор как можно скорее.

Первым делом мы заказали реальное головное устройство с поддержкой CarPlay. И тут, как говорится, пошла жара.

Provision Profiles

Из-за добавления нового capability-ключа необходимо перегенерировать профили. В обычной разработке мы не думаем об этом, ведь Xcode сделает всё сам. Но не в случае с приватным ключом.

Это так же сломало нам CI, так как для локальной дистрибуции версий приложения мы используем enterprise-аккаунт, в который мы не запрашивали разрешение на разработку приложения под CarPlay. Но это уже совсем другая история

Debugging

Подключиться к CarPlay можно через Bluetooth или Lightning. Практика показывает, что второй способ гораздо популярнее. Наша магнитола в Bluetooth не умела, поэтому во время разработки пришлось пользоваться Wi-Fi дебагом. Если вы пробовали его на проектах сложнее, чем hello world, то вы знаете, какой это ад.

И тут мне стало очень интересно, почему Apple не сделала никакой DevKit (чтобы Apple-way, it just works и вот это всё). Без него собирать тестовый стенд было не очень удобно. До сих пор раз в пару недель что-нибудь отваливается — приходится по фоткам вспоминать, что куда втыкать. Хорошо, что админ при сборке этого стенда рассказал, что и зачем.

Разработка беты

Перейдём уже к написанию кода. Первое, что необходимо сделать, — реализовать парочку обязательных методов CPApplicationDelegate в файле ApplicationDelegate.

Давайте рассмотрим сигнатуру:

С UIApplication всё понятно.
CPWindow — наследник UIWindow, окно для внешнего дисплея головного устройства магнитолы.
CPInterfaceController — что-то типа аналога UINavigationController’а, только из CarPlay.framework.

Теперь перейдём непосредственно к реализации метода.

В didConnect необходимо написать код, похожий на тот, который мы привыкли видеть в didFinishLaunching. CarMapViewController — это base view (контроллер на самом деле, но ладно), как по документации.

Вот такую картинку в итоге я получил:

Где-то в это время до меня дошло, что в новом Xcode new build system включена по умолчанию и, скорее всего, из-за этого 2ГИС не собирается.

Я открыл Xcode, поставил legacy (а точнее stable, давайте называть вещи своими именами) build system, и моя теория подтвердилась: 2ГИС собрался.

Выставив тот самый capability-ключ, я запустил 2ГИС под CarPlay и не увидел логов о переходе приложения в режим background. Стало ещё непонятнее, ведь инженеры Apple со сцены сказали про background-режим, но, с другой стороны, нам обещали contentView у UIAlertView, а в итоге UIAlertView стал deprecated.

Решив, что так и должно быть, я не стал заморачиваться с MKMapView. Она лишила бы нас оффлайна и заставила заново писать отрисовку маршрутов.

Проблема одной карты

Не успел я обрадоваться новости о том, что в CarPlay будет наша карта, как передо мной встала следующая проблема: из-за технических особенностей карта может быть только одна.
Быстрое решение этой проблемы было, хоть и не очень элегантное.

Обычно в момент использования 2ГИС на CarPlay телефон заблокирован и лежит где-нибудь на полочке. А значит карта в этот момент на телефоне не сильно-то и нужна (не помешает для поиска, конечно). Поэтому мы решили при подсоединении телефона к CarPlay забирать карту из основного приложения и выводить её на экран CarPlay магнитолы. А при отсоединении, соответственно, возвращать обратно в приложение на телефон.

Да, решение такое себе, но оно быстрое, до сих пор работает и не пришлось пинать пару других команд, чтобы склепать MVP.

The best framework we ever made

В конце концов, когда всё собралось на реальное устройство, стало понятно, что фиче «2ГИС под CarPlay» точно быть. Настало время делать по красоте.

Проблемы с вьюпортом

Необходимо было настроить вьюпорт карты, чтобы рисовать маршруты в области без лишних контролов, а не просто посередине. Короче говоря, чтобы это выглядело не так:

А так:

Я рассчитывал, что получу какой-нибудь layoutGuide с текущей видимой областью. Чтобы он учитывал и navigationBar, и вьюшку с маршрутом, и контролы на карте. На деле я не получил ничего. До сих пор непонятно, как настраивать вьюпорт, поэтому у нас в коде есть хардкод типа:

Построение проезда не только между двумя точками

В первый релиз мы решили взять наш рубрикатор, сделанный через CPGridTemplate:

Избранное и Дом/Работа через CPListTemplate.

И клавиатурный поиск через CPSearchTemplate:

Код я показывать про темплейты не буду, так как он простой и про него хорошо написана документация (хоть про что-то).

Тестирование и баги

Тестированием занимался artemenko-a-a. Один из первых багов, который он нашёл, мы до сих пор не можем починить.

Дело в том, что при отсоединении телефона от CarPlay-магнитолы спорадически нас прибивает Watchdog — без объяснении причины. Даже syslogs открывали, ничего не понятно. Так что если есть идея, как починить или понять причину, то велкам в комменты.

Следующий баг был в этом же месте, но с особенным поведением. Я писал выше, что метод didDisconnect у CPApplicationDelegate вызывается в момент отсоединения телефона от CarPlay. И в этом методе мы возвращаем карту с экрана магнитолы обратно в основное приложение. Представьте себе, сколько бы мы словили проблем, если бы этот метод не вызывался хотя бы раз из пяти.

Стало понятно, что это проблема iOS, а не конкретно нашего приложения, так как вся система считала, что она подключена к CarPlay.

Я даже зарепортил это как radar (как и все остальные баги). Меня попросили скинуть логи с таким-то профилем, но я не мог ответить поддержке в течение некоторого времени, поэтому они закрыли radar.

Раз Apple делать ничего не планировала, проблему пришлось обходить самостоятельно, так как воспроизводилась она достаточно часто.

И тут я вспомнил, что львиная доля подключений к CarPlay идёт через Lightning. Это значит, что телефон в момент подключения заряжается, а в момент отключения заряжаться перестаёт. А если так, то можно подписаться на состояние батареи и точно узнать, когда телефон перестал заряжаться и отключился от CarPlay.

Схема хиленькая, но выбора у нас не было. Мы пошли этим путём, и всё сработало!

К счастью, этот костыль из кода давно уже удалён: разработчики Apple починили всё в одном из релизов iOS.

Ответ от Apple

Нам пришёл ответ от Apple, в котором, кроме разрешения на разработку, мы получили ещё и документацию «для избранных», код sample-приложения CountryRoads (его показывали на лекции WWDC) и, самое важное, приватный capability-ключ. Этот ключ прописывают в entitlements-файле со значением YES, чтобы система поняла, что вы можете обработать события от CarPlay при запуске вашего приложения

Не дождавшись спринта с выделенными под разработку сториками, я полез качать Xcode Beta. Первая попытка собрать 2ГИС была провальной. Зато проект sample-приложения CoutryRoads удалось собрать под симулятор.

Перед каждым открытием окна симулятора CarPlay, последний должен был кастомизироваться через такое вот окно:

Для этого нужно было прописать в терминале строчку:

По какой-то причине это не сработало — пришлось запускать почти на самом маленьком симуляторе с разрешением 800×480 поинтов и скейлом ×2. В данный момент эта настройка работает и отлично помогает.

Создав свой sample-проект и вооружившись документацией, я начал разбираться, что к чему.
Первое, что я понял: навигационные приложения для CarPlay состоят из слоёв base view и templates.

Base view — это ваша карта. На этом слое должна быть только карта, никаких других вьюх и контролов.

Templates — это почти не кастомизирующийся обязательный набор UI-элементов для отображения маршрутов, манёвров, всяких списочков и так далее.

Продукты

API 2ГИС

Набор инструментов для работы с картографическим и справочным контентом. На нём работают как некоторые продукты 2ГИС, так и партнерские сервисы.

Мобильная версия

Есть на платформах iOS, Android, Windows Phone, Symbian, Windows Mobile. Версия для Android также портирована на Blackberry OS и MeeGo. Версии для iOS, Android, BB и MeeGo включают в себя тот же набор функций, что и 2ГИС для ПК, плюс отображение пробок. Для Symbian, Windows Mobile и Android 1.6-2.1 последняя версия баз данных городов — март 2014 года, последняя версия приложения — от 1 апреля 2013 года.

Анонсировано, что 2ГИС будет предустановлен на мобильных устройствах Fly, поставляемых в Россию.

Версия для ПК

Работает без необходимости подключения к интернету (офлайн), обновления баз городов выходят 1 числа каждого месяца и чаще. Имеет те же функции, что и онлайн-версия, теперь с показом пробок[источник не указан 1245 дней]. Интересная особенность — трёхмерная векторная карта.

2GIS Dialer

«Звонилка» для Android, работающая с API 2ГИС. Определяет входящие звонки из организаций и позволяет находить нужные номера в каталоге организаций.

2GIS для браузеров

Расширение для популярных браузеров, предоставляющее дополнительную информацию об организации, на сайте которой находится пользователь. Также работает на API 2ГИС.

Главное

Что это такое

Награды в 2ГИС — это знак признательности за активность и помощь другим пользователям. Награды — это виртуальные достижения, которые можно увидеть в профиле пользователя в приложениях 2ГИС и на сайте 2gis.ru. Вы в любой момент можете посмотреть, сколько наград получили.

Уточнение — сообщение о найденной неточности в 2ГИС, отправленное через кнопку «Нашли ошибку в данных?» в карточке места или компании, а также сообщение о новой фирме, отправленное через кнопку «Добавить организацию»

Обратите внимание: при отправке уточнения вы должны быть авторизованы — только тогда оно зачтётся в награды. В прогрессе учитываются только принятые уточнения (то есть те, которые наши специалисты смогли подтвердить при проверке)

Фото — фотография, добавленная в фотогалерею компании или места в 2ГИС. Откройте карточку компании или места и нажмите «Добавить фото»

Обратите внимание — в прогресс зачтутся только фото, соответствующие правилам размещения фото

Отзыв — описание вашего опыта посещения компании или места. Добавить новый отзыв можно из карточки места или компании, а также из блока «Поделитесь мнением» в разделе «Мой 2ГИС» — там мы собрали места, которые вы недавно искали. В прогресс не засчитаются отзывы, удалённые за нарушение правил.

Дорожное событие — сообщение на карте об авариях, заторах, дорожных работах и других значимых событиях, о которых важно знать, планируя маршрут

Где найти награды

Награды живут в разделе «Мой 2ГИС» на главном экране мобильных приложений под iOS и Android.

В онлайн-версии 2ГИС на 2gis.ru награды можно найти, если навести курсор на аватарку пользователя в правом верхнем углу экрана.

Раздел «Награды» доступен только авторизованным пользователям.

Как получать награды

Активно пользуйтесь 2ГИС: ищите компании и места, стройте маршруты проезда, присылайте уточнения, добавляйте дорожные события, фотографии и отзывы, и награды не заставят себя ждать.

Награды 2ГИС: полный список и подсказки

Награды в 2ГИС бывают двух видов:

  1. Награды за активность — за большое число фото, отзывов, уточнений и использование разных функций 2ГИС. Например, если проехать с Навигатором 2ГИС 1000 км, то можно получить награду «Навигатор». Полный список наград за активность можно посмотреть тут.
  2. Награды эксперта — за вклад в конкретную рубрику. Например, за большое число отзывов и фотографий о кофейнях можно получить награду «Баристократ», о такси — «Уже выхожу». Полный список наград эксперта можно посмотреть тут.

Все эти награды можно увидеть в своём профиле. Ещё не полученные достижения будут отмечены серым цветом.

Кроме того, есть Секретные награды — это достижения-сюрпризы, условия получения которых 2ГИС не раскрывает. Пока у вас нет ни одной такой награды, вы не сможете увидеть раздел «Секретные награды» у себя в профиле.

Версии приложений

Награды видны как в мобильных приложениях 2ГИС, так и на сайте 2gis.ru. Чтобы установить актуальную версию приложения, перейдите в App Store или Google Play, найдите там 2ГИС и нажмите кнопку «Обновить», а также включите автообновление.

Пара слов о CarPlay

Сначала немного матчасти для понимания некоторых аспектов работы CarPlay и причин, по которым мы приняли те или иные решения.

CarPlay — это не ОС внутри другой ОС, как об этом пишут в очень многих статьях. Если грубо, то CarPlay — это протокол для работы с внешним дисплеем экрана головного устройства; звуком из динамиков автомобиля; тач-скринами, тач-панелями, шайбами и другими устройствами ввода.

То есть весь исполняемый код находится непосредственно в основном приложении (даже не в отдельном extension’е!) Это очень круто: чтобы получить новые фичи, не нужно обновлять магнитолу или даже машину, нужно просто обновить iOS.

На WWDC 2018 Keynote нам представили возможность создания навигационных приложений под CarPlay, что нас очень обрадовало. Сразу после презентации мы отправили запрос на разрешение разработки под CarPlay. В запросе необходимо было показать, что наше приложение умеет в навигацию.

Пока мы ждали ответа от Apple, вышла лекция, в которой на примере sample-приложения CountryRoads рассказывали о работе с CarPlay.framework. В лекции не рассказали о подводных камнях и тонкостях при работе с CarPlay, но упомянули, что после подключения к CarPlay-магнитоле приложение будет работать в режиме background.

Первая палка в колёса

Работа приложения в background’е нас разочаровала. На это было две причины:

  1. Мы не работаем в background’е. Когда-то оставили это ограничение по техническим причинам и ради энергосбережения.
  2. Наша карта написана на OpenGL (да, deprecated, да, не Metal, мы всё это знаем), а OpenGL в background state’е не работает. В лучшем случае вы получите чёрную вьюху, а в худшем — краш.

С работой в background’е ещё можно было справиться, но с картой определённо нужно было что-то решать. Тогда-то и пришла идея сделать её через стандартную MKMapView. Пока вы не начали закидывать нас камнями за идею использовать стандартные карты Apple, объясню: мы собирались использовать MKMapView, но не карты Apple.

Дело в том, что MKMapView умеет в загрузку сторонних тайлов. Тайлы — это специальные прямоугольные контейнеры для текстур. У нас как раз оказался сервачок, который умеет отдавать тайлы. На GitHub есть код с реализацией.

Что такое «Дубль ГИС»

Российская информационная компания, под названием 2GIS уже более пятнадцати лет с огромным успехом занимается созданием электронных путеводителей по картам городов. Некоторое время назад их справочники стали доступны и на мобильных устройствах с платформой Android, что значительно облегчило использование этой информации. Ведь теперь вы не привязаны к компьютеру и сможете проложить маршрут во многих городах России, кроме того, из этого справочника можно узнать информацию о столицах и крупных городах таких стран:

  • Казахстан.
  • Украина.
  • Италия.
  • Чили.
  • ОАЭ.
  • Кипр.
  • Кыргызстан.
  • Чехия.

Все сервисы этого приложения бесплатны, ведь компания зарабатывает на рекламе, присутствующей на сайте. Еще одним преимуществом этой программы является постоянное и оперативное обновление карт, что значительно увеличивает производительность «Дубль ГИС», а также повышает точность полученных данных. К плюсам программы можно отнести и возможность использования сервиса даже без подключенного интернет-соединения.

Как получить доступ к справочникам 2ГИС

Получить к городским справочникам 2 ГИС очень просто, достаточно пройти на сайт компании и воспользоваться онлайн версией справочника. Здесь кроме самой карты города есть справочная информация по организациям, можно определить расстояние между отдельными объектами, время перемещения на общественном или личном транспорте. Отличительной особенностью является наличие возможности определить свое нынешнее местоположение.

Наверное, наибольшую популярность приобретает версия 2ГИС для мобильных устройств. Она выпускается под все распространенные мобильные операционные системы. Кроме того, 2 ГИС предустанавливается на мобильные телефоны Fly, поставляемых в Россию. Мобильное приложение можно установить, войдя в соответствующий операционной системе электронный магазин (например, для андроид, это будет Google play).

Если нет возможности быть постоянно в онлайн, компания предлагает офлайн версию для ПК (т.е. без доступа к интернету), для которой один раз в месяц, иногда все-таки интернет нужен, обновляются базы города.

Как установить «Дубль ГИС» на Android

Проще всего скачать эта программу с Google Play. Но если по каким-либо причинам этот магазин приложений не работает, то необходимо перейти в настройки телефона и открыть пункт «Приложения». Далее, напротив графы «Разрешить установку приложений не из Google Play» ставим галочку. Теперь вам станет доступным несколько вариантов установки этой программы:

  • Прежде всего, вы сможете скачать apk-файл на свой ПК с официальной страницы сервиса. После чего необходимо будет перенести его в память телефона, и открыть при помощи любого менеджера, например, ES Проводника.
  • На соответствующей странице сервиса необходимо отыскать подходящий вам QR-код. После того как вы его просканируете, вам придет ссылка на скачивание и установку этого приложения.

После этого «Дубль ГИС» станет доступным на вашем телефоне, и вы всегда сможете воспользоваться его услугами.

История двух реджектов

Первый реджект был связан с метадатой. В тексте реджекта говорилось, что у нас в описании (не release notes) не сказано о том, что мы поддерживаем CarPlay. Как вы можете догадаться, ни в review guideline’ах, ни у того же Google Maps такого не было. Мы не стали спорить (потому что это обычно дольше, чем править метадату), скопировали строчку из Release Notes в Description и стали ждали нового ревью.

Второй реджект случился из-за списка городов. У 2ГИСа есть очень крутая фича — полный офлайн-режим работы. Эта фича стрельнула нам в ногу.

При подключении приложения без установленного города к CarPlay, мы не показываем карту, потому что показывать нечего. За это нас и зареджектили. Решение было простым: алерт без кнопок, в котором написано, что нужно скачать город.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector