определитель номера 2 гис айфон
Все «радости» CallKit или как мы делали определитель номера на iOS 10
2ГИС давно хотел поделиться с пользователями айфонов своими знаниями о телефонных номерах компаний из справочника. Android-платформа давала такую возможность, а вот под iOS подходящего инструмента долго не было.
В июне мы ездили на WWDC 2016, и на одной из сессий ребята из Apple обмолвились, что наконец-то можно делать «gorgeous astonishment» — определитель номеров под iOS 10. Радости нашей не было предела, но до поры до времени: как Apple любит, фичу она предоставила с рядом ограничений.
Прототип
Первая «радость», с которой мы столкнулись — «богатая» документация, а именно:
→ CXCallDirectoryExtensionContext
И всё. Ну что ж, могло быть хуже.
Из этого видим, что dialer под iOS — это расширение приложения, которое крутится отдельным процессом, его можно перегрузить и получить его статус. Похоже на то, что нам нужно.
В самом же экстеншне можно добавить номера в виде «телефон/имя» и добавить номера для блокировки.
Первый прототип был готов за 30 минут. Один личный телефон, зашитый в экстеншн, один тестовый телефон добавлен в блокировку, всё завелось с первого раза, радости не было предела. Будущее выглядело крайне радужным — мы уже представляли, как всё это попадёт в ближайший релиз на следующий день.
Пока не столкнулись со второй «радостью»: мы не можем включить dialer из основного приложения. Нужно отправить пользователя глубоко в настройки, что явно не идёт на повышение конверсии этой фичи.
Потом начали добавлять пачку номеров и выяснилась третья «радость»: все номера нужно записать в базу до того, как они будут определены (это как раз знаменитая безопасность Apple — чтобы мы не получали доступ к входящему callerID). А наша база — это около 4 000 000 номеров с подписью. То есть 140 Мб текстовой информации, или 40 Мб, если пожать по самой жести, и всё это нужно каким-то образом доставить в расширение.
Вооружившись этим знанием, мы приготовили данные в виде «телефон/имя» и начали пилить уже более реальный прототип.
База данных
Сначала решили тупо добавить все номера, и вновь неожиданность — номера должны быть добавлены не абы как, а в порядке возрастания: 01, 02, 911 и т.д. В противном случае экстеншн падает. В первой бете 8 xcode экстеншен падал вообще без ошибок.
Далее выяснилось, что мы ограничены 1 999 999 номерами. Да, именно 1 999 999, а не 2 000 000, что тоже не совсем равняется нашим 4 000 000 номеров. Хотели сначала сделать три расширения, наполниться каждое до 1 999 999 номеров и в ус не дуть. Потом решили разделить по регионам: Москва + Питер, остальная Россия, зарубежка. Но от этого решения отказались, потому что нужно было придумать более сложную доставку и делать фичу еще менее стабильной, и работа нескольких одновременно работающих расширений тоже не была стабильной. Да и заставлять пользователя включать все три расширения тоже не хотелось. В итоге решили оставить только номера установленных у пользователя городов.
Поначалу хотели доставлять данные через SQLite. Собрали простую базу в 100 000 номеров из Новосибирска, написали логику работы с базой, запустили демопроект, и… ничего. Ошибок нет, всё ок, а номера не определяются.
Покопав это дело, выяснили, что при попытке вытащить данные из SQLite в ascending order база создаёт кеш на 30 Мб и экстеншн падает по памяти. Покопав форумы Apple, поняли, что лучше не вылезать за 5 Мб оперативной памяти. В итоге при объединённой базе для Москвы, Питера и ещё пары городов нужно будет сильно усложнять запросы к базе, строить хорошо оптимизированные по памяти и скорости фетчи, и усложнять процесс тестирования. Делать все это было совсем некогда, неохота, к тому же моих компетенций в околобазаданных технологий явно не хватало.
Запилили свой тупой, как бревно, формат данных в виде битовой последовательности:
[uint16_t: Размер блока][unsigned long long int:Phone][String:Name]
Да, по идее нужно использовать кеш, читать блоком по 8 Кб и всякие такие дела. Но такой алгоритм пробегает по базе в 2 000 000 номеров за 10 секунд в отдельном системном процессе, не затрагивая никак основное приложение, притом происходит это один раз за обновление, поэтому решили сильно не заморачиваться с оптимизацией.
Ура! Теперь мы умеем безопасно парсить номера телефонов из базы, спокойно укладываясь в лимит 5 Мб памяти. Но время идёт, а фича всё ещё не готова.
Доставка данных
Дальше нужно было понять, как доставить эти данные в экстеншн, то есть, по сути, в отдельное приложение. Зашить их там не получится, так как пользователь скачивает новые регионы, удаляет старые, а ещё мы хотим всё обновлять, данные устаревают, добавляются новые, а мы же компания про точность и актуальность.
Оказалось, что за нас уже всё придумали и есть замечательная штука App Groups, которая позволяет шарить данные между двумя приложениями от одного разработчика.
Можно положить в основном приложении файл по пути:
а в экстеншне достать его через:
Хоть проблем с доставкой не было никаких, и на том спасибо.
Встала задача доставить эти данные в телефон (вторые 90% разработки).
Сначала решили использовать технологию «On demand resources», а заодно и узнать, зачем нужна третья, вечно пустая вкладка в xcode — Resource Tags.
Эти ребята расскажут лучше:
Но не всё оказалось так радужно: в первом релизе эта технология показала себя крайне паршиво, и примерно 20% пользователей тупо не смогли ничего скачать. Покопав форумы Apple, выяснили, что не у нас одних такая проблема, а они очень давно её не чинят и никак на неё не реагируют.
Resource Tags пришлось выпилить и доставлять данные другим способом. В итоге вшили данные в базу обновления городов. Теперь вместе с обновлением города пользователи получают новые базы номеров.
Всё впереди
Худо-бедно dialer попал в AppStore, и тут нас ждала четвёртая «радость».
После успешной установки мы удаляли базы, так как зачем хранить то, что уже и так находится в памяти телефона. Оказалось, не всё так просто: если пользователь зайдёт в настройки, выключит и включит экстеншн, то вместо того, чтобы просто включиться, экстеншн идёт по полному сценарию обновления. My bad, мы это не учли, и все, кто так делал, теряли базы без возможности их обновления. В следующей версии мы это оперативно поправили и теперь оставляем данные в телефоне, пока они ещё актуальны.
Мы постоянно получаем жалобы, что определитель не работает, или вопросы, как его включить. Пока, как промежуточный вариант, сделали отдельный пункт про определитель в настройках 2ГИС.
С iOS 10.3 Apple подкинула ещё проблем: если обновиться до этой версии, то определитель пропадает в настройках до тех пор, пока пользователь либо не переустановит приложение, либо не накатит обновление. Экстеншн в целом ведёт себя нестабильно. Периодически (по непонятным причинам и законам) он выключается или вовсе пропадает из настроек при обновлении. Иногда, в процессе обновления номеров, система молча прибивает экстеншен с кодами ошибок:
Ещё в октябре мы создали пару радаров в Apple с просьбой дать нам ручку, чтобы позволить пользователям включить dialer из самого приложения, и по поводу баги с 10.3. Первый тикет Apple игнорирует с октября, а второй находится в ооочень длинной очереди.
Так что в ближайшее время мы вряд ли сможем сделать продукт лучше для пользователя.
Как всё это в итоге работает:
мы смотрим, есть ли базы, готовые к установке. Если есть, мы пробегаем через все и добавляем номера через:
Основной проблемой при реализации этой фичи была подготовка данных и их доставка в приложение. Если зашить в экстеншн порядка 100 000 телефонов, то фичу можно сделать за час (при условии что они у вас есть).
Если нет данных в готовом формате и их нужно доставлять и обновлять хитрым образом, тогда на интеграцию этой фичи уйдёт уйма времени, а из-за сложности её включения пользователи, к сожалению, не скажут вам «большое спасибо». В большинстве отзывов будет что-то вроде «у меня не работает», «я скачал приложение, а ничего не определяет» и всё в таком духе.
Вместо заключения
На данный момент фича завершена, в ближайшее время планов по её доработке нет. Но всё ещё хочется сделать выборку по самым определяемым номерам — где-то в районе 100 000 номеров — и зашить их сразу в экстеншн, чтобы пользователи сразу получили минимальный функционал без необходимости скачивать регионы. Ещё у нас есть довольно много данных о «токсичных» номерах: коллекторские агентства, различного рода опросы, разные финансовые пирамиды и другие неугодные номера, на которые пожаловались пользователи Dialer на Android. Их мы тоже можем доставить отдельным пакетом всем желающим.
В целом хотелось чего-то более стабильного и более дружественного к пользователю, чтобы даже моя мама сама смогла его включить. В любом случае, как минимум 20 000 пользователей включили экстеншен, а это реальная польза и ощущение, что всё было не зря.
Как в iPhone настроить определитель номера?
Довольно часто нам звонят абоненты с неизвестных номеров, зачастую относящиеся к спам-звонкам с предложениями различного рода товаров и услуг. Как узнать, что «скрывается» за тем или иным неизвестным номером? И есть ли способ отличить важный звонок от назойливого спама?
Разработчики компании Apple предоставили возможность сторонним приложениям использовать расширения для стандартных звонков в iPhone.
Такие программы включают в себя базу телефонных номеров банков и других финансовых учреждений, курьерских служб, медицинских и прочих организаций и могут во время входящего звонка идентифицировать известные номера без включения данных контактов в телефонную книгу пользователя iPhone.
Конечно, такие справочники не отличаются высокой точностью — все 100 % входящих звонков идентифицировать, к сожалению, не получится. Так или иначе, они могут быть очень полезны!
Настройка определителя номера с помощью приложений «Яндекс» и «2ГИС»
В настоящее время одними из лучших приложений, имеющих большую базу телефонных номеров различных организаций, являются приложения «Яндекс» и «2ГИС» («2Gis»). Для настройки определителя номера Вам потребуется:
1. Скачать приложения «Яндекс» и/или «2ГИС» в каталоге App Store;
2. Перейти в «Настройки» → «Телефон» → «Блок. и идентиф. вызова»;
3. Для указанных приложений активировать переключатели, отвечающие за доступ к блокировке и представлению ID абонента.
Готово! Теперь номера всех абонентов, которые внесены в базы «Яндекса» и «2ГИС», будут автоматически идентифицированы.
Как узнать, какая фирма скрывается под незнакомым номером?
Как многие наверняка знают, в iOS 10 Apple открыла API, и разработчикам стало доступно множество новых возможностей интеграции приложений непосредственно с операционной системой. Одна из них — Callkit, которая позволяет, например, звонить по WhatsApp при помощи стандартного интерфейса программы «Телефон». Но разработчики приложения 2ГИС решили пойти дальше.
Благодаря Callkit сервис теперь подсказывает название фирмы при звонке. Многим знакомо, когда звонит какая-то непонятная контора (чаще всего спамеры), и не знаешь, стоит ли брать трубку. 2ГИС подскажет, что за организация вам звонит, как будто ее номер есть в списке ваших контактов.
Чтобы включить определитель, надо зайти в настройки iPhone → «Телефон» → «Блок. и идентификация вызова». Переключить тумблер напротив 2ГИС, запустить приложение и немного поджать, пока телефоны загрузятся в систему.
Это одно из немногих приложений, которое поделилось своими знаниями о телефонах организаций с пользователями iOS. База номеров постоянно пополняется. Так что если хотите избавить себя от лишних разговоров — загружайте 2ГИС по ссылке ниже.
Название: 2ГИС
Издатель/разработчик: LLC «DoubleGIS»
Цена: Бесплатно
Встроенные покупки: Нет
Совместимость: Универсальное приложение
Ссылка: Установить
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Лонгриды для вас
Сколько стоит провести умный свет с HomeKit в свой дом? Попробовали потолочные лампы и другие гаджеты от Yeelight и готовы ответить на этот вопрос. Спойлер — дешевле, чем вы думаете!
Apple опубликовала специальную инструкцию по обновлению Apple Watch Series 3. Эта модель имеет слишком маленький объём памяти, поэтому устанавливать апдейты традиционным способом на них уже затруднительно
Линейка компьютеров Mac очень неоднородна как по своим возможностям, так и по аппаратному оснащению. Попробуем разобраться, какую модель лучше всего покупать в 2021 году в зависимости от задач, которые вы на неё возлагаете
Определитель номера на Айфон
Определитель номера на Айфон
Как иногда не хочется брать трубку, когда вам звонят с незнакомого номера — особенно если он городской. Вдруг там опять “выгодные акции” и “уникальные предложения” от банков, салонов красоты или интернет-магазинов? Или вовсе мошенники?
Но все же, совсем не отвечать на звонки — не вариант. Так можно пропустить важный вызов от курьера, от родственников или по работе. Что тогда делать?
На помощь придет услуга определения телефонов. Она позволит вам узнать, кто звонит, еще перед ответом на вызов. Если звонок нежелательный, его можно будет спокойно проигнорировать.
Разберемся, как установить и настроить определитель номера на Айфонах и Айпадах.
Как настроить определитель номера на Айфоне
Функция определения телефонов встроена в мобильные устройства Apple по умолчанию. Но она не может работать сама по себе — чтобы узнать, кто вам звонит, потребуются базы номеров.
Такие базы добавляются при помощи сторонних приложений для iOS, которые играют роль телефонного справочника.
Чтобы активировать определитель номера для iPhone или iPad, вам потребуется сделать следующее:
Теперь вы сможете узнавать номера банков, курьерских организаций, интернет-магазинов и других служб, данные которых были занесены в ваш справочник.
В некоторых приложениях также есть функция определения телефонов обычных пользователей.
Сейчас приложений-справочников для iOS довольно много. Какие-то из них имеют довольно обширную базу, в то время как другие не отличаются особой точностью.
Разберем популярные варианты, их плюсы и минусы.
“Яндекс”
“Яндекс” — это бесплатная универсальная программа на iOS, в которую в числе прочих опций вшит определитель номера для iPhone, iPad и iPod touch.
Вот каким функционалом обладает это приложение:
Для определения того, кто вам звонит, используется функция “Автоматический определитель номера”. Чтобы она заработала, вам нужно включить пункт “АОН” в главном меню приложения.
В справочнике “Яндекса” содержится больше 6 000 000 телефонных номеров с подробной информацией об организациях, которым они принадлежат. Во время вызова вы увидите на экране либо название компании, либо цель звонка — эта информация основана на отзывах других пользователей.
“Автоматический определитель номера” работает только на iPhone или iPad с версией системы 11.0 и выше. На девайсах с устаревшей версией iOS приложение тоже запустится, но определять в нем телефоны будет нельзя.
Приложение “2ГИС” — это онлайн-карты, у которых есть несколько дополнительных функций:
В приложении вы можете увидеть полную информацию о любом здании — фотографии, количество подъездов, индекс, к какой поликлинике оно прикреплено. Также здесь есть все данные об организациях, которые в них расположены.
Для каждой организации можно посмотреть время работы, сайты и соцсети, фотографии заведения, отзывы и телефонные номера. Именно они и будут использоваться в качестве справочника.
Системные требования таковы: iOS 10.0 или watchOS 3.0. На устройствах с более старыми системами “2ГИС” не запустится.
Чтобы начать определять телефоны, вам не нужно ничего включать в самом приложении. Просто активируйте “2ГИС” в качестве справочника в настройках вашего гаджета.
Sync.ME
В отличие от предыдущих вариантов, в приложении Sync.ME определитель номера на Айфон и Айпад — основная функция, а не просто дополнение.
Эта программа была разработана специально, чтобы распознавать звонки с незнакомых телефонов и предупреждать вас о надоедливых спамерах.
Вот какие опции в ней присутствуют:
Для определения телефонов можно использовать как само приложение, так и виджет в разделе “Сегодня”.
Само по себе приложение бесплатное, но есть возможность приобрести премиум-аккаунт с расширенным функционалом. В нем вы можете объединять контакты, создавать резервные копии и в целом удобно управлять вашей телефонной книгой.
На данный момент в справочнике Sync.ME свыше 1 000 000 000 номеров, но это международная база. Актуальных для России телефонов будет значительно меньше.
Для работы приложению нужна iOS версии 10.0 либо новее.
Kaspersky Who Calls
Kaspersky Who Calls — это бесплатный многофункциональный определитель номера на Айфон от российских разработчиков.
Приложение умеет делать следующее:
Основное приложение бесплатное, но у него также есть месячная либо годовая подписка. Она открывает доступ к дополнительному функционалу Kaspersky Who Calls.
Для работы приложению не нужно интернет-соединение. Также вам не понадобится вводить собственный номер или делиться списком контактов — ваши личные данные в безопасности.
Приложение совместимо с iOS 11.0 и более свежими версиями.
“Кто звонит”
Как и предыдущий вариант, это российский определитель номера телефона на Айфон либо на Айпад. Но, в отличие от Kaspersky Who Calls, приложение “Кто звонит” изначально платное.
Оно стоит 379 руб. Сумма списывается единоразово — никаких платных подписок на месяц или год не предусмотрено.
Функционал приложения довольно стандартный:
База приложения обновляется в фоновом режиме. На данный момент в ней содержится свыше 1 500 000 телефонов.
Для использования вам не нужно регистрироваться, вводить свой номер или делиться любыми другими личными данными.
Работает на iOS 11.0 и новее.
Резюме
Устройства Apple по умолчанию содержат функцию определения телефонов, но для ее работы требуются базы номеров из приложений-справочников.
Сегодня мы рассмотрели 5 таких приложений. Выбрать из них лучший определитель номера для iPhone сложно — у каждого варианта есть свои сильные стороны.
Попробуйте все и решите, что вам подходит больше.
Приложение 2GIS Dialer знает номера всех организаций в вашем городе
Компания DoubleGIS, известная своим одноименным картографическим сервисом 2GIS, выпустила крупное обновление своего фирменного диалера 2GIS Dialer для смартфонов под управлением операционной системы Android. Приложение получило обновлённый пользовательский интерфейс, выполненный в стиле Material Design, а скорость работы, как уверяют разработчики, выросла вдвое. Не обошлось и без совершенно новых функций, включая возможность выбора темы оформления и более подробную информацию о местных организациях.
2GIS Dialer заменяет стандартное приложение для звонков, объединяя список ваших контактов и данные об организациях и различных учреждениях в вашем городе. Приложение определяет номер входящего звонка и ищет его по своей базе. Если номер зарегистрирован на какую-то организацию, то вы узнаете об этом и решите, отвечать или нет.
В новой версии разработчики подготовили большое разнообразие тем для внешнего оформления, что позволяет пользователю настроить приложение по своему вкусу. Благодаря тому, что программа была переписана с нуля, скорость работы была существенно увеличена и не уступает стандартному приложению для звонков.
По данным компании, за год приложение установило более одного миллиона человек, а ежемесячное число активных пользователей на сегодняшний день составляет 240 000.
Ключевые особенности новой версии 2GIS Dialer:
Для работы приложения вам потребуется смартфон с версией операционной системы не ниже Android 4.0.3.