Опыт разработки мобильных приложений в Applifto
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,179 views

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

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

Statistics

Views

Total Views
1,179
Views on SlideShare
1,157
Embed Views
22

Actions

Likes
6
Downloads
0
Comments
0

3 Embeds 22

https://twitter.com 18
https://si0.twimg.com 2
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Опыт разработкимобильных приложений в 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 21
  • • Качество и стабильность • Периодичные обновления приложений • Пользовательский фидбек • Безопасность приложения • ...#yac2012 #yamobile 22
  • «Разработка» приложений превращается#yac2012 #yamobile 23
  • Кодинг
  • Кодинг ...
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 27
  • 1. Работа со сборками и профилями приложений#yac2012 #yamobile 28
  • Cпособы установки приложения • Добавить в iTunes профиль и сборку, синхронизировать с девайсом • Выложить на сервер по FTP/SFTP, отправить письмо со ссылкой itms-services://?action=...&url=... • Веб-сервис для работы с профилями и сборками#yac2012 #yamobile 29
  • Мы разработали свой веб-сервис Готовые решения не используем: TestFlight, HockeyApp, ...#yac2012 #yamobile 30
  • 31
  • • Простой и удобный сервис для разработчиков и бета-тестеров • Загрузка профилей и сборок приложений • История всех изменений и быстрый доступ к любой версии приложения • Свой, бесплатный и быстрый (в отличии от готовых решений)#yac2012 #yamobile 32
  • • Автообновление приложений при выходе новой сборки • Всего сборок: 949+ • Количество сборок: 2010 — 8, 2011 — 526, 2012 — 415+#yac2012 #yamobile 33
  • Автосборки проектов не используем Привет, Роман Бусыгин! :-) http://events.yandex.ru/talks/4/#yac2012 #yamobile 34
  • Почему? • Один аккаунт разработчика, 100 устройств — вполне достаточно • Приложение подписывается одним сертификатом (Dev и Distr), нет такой проблемы как в Яндексе • Не используем CI server-а, 1 программист — 1 приложение (реже 2:1)#yac2012 #yamobile 35
  • Почему? • Честно, я подходил несколько раз к программистам и спрашивал, нужно ли что-нибудь автоматизировать? :-) • Если мы были бы Яндексом, то тоже использовали автосборки, но пока нет#yac2012 #yamobile 36
  • Была идея использовать разные профили для приложений: Dev и не-Dev#yac2012 #yamobile 37
  • Есть ограничения: • Нужны новые Push-сертификаты • Нужно регистрировать отдельные «инаппы» • Синхронизация через iCloud работает для Dev-a • ...#yac2012 #yamobile 38
  • Решили пока использовать разные иконки: Dev и не-Dev#yac2012 #yamobile 39
  • Зачем? • При тестирование видно, что это Dev-версия или нет • Новые супер-фичи и NDA • У Dev-сборок может неожиданно истечь сертификат и приложение не будет запускаться#yac2012 #yamobile 40
  • Главное: не забыть поменять иконку перед релизом :-)#yac2012 #yamobile 41
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 42
  • 2. Стандартное серверное API для всех приложений#yac2012 #yamobile 43
  • Любое наше приложение работает с Applifto API#yac2012 #yamobile 44
  • Applifto API • start — базовая информация про устройство (тип, модель, версия ОС, локаль, ...) и token, построение различных статистик и отправка «пушей» • stderr#yac2012 #yamobile 45
  • Applifto API • start • stderr — отправка всех крешей с устройства (CrashReportSender), уведомление разработчика по почте, веб-интерфейс для просмотра всех крешей •s#yac2012 #yamobile 46
  • Applifto API • start • stderr • feedback — в каждом приложение есть форма связи с нами, оперативное решение проблем •ы#yac2012 #yamobile 47
  • 48
  • Applifto API • start • stderr • feedback • about — страница информации или FAQ по приложению, текст меняется из админа • verify inapp#yac2012 #yamobile 49
  • 50
  • Applifto API • start • stderr • feedback • about • verify inapp — защита от взлома «инаппов», проверка, рекомендованная Apple#yac2012 #yamobile 51
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 52
  • 3. Клиент-серверное взаимодействие#yac2012 #yamobile 53
  • Почти все приложения работают с серверной частью#yac2012 #yamobile 54
  • Стандартная модель API Подписанные запросы (md5 от параметров), api_id и secret#yac2012 #yamobile 55
  • Стандартная модель API Формат данных — JSON, иногда Plist#yac2012 #yamobile 56
  • Стандартная модель API Никогда не забываем про gzip! (клиент-сервер)#yac2012 #yamobile 57
  • Удобное тестирование методов API через браузер Без генерации подписи (Dev-режим)#yac2012 #yamobile 58
  • Обязательно: мониторинг клиент-серверного взаимодействия Легко найти ошибку на любой стороне, лишние запросы, ...#yac2012 #yamobile 59
  • Частая ошибка:длительная или неверная синхронизация данных#yac2012 #yamobile 60
  • Для анализа данных или протокола сторонних приложений#yac2012 #yamobile 61
  • Мы используем самописный форвардер запросов и ответов#yac2012 #yamobile 62
  • А вдруг rocket science? :-)#yac2012 #yamobile 63
  • Иногда совсем не «рокет» «На коленке» написанная серверная часть, безопасность данных вообще отсутствует#yac2012 #yamobile 64
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 65
  • 4. Управление приложениями#yac2012 #yamobile 66
  • Единый админ для управления всеми приложениями#yac2012 #yamobile 67
  • 68
  • Работа с обратной связью#yac2012 #yamobile 69
  • 70
  • Reviews в App Store только бесят Колы и единицы vs. пятёрки и восторг Нет двусторонней связи#yac2012 #yamobile 71
  • Очень часто пользователи «тупят» и ставят «плохие» оценки#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 82
  • 83
  • Плюс AppAnnie.com#yac2012 #yamobile 84
  • Статистика по активным* устройствам * token устройства для приложения действительный#yac2012 #yamobile 85
  • 86
  • Плюс Localytics.com#yac2012 #yamobile 87
  • Подробная статистика У «крутых» приложений есть собственный админ и расширенная статистика#yac2012 #yamobile 88
  • Различные графики, хит-парады и разрезы данных#yac2012 #yamobile 89
  • 90
  • 91
  • 92
  • Важно: сразу продумывайте какая статистика нужна приложению#yac2012 #yamobile 93
  • Бонус: если приложение часто бывает в топе «кассовых»,#yac2012 #yamobile 94
  • То можно оценить оборот $ раздела в день#yac2012 #yamobile 95
  • Рассылка Push-уведомлений#yac2012 #yamobile 96
  • Типы «пушей» • Открытие приложения • Написать в обратную связь • Оставить отзыв в App Store • Переход на пункт меню или единицу контента#yac2012 #yamobile 97
  • Фильтрация при отправке • Всем • Только тестовым устройствам • Выборочно • учитывая локализацию • определенной версии ОС и приложения#yac2012 #yamobile 98
  • Чем чаще отсылаешь «пуши», тем число активных устройств точней#yac2012 #yamobile 99
  • Не забывать: про поддержку «тихого режима» в приложении#yac2012 #yamobile 100
  • 101
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 102
  • 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 без уведомления увеличил размеры буфферов в два раза :-)#yac2012 #yamobile 111
  • В 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 118
  • По статистике: в основном это < 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 125
  • Разработать «апдейт» несложно,#yac2012 #yamobile 126
  • Легко всё разломатьу текущих пользователей#yac2012 #yamobile 127
  • Цена ошибки — велика Исправить получится только после проверки приложения, а это от 5—10 дней#yac2012 #yamobile 128
  • Обновление приложений — очень важный и сложный процесс!#yac2012 #yamobile 129
  • Когда версия исправляет обновление предыдущей версии,#yac2012 #yamobile 130
  • Это печально...#yac2012 #yamobile 131
  • Хотя, судя по iOS 6, ошибки в новой версии — это «Apple way» :-) При Стиве Джобсе такого не было!#yac2012 #yamobile 132
  • Раньше тестировали приложения все Программисты, менеджеры, бета-тестеры, ...#yac2012 #yamobile 133
  • Это отнимало очень много времени И совершенно неэффективно!#yac2012 #yamobile 134
  • Пытались работать с бета-тестерами Но они очень ленивые и медленные#yac2012 #yamobile 135
  • В итоге: решились на «тестировщика» Это было сложное и кардинальное решение для нас :-)#yac2012 #yamobile 136
  • Если в Яндексе работают «тестировщикИ»,#yac2012 #yamobile 137
  • То у нас он один и универсальный :-)#yac2012 #yamobile 138
  • • Он совсем не программист! • Тестирует на всех девайсах и поддерживаемых версиях ОС • Разбирает фидбек от пользователей • Есть список тестов и план тестирования по каждому приложению#yac2012 #yamobile 139
  • Версионность#yac2012 #yamobile 141
  • x.x — мажорный «апдейт» Важное обновление, новый функционал, разработка от 2х недель#yac2012 #yamobile 142
  • x.x.x — минорный «апдейт» Исправление ошибок и улучшения, разработка 1—5 дней#yac2012 #yamobile 143
  • x.x.x.x — Dev-версия, не для публикации Исправление ошибок и улучшения, в активной фазе каждые 1—2 дня#yac2012 #yamobile 144
  • x.x.x.x — Dev-версия, не для публикации Обработка таких версий на сервере, включение дополнительного функционала:#yac2012 #yamobile 145
  • x.x.x.x — Dev-версия, не для публикации проверка «инаппов» через sandbox, контент для продажи — free, ...#yac2012 #yamobile 146
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 147
  • 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 162
  • #yac2012 #yamobile 163
  • Много проблем возникает с Jailbreak-ами В одном из приложений нам пришлось ввести ряд ограничений#yac2012 #yamobile 164
  • i-FunBox и подобные программы#yac2012 #yamobile 165
  • #yac2012 #yamobile 166
  • Можно перекинуть в *.app файлы и они будут доступны в приложении без покупки «инаппа» Старый баг одного из приложений, сообщил нам об этом сам «хакер» :-)#yac2012 #yamobile 167
  • Пара общих рекомендаций:#yac2012 #yamobile 168
  • 1. Не забивайте на шифрование данных, как WhatsApp http://clck.ru/2DYSI#yac2012 #yamobile 169
  • 2. Не публикуйте базы UDID-ов, если вы их ещё собираете :-) http://clck.ru/2DYSs#yac2012 #yamobile 170
  • После запрета Apple использовать UDID мы перешли на md5 от MAC-адреса#yac2012 #yamobile 171
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 172
  • 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 #yamobile 177
  • 178
  • У нас так получилось дважды Может быть наши заявки одобрили из-за фразы: «We trust in Apple and App Store Review Team» :-)#yac2012 #yamobile 179
  • Кстати, способ загрузить одновременно большое количество приложений не работает http://clck.ru/2H8KS#yac2012 #yamobile 180
  • #yac2012 #yamobile 181
  • Но иногда приложения отклоняют :-)#yac2012 #yamobile 182
  • Documents vs. Caches После выхода iOS 5 несколько приложений отклонили из-за неправильной структуры хранения данных#yac2012 #yamobile 183
  • Нельзя явно заставлятьпользователей оценивыть приложение в App Store Летнее нововедение в App Store Review#yac2012 #yamobile 184
  • 185
  • Но мы обошли это ограничение Теперь мы присылаем пуш с просьбой оценить приложение :-)#yac2012 #yamobile 186
  • Чем чаще выпускаете обновления приложений,#yac2012 #yamobile 187
  • Тем раньше узнаёте о новых ограничениях в App Store Review :-)#yac2012 #yamobile 188
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 189
  • 8. Мотивация пользователей или «белая» магия#yac2012 #yamobile 190
  • Отлично работает следующая комбинация действий:#yac2012 #yamobile 191
  • • Постоянные Push-уведомления • Периодичные распродажи • Пользователи любят покупать наборы типа «All Inclusive» • Баннеры-прокачки для контента как в приложении App Store#yac2012 #yamobile 192
  • Ограничение: «инапп» не может быть бесплатным,#yac2012 #yamobile 193
  • Решение: на сервере можно управлять параметром isFree для единицы контента#yac2012 #yamobile 194
  • Вторая часть айсберга 1. Работа со сборками и профилями 2. Стандартное серверное API 3. Клиент-серверное взаимодействие 4. Управление приложениями 5. Новые девайсы, версии ОС и приложений 6. Безопасность приложений 7. Релиз и проверка приложений 8. Мотивация пользователей 9. Кратко про Android 195
  • 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 205
  • • Приложение для логистики, iPod + сканнер штрих-кодов • Мониторинг внутренней статистики • Быстрый доступ к данным по компании#yac2012 #yamobile 206
  • #yac2012 #yamobile 207
  • • Приложение для логистики, iPod + сканнер штрих-кодов • Мониторинг внутренней статистики • Быстрый доступ к данным по компании#yac2012 #yamobile 208
  • #yac2012 #yamobile 209
  • • Приложение для логистики, iPod + сканнер штрих-кодов • Мониторинг внутренней статистики • Быстрый доступ к данным по компании — приложения «для директора» :-)#yac2012 #yamobile 210
  • 2. Запустили переводы интересных статей про iOS и Apple#yac2012 #yamobile 211
  • www.applifto.ru/docs 212
  • Спасибо за внимание! Анатолий Шарифулин @sharifulin Аpplifto Inc. www.applifto.ru#yac2012 #yamobile 213
  • Вопросы? Анатолий Шарифулин @sharifulin Аpplifto Inc. www.applifto.ru#yac2012 #yamobile 214