Опыт разработкимобильных приложений      в Applifto       Анатолий Шарифулин    Yet another Conference 2012
www.applifto.ru       2
Опрос аудитории#yac2012 #yamobile                     4
Applifto — не Яндекс,    но мы тоже делаемсобственные приложения :-)#yac2012 #yamobile                     5
Наши приложения       6
Хорошо знакомо Яндексу? :-)             7
Это первое и самое     провокационное       приложение#yac2012 #yamobile                     8
Но сейчас не об этом        Тогда мы были молоды, только тсс...#yac2012 #yamobile                         9
Как только в команде       больше, чем...#yac2012 #yamobile                     10
1 приложение#yac2012 #yamobile                     11
1 приложение   1 версия приложения#yac2012 #yamobile                     12
1 приложение  1 версия приложения     1 программист#yac2012 #yamobile                     13
1 приложение   1 версия приложения      1 программист      1 тестеровщик#yac2012 #yamobile                     14
Возникает потребность  в автоматизации или  упрощении процесса       разработки#yac2012 #yamobile                     15
Возникает потребность  в автоматизации или  упрощении процесса      тестирования#yac2012 #yamobile                     16
Возникает потребность  в автоматизации или  упрощении процесса       публикации#yac2012 #yamobile                     17
Возникает потребность  в автоматизации или упрощении получения       статистики#yac2012 #yamobile                     18
Возникает потребность  в автоматизации или упрощении получения       аналитики#yac2012 #yamobile                     19
Возникает потребность  в автоматизации или упрощении получения       бла-бла-бла#yac2012 #yamobile                     20
Чем больше        пользователей,          тем выше       ответственность            Почти Сент-Экзюпери#yac2012 #yamobile ...
• Качество и стабильность   • Периодичные обновления приложений   • Пользовательский фидбек   • Безопасность приложения   ...
«Разработка» приложений      превращается#yac2012 #yamobile                     23
Кодинг
Кодинг         ...
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
1. Работа со сборками       и профилями       приложений#yac2012 #yamobile                     28
Cпособы установки       приложения   • Добавить в iTunes профиль и сборку,     синхронизировать с девайсом   • Выложить на...
Мы разработали свой       веб-сервис         Готовые решения не используем:             TestFlight, HockeyApp, ...#yac2012...
31
• Простой и удобный сервис для     разработчиков и бета-тестеров   • Загрузка профилей и сборок приложений   • История все...
• Автообновление приложений при     выходе новой сборки   • Всего сборок: 949+   • Количество сборок:     2010 — 8, 2011 —...
Автосборки проектов      не используем           Привет, Роман Бусыгин! :-)          http://events.yandex.ru/talks/4/#yac2...
Почему?  • Один аккаунт разработчика,    100 устройств — вполне достаточно  • Приложение подписывается одним    сертификат...
Почему?  • Честно, я подходил несколько раз    к программистам и спрашивал, нужно ли    что-нибудь автоматизировать? :-)  ...
Была идея         использовать       разные профили       для приложений:        Dev и не-Dev#yac2012 #yamobile           ...
Есть ограничения:   • Нужны новые Push-сертификаты   • Нужно регистрировать отдельные      «инаппы»   • Синхронизация чере...
Решили пока         использовать        разные иконки:         Dev и не-Dev#yac2012 #yamobile                     39
Зачем?   • При тестирование видно, что это     Dev-версия или нет   • Новые супер-фичи и NDA   • У Dev-сборок может неожид...
Главное: не забыть      поменять иконку      перед релизом :-)#yac2012 #yamobile                     41
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
2. Стандартное      серверное API для      всех приложений#yac2012 #yamobile                     43
Любое наше   приложение работает       с Applifto API#yac2012 #yamobile                     44
Applifto API   • start — базовая информация про устройство     (тип, модель, версия ОС, локаль, ...) и token,     построен...
Applifto API   • start   • stderr — отправка всех крешей с     устройства (CrashReportSender),     уведомление разработчик...
Applifto API   • start   • stderr   • feedback — в каждом приложение есть     форма связи с нами, оперативное     решение ...
48
Applifto API   • start   • stderr   • feedback   • about — страница информации или FAQ     по приложению, текст меняется и...
50
Applifto API   • start   • stderr   • feedback   • about   • verify inapp — защита от взлома «инаппов»,     проверка, реко...
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
3. Клиент-серверное       взаимодействие#yac2012 #yamobile                     53
Почти все  приложения работают   с серверной частью#yac2012 #yamobile                     54
Стандартная модель API     Подписанные запросы (md5 от параметров),                  api_id и secret#yac2012 #yamobile    ...
Стандартная модель API           Формат данных — JSON,                иногда Plist#yac2012 #yamobile                     56
Стандартная модель API          Никогда не забываем про gzip!                (клиент-сервер)#yac2012 #yamobile            ...
Удобное тестирование       методов API      через браузер        Без генерации подписи (Dev-режим)#yac2012 #yamobile      ...
Обязательно: мониторинг  клиент-серверного    взаимодействия      Легко найти ошибку на любой стороне,                лишн...
Частая ошибка:длительная или неверная синхронизация данных#yac2012 #yamobile                     60
Для анализа данных     или протокола сторонних приложений#yac2012 #yamobile                     61
Мы используем самописный форвардер   запросов и ответов#yac2012 #yamobile                     62
А вдруг rocket science? :-)#yac2012 #yamobile                     63
Иногда совсем          не «рокет»      «На коленке» написанная серверная часть,      безопасность данных вообще отсутствуе...
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
4. Управление        приложениями#yac2012 #yamobile                     66
Единый админ для      управления всеми       приложениями#yac2012 #yamobile                     67
68
Работа с обратной          связью#yac2012 #yamobile                     69
70
Reviews в App Store       только бесят       Колы и единицы vs. пятёрки и восторг             Нет двусторонней связи#yac20...
Очень часто  пользователи «тупят»    и ставят «плохие»         оценки#yac2012 #yamobile                     72
Если возникла проблема,   появился вопрос, ...#yac2012 #yamobile                     73
Сообщать нужно   через обратную связь      в приложении       или на сайте#yac2012 #yamobile                     74
Во-первых, мы будем    знать какой девайс,       версии ОС и       приложения#yac2012 #yamobile                     75
И быстро локализуем       проблему#yac2012 #yamobile                     76
Во-вторых,     вам точно ответят#yac2012 #yamobile                     77
В-третьих,     Review в App Store       для пятёрок :-)#yac2012 #yamobile                     78
Разбирая запросы в      обратную связь,#yac2012 #yamobile                     79
Легко найти бета-   тестеров, волонтёров  и полезные знакомства#yac2012 #yamobile                     80
Cтатистика       по приложениям#yac2012 #yamobile                     81
Мини-статистика       по скачиваниям         и продажам          По данным из iTunesConnect#yac2012 #yamobile             ...
83
Плюс AppAnnie.com#yac2012 #yamobile                     84
Статистика по  активным* устройствам  * token устройства для приложения действительный#yac2012 #yamobile                  ...
86
Плюс Localytics.com#yac2012 #yamobile                     87
Подробная статистика            У «крутых» приложений есть    собственный админ и расширенная статистика#yac2012 #yamobile...
Различные графики,   хит-парады и разрезы          данных#yac2012 #yamobile                     89
90
91
92
Важно: сразу    продумывайте какая     статистика нужна       приложению#yac2012 #yamobile                     93
Бонус: если     приложение часто       бывает в топе        «кассовых»,#yac2012 #yamobile                     94
То можно оценить      оборот $ раздела          в день#yac2012 #yamobile                     95
Рассылка      Push-уведомлений#yac2012 #yamobile                     96
Типы «пушей»   • Открытие приложения   • Написать в обратную связь   • Оставить отзыв в App Store   • Переход на пункт мен...
Фильтрация при отправке   • Всем   • Только тестовым устройствам   • Выборочно    • учитывая локализацию    • определенной...
Чем чаще отсылаешь    «пуши», тем число   активных устройств         точней#yac2012 #yamobile                     99
Не забывать:        про поддержку       «тихого режима»        в приложении#yac2012 #yamobile                     100
101
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
5. Новые девайсы,         версии ОС и         приложений#yac2012 #yamobile                     103
Каждые полгода  выходит новый девайс#yac2012 #yamobile                     104
Либо нужно увеличивать размеры приложений       в 2 раза#yac2012 #yamobile                     105
Либо нужно увеличивать размеры приложений    в 1.127 раза :-)#yac2012 #yamobile                     106
Либо исправлять глюки       На new iPad появился «голубой экран»#yac2012 #yamobile                        107
108
Каждый год выходит    новая версия iOS    с новыми фичами#yac2012 #yamobile                     109
и иногда без обратной      совместимости#yac2012 #yamobile                     110
В iOS 4.3 испортилась      запись треков,  добавилось шипение  Apple без уведомления увеличил размеры буфферов            ...
В iOS 5 запись   полностью перестала         работать#yac2012 #yamobile                     112
#yac2012 #yamobile                     113
Минимальная       поддерживаемая         версия iOS?#yac2012 #yamobile                     114
Долго поддерживали       все версии,     начиная с 3.1.2#yac2012 #yamobile                     115
Чем дальше, тем      больше костылей#yac2012 #yamobile                     116
Большое количество       комбинаций:    девайс и версия iOS#yac2012 #yamobile                     117
Везде протестировать    нет возможности,   о проблемах узнаём   только после релиза#yac2012 #yamobile                     ...
По статистике: в       основном это    < 7% пользователей#yac2012 #yamobile                     119
Так они ещё и колы         ставят :-)#yac2012 #yamobile                     120
В итоге: решили     поддерживатьпоследнюю объявленную и предыдущую версии#yac2012 #yamobile                     121
То есть сейчас         iOS 5 и выше#yac2012 #yamobile                     122
Cледовательно,     iPhone 3Gs и новее#yac2012 #yamobile                     123
Каждый месяц мы  выпускаем обновления      приложений#yac2012 #yamobile                     124
На самом деле — чаще      В этом году мы выпустили 33 «апдейта»,         половина — минорные обновления#yac2012 #yamobile ...
Разработать «апдейт»        несложно,#yac2012 #yamobile                     126
Легко всё разломатьу текущих пользователей#yac2012 #yamobile                     127
Цена ошибки — велика     Исправить получится только после проверки          приложения, а это от 5—10 дней#yac2012 #yamobi...
Обновление приложений  — очень важный и  сложный процесс!#yac2012 #yamobile                     129
Когда версия исправляет обновление  предыдущей версии,#yac2012 #yamobile                     130
Это печально...#yac2012 #yamobile                     131
Хотя, судя по iOS 6,     ошибки в новой      версии — это      «Apple way» :-)        При Стиве Джобсе такого не было!#yac...
Раньше тестировали      приложения все     Программисты, менеджеры, бета-тестеры, ...#yac2012 #yamobile                   ...
Это отнимало очень      много времени          И совершенно неэффективно!#yac2012 #yamobile                      134
Пытались работать      с бета-тестерами        Но они очень ленивые и медленные#yac2012 #yamobile                       135
В итоге: решились     на «тестировщика»  Это было сложное и кардинальное решение для нас :-)#yac2012 #yamobile            ...
Если в Яндексе         работают      «тестировщикИ»,#yac2012 #yamobile                     137
То у нас он один и     универсальный :-)#yac2012 #yamobile                     138
• Он совсем не программист!   • Тестирует на всех девайсах и     поддерживаемых версиях ОС   • Разбирает фидбек от пользов...
Версионность#yac2012 #yamobile                     141
x.x — мажорный           «апдейт»      Важное обновление, новый функционал,             разработка от 2х недель#yac2012 #y...
x.x.x — минорный          «апдейт»        Исправление ошибок и улучшения,              разработка 1—5 дней#yac2012 #yamobi...
x.x.x.x — Dev-версия,     не для публикации        Исправление ошибок и улучшения,        в активной фазе каждые 1—2 дня#y...
x.x.x.x — Dev-версия,     не для публикации        Обработка таких версий на сервере,     включение дополнительного функци...
x.x.x.x — Dev-версия,     не для публикации        проверка «инаппов» через sandbox,         контент для продажи — free, ....
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
6. Безопасность   приложений и борьба       с «пиратами»#yac2012 #yamobile                     148
Раньше мы выпускали      только платные       приложения#yac2012 #yamobile                     149
Но их стали оперативно  ломать и выкладывать      на торренты#yac2012 #yamobile                     150
Из собственной    статистики запусков      мы обнаружили,#yac2012 #yamobile                     151
что пользователей        больше, чем       покупателей :-)#yac2012 #yamobile                     152
Некоторые «хакеры»       тщеславны#yac2012 #yamobile                     153
#yac2012 #yamobile                     154
Мы заблокировали   версии на серверной         стороне#yac2012 #yamobile                     155
#yac2012 #yamobile                     156
И просили обновиться     на новые версии#yac2012 #yamobile                     157
#yac2012 #yamobile                     158
Но новые версии       тоже ломали и       выкладывали :-)#yac2012 #yamobile                     159
Мы перешли    на Freemium-модель       Бесплатные приложения с «инаппами»#yac2012 #yamobile                       160
Оказывается, «инаппы» можно ломать  и делать бесплатными#yac2012 #yamobile                     161
И мы сделали     проверку запросов        на сервере            Как рекомендует Apple#yac2012 #yamobile                   ...
#yac2012 #yamobile                     163
Много проблем возникает     с Jailbreak-ами       В одном из приложений нам пришлось              ввести ряд ограничений#y...
i-FunBox и подобные        программы#yac2012 #yamobile                     165
#yac2012 #yamobile                     166
Можно перекинуть в  *.app файлы и они будут          доступны        в приложении    без покупки «инаппа»   Старый баг одн...
Пара общих        рекомендаций:#yac2012 #yamobile                     168
1. Не забивайте на   шифрование данных,       как WhatsApp              http://clck.ru/2DYSI#yac2012 #yamobile            ...
2. Не публикуйте  базы UDID-ов, если вы   их ещё собираете :-)              http://clck.ru/2DYSs#yac2012 #yamobile        ...
После запрета Apple    использовать UDID       мы перешли   на md5 от MAC-адреса#yac2012 #yamobile                     171
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
7. Релиз и проверка         приложений#yac2012 #yamobile                     173
Последний камень     преткновения —   проверка приложения#yac2012 #yamobile                     174
Обычно занимает       от 5 до 10 дней#yac2012 #yamobile                     175
Время проверки   приложения можно  сократить до 24 часов#yac2012 #yamobile                     176
Для этого      нужно написать     «слёзное» письмо  App Store Resource Center              http://clck.ru/2H5Pk#yac2012 #y...
178
У нас так     получилось дважды    Может быть наши заявки одобрили из-за фразы:     «We trust in Apple and App Store Revie...
Кстати, способ загрузить одновременно большое количество приложений       не работает             http://clck.ru/2H8KS#yac...
#yac2012 #yamobile                     181
Но иногда приложения     отклоняют :-)#yac2012 #yamobile                     182
Documents vs. Caches     После выхода iOS 5 несколько приложений      отклонили из-за неправильной структуры              ...
Нельзя явно заставлятьпользователей оценивыть приложение в App Store      Летнее нововедение в App Store Review#yac2012 #y...
185
Но мы обошли это       ограничение       Теперь мы присылаем пуш с просьбой             оценить приложение :-)#yac2012 #ya...
Чем чаще выпускаете       обновления      приложений,#yac2012 #yamobile                     187
Тем раньше узнаёте о  новых ограничениях в   App Store Review :-)#yac2012 #yamobile                     188
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
8. Мотивация     пользователей или       «белая» магия#yac2012 #yamobile                     190
Отлично работает       следующая  комбинация действий:#yac2012 #yamobile                     191
• Постоянные Push-уведомления   • Периодичные распродажи   • Пользователи любят покупать наборы     типа «All Inclusive»  ...
Ограничение: «инапп»      не может быть       бесплатным,#yac2012 #yamobile                     193
Решение: на сервере    можно управлять    параметром isFree  для единицы контента#yac2012 #yamobile                     194
Вторая часть айсберга 1.   Работа со сборками и профилями 2.   Стандартное серверное API 3.   Клиент-серверное взаимодейст...
9. Коротко про            Android#yac2012 #yamobile                     196
Для охвата     пользователейAndroid, конечно, нужен :-)#yac2012 #yamobile                     197
Но большинство из     них не хотят или    не готовы платить#yac2012 #yamobile                     198
Многообразие    девайсов и размеров         поражает#yac2012 #yamobile                     199
Приложения легко       декомпилятся#yac2012 #yamobile                     200
В общем не-iOS ещё :-)#yac2012 #yamobile                     201
При наличии   iOS-версии Android разрабатывается быстро#yac2012 #yamobile                     202
Бонусы#yac2012 #yamobile                     203
1. При наличии      успешного опыта         разработки#yac2012 #yamobile                     204
Легко и быстро      разрабатываются      вспомогательные       приложения для      внутренних нужд#yac2012 #yamobile      ...
• Приложение для логистики,     iPod + сканнер штрих-кодов   • Мониторинг внутренней статистики   • Быстрый доступ к данны...
#yac2012 #yamobile                     207
• Приложение для логистики,     iPod + сканнер штрих-кодов   • Мониторинг внутренней статистики   • Быстрый доступ к данны...
#yac2012 #yamobile                     209
• Приложение для логистики,     iPod + сканнер штрих-кодов   • Мониторинг внутренней статистики   • Быстрый доступ к данны...
2. Запустили переводы    интересных статей      про iOS и Apple#yac2012 #yamobile                     211
www.applifto.ru/docs         212
Спасибо за внимание!   Анатолий Шарифулин        @sharifulin      Аpplifto Inc.     www.applifto.ru#yac2012 #yamobile     ...
Вопросы?   Анатолий Шарифулин        @sharifulin      Аpplifto Inc.     www.applifto.ru#yac2012 #yamobile                 ...
Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в Applifto
Upcoming SlideShare
Loading in...5
×

Опыт разработки мобильных приложений в Applifto

1,001

Published on

Доклад с YaC 2012 http://events.yandex.ru/talks/346/

Published in: Technology

Опыт разработки мобильных приложений в Applifto

  1. 1. Опыт разработкимобильных приложений в Applifto Анатолий Шарифулин Yet another Conference 2012
  2. 2. www.applifto.ru 2
  3. 3. Опрос аудитории#yac2012 #yamobile 4
  4. 4. Applifto — не Яндекс, но мы тоже делаемсобственные приложения :-)#yac2012 #yamobile 5
  5. 5. Наши приложения 6
  6. 6. Хорошо знакомо Яндексу? :-) 7
  7. 7. Это первое и самое провокационное приложение#yac2012 #yamobile 8
  8. 8. Но сейчас не об этом Тогда мы были молоды, только тсс...#yac2012 #yamobile 9
  9. 9. Как только в команде больше, чем...#yac2012 #yamobile 10
  10. 10. 1 приложение#yac2012 #yamobile 11
  11. 11. 1 приложение 1 версия приложения#yac2012 #yamobile 12
  12. 12. 1 приложение 1 версия приложения 1 программист#yac2012 #yamobile 13
  13. 13. 1 приложение 1 версия приложения 1 программист 1 тестеровщик#yac2012 #yamobile 14
  14. 14. Возникает потребность в автоматизации или упрощении процесса разработки#yac2012 #yamobile 15
  15. 15. Возникает потребность в автоматизации или упрощении процесса тестирования#yac2012 #yamobile 16
  16. 16. Возникает потребность в автоматизации или упрощении процесса публикации#yac2012 #yamobile 17
  17. 17. Возникает потребность в автоматизации или упрощении получения статистики#yac2012 #yamobile 18
  18. 18. Возникает потребность в автоматизации или упрощении получения аналитики#yac2012 #yamobile 19
  19. 19. Возникает потребность в автоматизации или упрощении получения бла-бла-бла#yac2012 #yamobile 20
  20. 20. Чем больше пользователей, тем выше ответственность Почти Сент-Экзюпери#yac2012 #yamobile 21
  21. 21. • Качество и стабильность • Периодичные обновления приложений • Пользовательский фидбек • Безопасность приложения • ...#yac2012 #yamobile 22
  22. 22. «Разработка» приложений превращается#yac2012 #yamobile 23
  23. 23. Кодинг
  24. 24. Кодинг ...
  25. 25. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 27
  26. 26. 1. Работа со сборками и профилями приложений#yac2012 #yamobile 28
  27. 27. Cпособы установки приложения • Добавить в iTunes профиль и сборку, синхронизировать с девайсом • Выложить на сервер по FTP/SFTP, отправить письмо со ссылкой itms-services://?action=...&url=... • Веб-сервис для работы с профилями и сборками#yac2012 #yamobile 29
  28. 28. Мы разработали свой веб-сервис Готовые решения не используем: TestFlight, HockeyApp, ...#yac2012 #yamobile 30
  29. 29. 31
  30. 30. • Простой и удобный сервис для разработчиков и бета-тестеров • Загрузка профилей и сборок приложений • История всех изменений и быстрый доступ к любой версии приложения • Свой, бесплатный и быстрый (в отличии от готовых решений)#yac2012 #yamobile 32
  31. 31. • Автообновление приложений при выходе новой сборки • Всего сборок: 949+ • Количество сборок: 2010 — 8, 2011 — 526, 2012 — 415+#yac2012 #yamobile 33
  32. 32. Автосборки проектов не используем Привет, Роман Бусыгин! :-) http://events.yandex.ru/talks/4/#yac2012 #yamobile 34
  33. 33. Почему? • Один аккаунт разработчика, 100 устройств — вполне достаточно • Приложение подписывается одним сертификатом (Dev и Distr), нет такой проблемы как в Яндексе • Не используем CI server-а, 1 программист — 1 приложение (реже 2:1)#yac2012 #yamobile 35
  34. 34. Почему? • Честно, я подходил несколько раз к программистам и спрашивал, нужно ли что-нибудь автоматизировать? :-) • Если мы были бы Яндексом, то тоже использовали автосборки, но пока нет#yac2012 #yamobile 36
  35. 35. Была идея использовать разные профили для приложений: Dev и не-Dev#yac2012 #yamobile 37
  36. 36. Есть ограничения: • Нужны новые Push-сертификаты • Нужно регистрировать отдельные «инаппы» • Синхронизация через iCloud работает для Dev-a • ...#yac2012 #yamobile 38
  37. 37. Решили пока использовать разные иконки: Dev и не-Dev#yac2012 #yamobile 39
  38. 38. Зачем? • При тестирование видно, что это Dev-версия или нет • Новые супер-фичи и NDA • У Dev-сборок может неожиданно истечь сертификат и приложение не будет запускаться#yac2012 #yamobile 40
  39. 39. Главное: не забыть поменять иконку перед релизом :-)#yac2012 #yamobile 41
  40. 40. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 42
  41. 41. 2. Стандартное серверное API для всех приложений#yac2012 #yamobile 43
  42. 42. Любое наше приложение работает с Applifto API#yac2012 #yamobile 44
  43. 43. Applifto API • start — базовая информация про устройство (тип, модель, версия ОС, локаль, ...) и token, построение различных статистик и отправка «пушей» • stderr#yac2012 #yamobile 45
  44. 44. Applifto API • start • stderr — отправка всех крешей с устройства (CrashReportSender), уведомление разработчика по почте, веб-интерфейс для просмотра всех крешей •s#yac2012 #yamobile 46
  45. 45. Applifto API • start • stderr • feedback — в каждом приложение есть форма связи с нами, оперативное решение проблем •ы#yac2012 #yamobile 47
  46. 46. 48
  47. 47. Applifto API • start • stderr • feedback • about — страница информации или FAQ по приложению, текст меняется из админа • verify inapp#yac2012 #yamobile 49
  48. 48. 50
  49. 49. Applifto API • start • stderr • feedback • about • verify inapp — защита от взлома «инаппов», проверка, рекомендованная Apple#yac2012 #yamobile 51
  50. 50. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 52
  51. 51. 3. Клиент-серверное взаимодействие#yac2012 #yamobile 53
  52. 52. Почти все приложения работают с серверной частью#yac2012 #yamobile 54
  53. 53. Стандартная модель API Подписанные запросы (md5 от параметров), api_id и secret#yac2012 #yamobile 55
  54. 54. Стандартная модель API Формат данных — JSON, иногда Plist#yac2012 #yamobile 56
  55. 55. Стандартная модель API Никогда не забываем про gzip! (клиент-сервер)#yac2012 #yamobile 57
  56. 56. Удобное тестирование методов API через браузер Без генерации подписи (Dev-режим)#yac2012 #yamobile 58
  57. 57. Обязательно: мониторинг клиент-серверного взаимодействия Легко найти ошибку на любой стороне, лишние запросы, ...#yac2012 #yamobile 59
  58. 58. Частая ошибка:длительная или неверная синхронизация данных#yac2012 #yamobile 60
  59. 59. Для анализа данных или протокола сторонних приложений#yac2012 #yamobile 61
  60. 60. Мы используем самописный форвардер запросов и ответов#yac2012 #yamobile 62
  61. 61. А вдруг rocket science? :-)#yac2012 #yamobile 63
  62. 62. Иногда совсем не «рокет» «На коленке» написанная серверная часть, безопасность данных вообще отсутствует#yac2012 #yamobile 64
  63. 63. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 65
  64. 64. 4. Управление приложениями#yac2012 #yamobile 66
  65. 65. Единый админ для управления всеми приложениями#yac2012 #yamobile 67
  66. 66. 68
  67. 67. Работа с обратной связью#yac2012 #yamobile 69
  68. 68. 70
  69. 69. Reviews в App Store только бесят Колы и единицы vs. пятёрки и восторг Нет двусторонней связи#yac2012 #yamobile 71
  70. 70. Очень часто пользователи «тупят» и ставят «плохие» оценки#yac2012 #yamobile 72
  71. 71. Если возникла проблема, появился вопрос, ...#yac2012 #yamobile 73
  72. 72. Сообщать нужно через обратную связь в приложении или на сайте#yac2012 #yamobile 74
  73. 73. Во-первых, мы будем знать какой девайс, версии ОС и приложения#yac2012 #yamobile 75
  74. 74. И быстро локализуем проблему#yac2012 #yamobile 76
  75. 75. Во-вторых, вам точно ответят#yac2012 #yamobile 77
  76. 76. В-третьих, Review в App Store для пятёрок :-)#yac2012 #yamobile 78
  77. 77. Разбирая запросы в обратную связь,#yac2012 #yamobile 79
  78. 78. Легко найти бета- тестеров, волонтёров и полезные знакомства#yac2012 #yamobile 80
  79. 79. Cтатистика по приложениям#yac2012 #yamobile 81
  80. 80. Мини-статистика по скачиваниям и продажам По данным из iTunesConnect#yac2012 #yamobile 82
  81. 81. 83
  82. 82. Плюс AppAnnie.com#yac2012 #yamobile 84
  83. 83. Статистика по активным* устройствам * token устройства для приложения действительный#yac2012 #yamobile 85
  84. 84. 86
  85. 85. Плюс Localytics.com#yac2012 #yamobile 87
  86. 86. Подробная статистика У «крутых» приложений есть собственный админ и расширенная статистика#yac2012 #yamobile 88
  87. 87. Различные графики, хит-парады и разрезы данных#yac2012 #yamobile 89
  88. 88. 90
  89. 89. 91
  90. 90. 92
  91. 91. Важно: сразу продумывайте какая статистика нужна приложению#yac2012 #yamobile 93
  92. 92. Бонус: если приложение часто бывает в топе «кассовых»,#yac2012 #yamobile 94
  93. 93. То можно оценить оборот $ раздела в день#yac2012 #yamobile 95
  94. 94. Рассылка Push-уведомлений#yac2012 #yamobile 96
  95. 95. Типы «пушей» • Открытие приложения • Написать в обратную связь • Оставить отзыв в App Store • Переход на пункт меню или единицу контента#yac2012 #yamobile 97
  96. 96. Фильтрация при отправке • Всем • Только тестовым устройствам • Выборочно • учитывая локализацию • определенной версии ОС и приложения#yac2012 #yamobile 98
  97. 97. Чем чаще отсылаешь «пуши», тем число активных устройств точней#yac2012 #yamobile 99
  98. 98. Не забывать: про поддержку «тихого режима» в приложении#yac2012 #yamobile 100
  99. 99. 101
  100. 100. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 102
  101. 101. 5. Новые девайсы, версии ОС и приложений#yac2012 #yamobile 103
  102. 102. Каждые полгода выходит новый девайс#yac2012 #yamobile 104
  103. 103. Либо нужно увеличивать размеры приложений в 2 раза#yac2012 #yamobile 105
  104. 104. Либо нужно увеличивать размеры приложений в 1.127 раза :-)#yac2012 #yamobile 106
  105. 105. Либо исправлять глюки На new iPad появился «голубой экран»#yac2012 #yamobile 107
  106. 106. 108
  107. 107. Каждый год выходит новая версия iOS с новыми фичами#yac2012 #yamobile 109
  108. 108. и иногда без обратной совместимости#yac2012 #yamobile 110
  109. 109. В iOS 4.3 испортилась запись треков, добавилось шипение Apple без уведомления увеличил размеры буфферов в два раза :-)#yac2012 #yamobile 111
  110. 110. В iOS 5 запись полностью перестала работать#yac2012 #yamobile 112
  111. 111. #yac2012 #yamobile 113
  112. 112. Минимальная поддерживаемая версия iOS?#yac2012 #yamobile 114
  113. 113. Долго поддерживали все версии, начиная с 3.1.2#yac2012 #yamobile 115
  114. 114. Чем дальше, тем больше костылей#yac2012 #yamobile 116
  115. 115. Большое количество комбинаций: девайс и версия iOS#yac2012 #yamobile 117
  116. 116. Везде протестировать нет возможности, о проблемах узнаём только после релиза#yac2012 #yamobile 118
  117. 117. По статистике: в основном это < 7% пользователей#yac2012 #yamobile 119
  118. 118. Так они ещё и колы ставят :-)#yac2012 #yamobile 120
  119. 119. В итоге: решили поддерживатьпоследнюю объявленную и предыдущую версии#yac2012 #yamobile 121
  120. 120. То есть сейчас iOS 5 и выше#yac2012 #yamobile 122
  121. 121. Cледовательно, iPhone 3Gs и новее#yac2012 #yamobile 123
  122. 122. Каждый месяц мы выпускаем обновления приложений#yac2012 #yamobile 124
  123. 123. На самом деле — чаще В этом году мы выпустили 33 «апдейта», половина — минорные обновления#yac2012 #yamobile 125
  124. 124. Разработать «апдейт» несложно,#yac2012 #yamobile 126
  125. 125. Легко всё разломатьу текущих пользователей#yac2012 #yamobile 127
  126. 126. Цена ошибки — велика Исправить получится только после проверки приложения, а это от 5—10 дней#yac2012 #yamobile 128
  127. 127. Обновление приложений — очень важный и сложный процесс!#yac2012 #yamobile 129
  128. 128. Когда версия исправляет обновление предыдущей версии,#yac2012 #yamobile 130
  129. 129. Это печально...#yac2012 #yamobile 131
  130. 130. Хотя, судя по iOS 6, ошибки в новой версии — это «Apple way» :-) При Стиве Джобсе такого не было!#yac2012 #yamobile 132
  131. 131. Раньше тестировали приложения все Программисты, менеджеры, бета-тестеры, ...#yac2012 #yamobile 133
  132. 132. Это отнимало очень много времени И совершенно неэффективно!#yac2012 #yamobile 134
  133. 133. Пытались работать с бета-тестерами Но они очень ленивые и медленные#yac2012 #yamobile 135
  134. 134. В итоге: решились на «тестировщика» Это было сложное и кардинальное решение для нас :-)#yac2012 #yamobile 136
  135. 135. Если в Яндексе работают «тестировщикИ»,#yac2012 #yamobile 137
  136. 136. То у нас он один и универсальный :-)#yac2012 #yamobile 138
  137. 137. • Он совсем не программист! • Тестирует на всех девайсах и поддерживаемых версиях ОС • Разбирает фидбек от пользователей • Есть список тестов и план тестирования по каждому приложению#yac2012 #yamobile 139
  138. 138. Версионность#yac2012 #yamobile 141
  139. 139. x.x — мажорный «апдейт» Важное обновление, новый функционал, разработка от 2х недель#yac2012 #yamobile 142
  140. 140. x.x.x — минорный «апдейт» Исправление ошибок и улучшения, разработка 1—5 дней#yac2012 #yamobile 143
  141. 141. x.x.x.x — Dev-версия, не для публикации Исправление ошибок и улучшения, в активной фазе каждые 1—2 дня#yac2012 #yamobile 144
  142. 142. x.x.x.x — Dev-версия, не для публикации Обработка таких версий на сервере, включение дополнительного функционала:#yac2012 #yamobile 145
  143. 143. x.x.x.x — Dev-версия, не для публикации проверка «инаппов» через sandbox, контент для продажи — free, ...#yac2012 #yamobile 146
  144. 144. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 147
  145. 145. 6. Безопасность приложений и борьба с «пиратами»#yac2012 #yamobile 148
  146. 146. Раньше мы выпускали только платные приложения#yac2012 #yamobile 149
  147. 147. Но их стали оперативно ломать и выкладывать на торренты#yac2012 #yamobile 150
  148. 148. Из собственной статистики запусков мы обнаружили,#yac2012 #yamobile 151
  149. 149. что пользователей больше, чем покупателей :-)#yac2012 #yamobile 152
  150. 150. Некоторые «хакеры» тщеславны#yac2012 #yamobile 153
  151. 151. #yac2012 #yamobile 154
  152. 152. Мы заблокировали версии на серверной стороне#yac2012 #yamobile 155
  153. 153. #yac2012 #yamobile 156
  154. 154. И просили обновиться на новые версии#yac2012 #yamobile 157
  155. 155. #yac2012 #yamobile 158
  156. 156. Но новые версии тоже ломали и выкладывали :-)#yac2012 #yamobile 159
  157. 157. Мы перешли на Freemium-модель Бесплатные приложения с «инаппами»#yac2012 #yamobile 160
  158. 158. Оказывается, «инаппы» можно ломать и делать бесплатными#yac2012 #yamobile 161
  159. 159. И мы сделали проверку запросов на сервере Как рекомендует Apple#yac2012 #yamobile 162
  160. 160. #yac2012 #yamobile 163
  161. 161. Много проблем возникает с Jailbreak-ами В одном из приложений нам пришлось ввести ряд ограничений#yac2012 #yamobile 164
  162. 162. i-FunBox и подобные программы#yac2012 #yamobile 165
  163. 163. #yac2012 #yamobile 166
  164. 164. Можно перекинуть в *.app файлы и они будут доступны в приложении без покупки «инаппа» Старый баг одного из приложений, сообщил нам об этом сам «хакер» :-)#yac2012 #yamobile 167
  165. 165. Пара общих рекомендаций:#yac2012 #yamobile 168
  166. 166. 1. Не забивайте на шифрование данных, как WhatsApp http://clck.ru/2DYSI#yac2012 #yamobile 169
  167. 167. 2. Не публикуйте базы UDID-ов, если вы их ещё собираете :-) http://clck.ru/2DYSs#yac2012 #yamobile 170
  168. 168. После запрета Apple использовать UDID мы перешли на md5 от MAC-адреса#yac2012 #yamobile 171
  169. 169. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 172
  170. 170. 7. Релиз и проверка приложений#yac2012 #yamobile 173
  171. 171. Последний камень преткновения — проверка приложения#yac2012 #yamobile 174
  172. 172. Обычно занимает от 5 до 10 дней#yac2012 #yamobile 175
  173. 173. Время проверки приложения можно сократить до 24 часов#yac2012 #yamobile 176
  174. 174. Для этого нужно написать «слёзное» письмо App Store Resource Center http://clck.ru/2H5Pk#yac2012 #yamobile 177
  175. 175. 178
  176. 176. У нас так получилось дважды Может быть наши заявки одобрили из-за фразы: «We trust in Apple and App Store Review Team» :-)#yac2012 #yamobile 179
  177. 177. Кстати, способ загрузить одновременно большое количество приложений не работает http://clck.ru/2H8KS#yac2012 #yamobile 180
  178. 178. #yac2012 #yamobile 181
  179. 179. Но иногда приложения отклоняют :-)#yac2012 #yamobile 182
  180. 180. Documents vs. Caches После выхода iOS 5 несколько приложений отклонили из-за неправильной структуры хранения данных#yac2012 #yamobile 183
  181. 181. Нельзя явно заставлятьпользователей оценивыть приложение в App Store Летнее нововедение в App Store Review#yac2012 #yamobile 184
  182. 182. 185
  183. 183. Но мы обошли это ограничение Теперь мы присылаем пуш с просьбой оценить приложение :-)#yac2012 #yamobile 186
  184. 184. Чем чаще выпускаете обновления приложений,#yac2012 #yamobile 187
  185. 185. Тем раньше узнаёте о новых ограничениях в App Store Review :-)#yac2012 #yamobile 188
  186. 186. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 189
  187. 187. 8. Мотивация пользователей или «белая» магия#yac2012 #yamobile 190
  188. 188. Отлично работает следующая комбинация действий:#yac2012 #yamobile 191
  189. 189. • Постоянные Push-уведомления • Периодичные распродажи • Пользователи любят покупать наборы типа «All Inclusive» • Баннеры-прокачки для контента как в приложении App Store#yac2012 #yamobile 192
  190. 190. Ограничение: «инапп» не может быть бесплатным,#yac2012 #yamobile 193
  191. 191. Решение: на сервере можно управлять параметром isFree для единицы контента#yac2012 #yamobile 194
  192. 192. Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 195
  193. 193. 9. Коротко про Android#yac2012 #yamobile 196
  194. 194. Для охвата пользователейAndroid, конечно, нужен :-)#yac2012 #yamobile 197
  195. 195. Но большинство из них не хотят или не готовы платить#yac2012 #yamobile 198
  196. 196. Многообразие девайсов и размеров поражает#yac2012 #yamobile 199
  197. 197. Приложения легко декомпилятся#yac2012 #yamobile 200
  198. 198. В общем не-iOS ещё :-)#yac2012 #yamobile 201
  199. 199. При наличии iOS-версии Android разрабатывается быстро#yac2012 #yamobile 202
  200. 200. Бонусы#yac2012 #yamobile 203
  201. 201. 1. При наличии успешного опыта разработки#yac2012 #yamobile 204
  202. 202. Легко и быстро разрабатываются вспомогательные приложения для внутренних нужд#yac2012 #yamobile 205
  203. 203. • Приложение для логистики, iPod + сканнер штрих-кодов • Мониторинг внутренней статистики • Быстрый доступ к данным по компании#yac2012 #yamobile 206
  204. 204. #yac2012 #yamobile 207
  205. 205. • Приложение для логистики, iPod + сканнер штрих-кодов • Мониторинг внутренней статистики • Быстрый доступ к данным по компании#yac2012 #yamobile 208
  206. 206. #yac2012 #yamobile 209
  207. 207. • Приложение для логистики, iPod + сканнер штрих-кодов • Мониторинг внутренней статистики • Быстрый доступ к данным по компании — приложения «для директора» :-)#yac2012 #yamobile 210
  208. 208. 2. Запустили переводы интересных статей про iOS и Apple#yac2012 #yamobile 211
  209. 209. www.applifto.ru/docs 212
  210. 210. Спасибо за внимание! Анатолий Шарифулин @sharifulin Аpplifto Inc. www.applifto.ru#yac2012 #yamobile 213
  211. 211. Вопросы? Анатолий Шарифулин @sharifulin Аpplifto Inc. www.applifto.ru#yac2012 #yamobile 214
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×