Синхронизация ВКонтакте с адресной книгой для iPhone. Как это делалось

    Предыстория приложения — на андроидофонах при установке приложения ВКонтакте есть возможность использовать его как провайдер контактной книги — синхронизировать контакты из соцсети с контактами в адресной книге. При этом тянется аватар, дата рождения, адрес, телефоны и т.д. Когда я после длительного использования HTC Wildfire S оценил и настолько привык к этой возможности, что захотел найти подобное на айфон. Не нашел, поэтому мы взяли и сделали свое — Синхронизатор вКонтакте :)

    image

    Дело было еще в ноябре прошлого года. Само приложение сделали достаточно быстро — оно-то использует довольно мало функций как АПИ ВКонтакте, так и функций работы с адресной книгой iPhone. Но когда мы начали разбираться с автоматическим поиском совпадений контактов, стало веселее. Сравнение лоб в лоб по имени, фамилии и номеру телефона было сделать легко, просто, да и отрабатывало это быстро. Но вот находило только процентов 20 совпадений контактов от того, что находит провайдер в андроиде.

    image

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

    Самым последним добавили сравнение по базе синонимов имен, теперь результаты автопоиска совпадений начали действительно впечатлять. Одновременно начала впечатлять и скорость работы. На 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

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 43

      0
      спасибо, хорошее приложение.

      P.S. неужели сложно запомнить, что ВКонтакте пишется с первых двух прописных букв. Очень сильно глаз режет.
        0
        я привык, почему-то, писать так ( Сейчас поправлю, да
        0
        Ну приложение не без косяков.
        При первом запуске на iPhone 4 вылетело.
        И вот такое обнаружилось: скрин
        Кнопка «Синхронизировать» не под ретину
          0
          Так, по поводу вылета поподробнее, плиз. В какой момент, что происходило, сколько у вас контактов в телефонной книге и друзей вКонтакте?
          В AppStore тоже есть отзыв по этому поводу, а мы никак не можем отловить.

          За скрин спасибо!

          Под ретину версия уже ушла на рассмотрение, мы как-то не проконтролировали этот момент (
            0
            Очень долго висел сплешскрин, после этого вылетело. Вероятно у вас проблема с вью контроллером.
            В телефонной книге 46 контактов, ВКонтакте 119.
              0
              Спасибо, смотрим
                0
                Какая версия ОС?
                  0
                  5.1
            0
            Кроме этого, ни одного совпадения приложение определить у меня не смогло.
            Удивило, что нету фильтра от шлака, где в качестве номера указана Nokia5320 или домашний телефон SENAO.
              0
              На 4S виснет при старте, показывается пустая страничка с надписью «Логин» и кнопкой «Выход» наверху, а внизу вращается индикатор загрузки. Больше ничего не происходит…
                0
                интернет есть, нормально работает? Индикатор загрузки во время подтягивания окно авторизации из вКонтакте
                0
                Хм, странно, wifi работал нормально, но в приложении ничего не происходило, через 3g заработало)
                  0
                  Ой, промахнулся кнопкой, хотел ответить на Ваш комментарий)
                    0
                    ничего, все равно прочел. Странно, я сейчас с вайфая не вижу таких проблем. Возможно, траблы в днс или еще какие-то проблемы с доступом к ВКонтакте через вай-фай…

                    А какая ОС/телефон?
                      0
                      4S, 5.1 На 3g всё отлично прошло, сейчас попробую с другим wifi, скорее всего у меня проблема какая-то…
                  0
                  Друзья, используйте testflightapp.com для тестов, да можно и в дальнейшем оставить, краш логи будут сами падать вам в аккаунт, плюс если юзаете .dSYM они будут визуализированы

                  За программку респект, пожалуй надо будет написать пост о своей
                    0
                    и да, это не реклама, сам пользую
                      0
                      Посмотрим, я что-то не до конца принцип понял — там тусуются люди, которые на альфатест берут приложения или нет?
                        0
                        вроде есть такое, я отправлял билды только тем, кого сам инвайтил в тиму, не уверен, но сторонние тестировщики вроде как стоят денег.
                          0
                          А тогда в чем преимущество сервиса по сравнению с обычными адхок-билдами?
                            0
                            ну например присутствие фидбека и наличие адекватных краш логов со всех девайсов на которые поставлен билд. Плюс автоматизированное оповещение всей команды о новой сборке. Возможность расставлять хотспоты в аппе для того, чтобы локализовать место краша, и много всяческих мелких удобств
                              0
                              Спасибо, будем пробовать
                                0
                                Пожалуйста, удачи
                      0
                      Небольшое пожелание: сделайте, чтобы из номера телефона при синхронизации исключались буквы. Многие во Вконтакте пишут что-то наподобие 89091234567(Мск) и тд.
                        0
                        У вас не исключается? Это баг, значит. Мы санитаризуем номер, оставляя только цифры
                          0
                          Когда как. В части контактов исключалось, но в некоторых осталось…
                            0
                            спасибо за фидбек, поправим
                        0
                        Ко всем синхронизируемым аккаунтам добавился nickname "(null)"

                        iOS 5.1
                        3GS
                          0
                          уже в курсе, спасибо
                          0
                          Купил приложение. Всегда боялся таких штук, но тут решил попробовать

                          iOS 5.1
                          iPhone 4

                          1. Зачем мне контакт с такими вот телефонами? Скриншот

                          2. При таких настройках у меня получается такой результат.

                          3. Про графику уже сказали, что она не резкая.

                          Спасибо!
                            0
                            Шикарный фидбек, спасибо! Исправим, отпишусь. 1 и 2 очень странные баги, конечно…
                              0
                              Точно так же.
                              iOS 5.1
                              Iphone 4s
                          • UFO just landed and posted this here
                              0
                              Кроме того, не отсеиваются такие значения адресов как прочерки или точки.
                              — Не совсем понял, что вы хотели сказать

                              Про новые уже в курсе, завтра исправим
                              • UFO just landed and posted this here
                              0
                              Через ITunes не встало, пришлось ставить с телефона.
                              В итоге — -2$. Плохое начало :(
                                0
                                Это как? Под одним аккаунтом не могут два раза списывать деньги, вне зависимости от того, откуда качаете
                                  0
                                  Пусть человек в суппорт эппла напишет, ему рефанднут мани.
                                0
                                Добрый день, извините, что залез в Ваш топик, но я являюсь разработчиком альтернативной программы — itunes.apple.com/ru/app/v-kontakty/id490962447?mt=8 Так же как и Вас встречаются случайные вылеты, которые не видны в itunesconnect. Может объединим усилия :)
                                  0
                                  iOS 5.1
                                  Iphone 4S
                                  Контактов в Iphone: 203, в vk: 253
                                  1. Если в профили ВК нет телефона, а в профили контакта есть, то профиль контакта на iPhone теряет номер телефона. Скрин
                                  2. Фото добавляются маленькие (не на весь экран), хотя в настройках приложения выбрано «Большое» фото.
                                  2.1. Хотелось бы вот так
                                  2.2. Получается вот так
                                  + то, что уже писали
                                  3. Выбрано синхронизировать только контакты которые есть в iPhone, а показывает все
                                  4. Добавляет null
                                    0
                                    Неплохо бы научить программу делать резервную копию адресной книги или хотя бы выводить предупреждение о том, что рекомендуется это сделать вручную. У меня включена облачная синхронизация и, в итоге, все баги (о которых писали выше) попали в адресную книгу и на ноутбуке и на телефоне. Придется весь телефон откатывать.
                                      0
                                      Очень неприятно слышать, что вы столкнулись с таким (( Все баги уже исправлены и программа ждет ревью в аппсторе.
                                      0
                                      Очень плохая программа. Удалила _часть_ номеров после синхронизации, у _некоторых_ контактов, у кого не указан номер телефона вконтакте. Нет возможности выбрать поля для синхронизации конкретного контакта. Некоторые контакты меня полностью устраивали и я не хотел их синхронизировать. Откатываю книгу, программу удаляю.

                                      Only users with full accounts can post comments. Log in, please.