Предыстория приложения — на андроидофонах при установке приложения ВКонтакте есть возможность использовать его как провайдер контактной книги — синхронизировать контакты из соцсети с контактами в адресной книге. При этом тянется аватар, дата рождения, адрес, телефоны и т.д. Когда я после длительного использования HTC Wildfire S оценил и настолько привык к этой возможности, что захотел найти подобное на айфон. Не нашел, поэтому мы взяли и сделали свое — Синхронизатор вКонтакте :)
Дело было еще в ноябре прошлого года. Само приложение сделали достаточно быстро — оно-то использует довольно мало функций как АПИ ВКонтакте, так и функций работы с адресной книгой iPhone. Но когда мы начали разбираться с автоматическим поиском совпадений контактов, стало веселее. Сравнение лоб в лоб по имени, фамилии и номеру телефона было сделать легко, просто, да и отрабатывало это быстро. Но вот находило только процентов 20 совпадений контактов от того, что находит провайдер в андроиде.
Естественно, только прямое совпадение нас не устраивало. Вначале добавили транслит в обе стороны (т.е. имя и фамилия поочередно из адресной книги и списка друзей вКонтакте транслитеровались и сравнивались). Потом добавили распознавание частей телефонов без кодов (иногда у людей в том же контакте номер записан вообще без любых кодов, а в телефоне даже с кодом страны, зовут их там и там по-разному, а на деле это один и тот же человек).
Самым последним добавили сравнение по базе синонимов имен, теперь результаты автопоиска совпадений начали действительно впечатлять. Одновременно начала впечатлять и скорость работы. На iPhone 3GS 400 с мелочью друзей ВКонтакте накладывались на адресную книгу в 120 человек примерно минут 18.
Естественно, это не устраивало вообще никого, поэтому тупое решение «в лоб» в виде пачки вложенных циклов долго упрощали, избавлялись от вложенности, заодно ряд багов отловили. Теперь в тех же самых условиях время ожидания — секунд 40 на вай-фае и минуты 1.5 на 3G.
Настало время публиковать приложение в AppStore. Вроде как ничто не предвещало беды, но этот процесс занял довольно длительное время. Вначале приложение отклонили недели через полторы после отправки на ревью по причине «у нас нет тестового аккаунта, чтобы проверить». Ок, высылаем им тестовый аккаунт. Через еще недельку с небольшим снова получаем письмо счастья «мы после логина получаем ошибку». Ошибка выглядела довольно мило. Вот так:
Мы довольно долго обшаривали форумы и документацию, пытаясь понять, что это. Но еще дольше копали, когда поняли, что такое в данном случае security breach и КАК ЖЕ его обойти?
Дальше для кого новость, для кого не новость, но при авторизации через стороннее приложение у ВКонтакте, как и на собственном сайте, срабатывает ограничение, если вы входите из «необычного места». В данном случае — другой страны. Только на сайте вам предлагают ввести 4 последние цифры, а вот через OAuth вам просто отдают ошибку. Если кто-то действительно знает рабочий вариант обработки ошибки в этом случае — скажите. Мы не нашли и для того, чтобы форсировать ревью, я просто авторизовался под тестовым аккаунтом через прокси в Купертино. После этого цензоров, похоже, нормально пустило, т.к. недавно они, все же, нормально опубликовали его в App Store.
Вот вкратце о функционале того, что у нас получилось:
Как всегда, для читателей у меня в запасе 10 промокодов. Жду сообщения в личку и надеюсь, что вам понравится. Мы пользуемся — нам удобно.
Ссылка на приложение: itunes.apple.com/ru/app/sinhronizator-vkontakte/id490603954
Автор: NightWriter