Опыт разработки мобильных приложений в Applifto
Click here to load reader
-
Upload
anatoly-sharifulin -
Category
Technology
-
view
1.326 -
download
4
description
Transcript of Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений
в AppliftoАнатолий Шарифулин
Yet another Conference 2012
#yac2012 #yamobile
Опрос аудитории
4
#yac2012 #yamobile
Applifto — не Яндекс, но мы тоже делаем
собственные приложения :-)
5
Наши приложения
6
Хорошо знакомо Яндексу? :-)7
#yac2012 #yamobile
Это первое и самое провокационное приложение
8
#yac2012 #yamobile
Но сейчас не об этом Тогда мы были молоды, только тсс...
9
#yac2012 #yamobile
Как только в команде больше, чем...
10
#yac2012 #yamobile
1 приложение
11
#yac2012 #yamobile
1 приложение1 версия приложения
12
#yac2012 #yamobile
1 приложение1 версия приложения
1 программист
13
#yac2012 #yamobile
1 приложение1 версия приложения
1 программист1 тестеровщик
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
Кодинг
Кодинг
...
Вторая часть айсберга
27
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
1. Работа со сборками и профилями приложений
28
#yac2012 #yamobile
Cпособы установки приложения
29
• Добавить в iTunes профиль и сборку, синхронизировать с девайсом
• Выложить на сервер по FTP/SFTP,отправить письмо со ссылкойitms-services://?action=...&url=...
• Веб-сервис для работы с профилями и сборками
#yac2012 #yamobile
Мы разработали свой веб-сервис
Готовые решения не используем:TestFlight, HockeyApp, ...
30
31
#yac2012 #yamobile
• Простой и удобный сервис для разработчиков и бета-тестеров
• Загрузка профилей и сборок приложений
• История всех изменений и быстрый доступ к любой версии приложения
• Свой, бесплатный и быстрый(в отличии от готовых решений)
32
#yac2012 #yamobile
• Автообновление приложений при выходе новой сборки
• Всего сборок: 949+
• Количество сборок:2010 — 8, 2011 — 526, 2012 — 415+
33
#yac2012 #yamobile
Привет, Роман Бусыгин! :-)http://events.yandex.ru/talks/4/
34
Автосборки проектов не используем
#yac2012 #yamobile
Почему?
• Один аккаунт разработчика, 100 устройств — вполне достаточно
• Приложение подписывается одним сертификатом (Dev и Distr), нет такой проблемы как в Яндексе
• Не используем CI server-а, 1 программист — 1 приложение (реже 2:1)
35
#yac2012 #yamobile
Почему?
• Честно, я подходил несколько раз к программистам и спрашивал, нужно ли что-нибудь автоматизировать? :-)
• Если мы были бы Яндексом, то тоже использовали автосборки, но пока нет
36
#yac2012 #yamobile37
Была идея использовать разные профили для приложений:
Dev и не-Dev
#yac2012 #yamobile
Есть ограничения:
• Нужны новые Push-сертификаты
• Нужно регистрировать отдельные «инаппы»
• Синхронизация через iCloud работает для Dev-a
• ...
38
#yac2012 #yamobile
Решили пока использовать разные иконки:Dev и не-Dev
39
#yac2012 #yamobile
Зачем?
40
• При тестирование видно, что это Dev-версия или нет
• Новые супер-фичи и NDA
• У Dev-сборок может неожиданно истечь сертификат и приложение не будет запускаться
#yac2012 #yamobile
Главное: не забыть поменять иконку перед релизом :-)
41
Вторая часть айсберга
42
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
2. Стандартное серверное API для всех приложений
43
#yac2012 #yamobile
Любое наше приложение работаетс Applifto API
44
#yac2012 #yamobile
Applifto API
45
• start — базовая информация про устройство (тип, модель, версия ОС, локаль, ...) и token, построение различных статистик и отправка «пушей»
• stderr
#yac2012 #yamobile46
• start
• stderr — отправка всех крешей с устройства (CrashReportSender), уведомление разработчика по почте, веб-интерфейс для просмотра всех крешей
• s
Applifto API
#yac2012 #yamobile47
• start
• stderr
• feedback — в каждом приложение есть форма связи с нами, оперативное решение проблем
• ы
Applifto API
48
#yac2012 #yamobile49
• start
• stderr
• feedback
• about — страница информации или FAQ по приложению, текст меняется из админа
• verify inapp
Applifto API
50
#yac2012 #yamobile51
• start
• stderr
• feedback
• about
• verify inapp — защита от взлома «инаппов»,проверка, рекомендованная Apple
Applifto API
Вторая часть айсберга
52
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
3. Клиент-серверное взаимодействие
53
#yac2012 #yamobile
Почти все приложения работают с серверной частью
54
#yac2012 #yamobile55
Подписанные запросы (md5 от параметров),api_id и secret
Стандартная модель API
#yac2012 #yamobile
Стандартная модель API
56
Формат данных — JSON,иногда Plist
#yac2012 #yamobile
Стандартная модель API
57
Никогда не забываем про gzip!(клиент-сервер)
#yac2012 #yamobile
Удобное тестирование методов API через браузер
58
Без генерации подписи (Dev-режим)
#yac2012 #yamobile
Обязательно: мониторинг клиент-серверного взаимодействия
59
Легко найти ошибку на любой стороне,лишние запросы, ...
#yac2012 #yamobile
Частая ошибка: длительная или неверная синхронизация данных
60
#yac2012 #yamobile
Для анализа данных или протокола
сторонних приложений
61
#yac2012 #yamobile
Мы используем самописный форвардер запросов и ответов
62
#yac2012 #yamobile
А вдруг rocket science? :-)
63
#yac2012 #yamobile
Иногда совсем не «рокет»
64
«На коленке» написанная серверная часть,безопасность данных вообще отсутствует
Вторая часть айсберга
65
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
4. Управление приложениями
66
#yac2012 #yamobile
Единый админ для управления всеми приложениями
67
68
#yac2012 #yamobile
Работа с обратной связью
69
70
#yac2012 #yamobile
Reviews в App Store только бесят
71
Колы и единицы vs. пятёрки и восторгНет двусторонней связи
#yac2012 #yamobile
Очень часто пользователи «тупят» и ставят «плохие»
оценки
72
#yac2012 #yamobile
Если возникла проблема, появился вопрос, ...
73
#yac2012 #yamobile
Сообщать нужно через обратную связь в приложении или на сайте
74
#yac2012 #yamobile
Во-первых, мы будем знать какой девайс, версии ОС и приложения
75
#yac2012 #yamobile
И быстро локализуем проблему
76
#yac2012 #yamobile
Во-вторых, вам точно ответят
77
#yac2012 #yamobile
В-третьих, Review в App Store для пятёрок :-)
78
#yac2012 #yamobile
Разбирая запросы в обратную связь,
79
#yac2012 #yamobile
Легко найти бета-тестеров, волонтёров и полезные знакомства
80
#yac2012 #yamobile
Cтатистика по приложениям
81
#yac2012 #yamobile
Мини-статистикапо скачиваниям и продажам
82
По данным из iTunesConnect
83
#yac2012 #yamobile84
Плюс AppAnnie.com
#yac2012 #yamobile
Статистика по активным* устройствам
85
* token устройства для приложения действительный
86
#yac2012 #yamobile87
Плюс Localytics.com
#yac2012 #yamobile
Подробная статистикаУ «крутых» приложений есть
собственный админ и расширенная статистика
88
#yac2012 #yamobile
Различные графики, хит-парады и разрезы
данных
89
90
91
92
#yac2012 #yamobile93
Важно: сразу продумывайте какая статистика нужна приложению
#yac2012 #yamobile
Бонус: если приложение часто бывает в топе
«кассовых»,
94
#yac2012 #yamobile
То можно оценить оборот $ раздела
в день
95
#yac2012 #yamobile96
Рассылка Push-уведомлений
#yac2012 #yamobile
Типы «пушей»
97
• Открытие приложения• Написать в обратную связь
• Оставить отзыв в App Store
• Переход на пункт меню или единицу контента
#yac2012 #yamobile
Фильтрация при отправке
• Всем• Только тестовым устройствам
• Выборочно• учитывая локализацию• определенной версии ОС и приложения
98
#yac2012 #yamobile
Чем чаще отсылаешь «пуши», тем число активных устройств
точней
99
#yac2012 #yamobile
Не забывать: про поддержку
«тихого режима» в приложении
100
101
Вторая часть айсберга
102
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
5. Новые девайсы, версии ОС и приложений
103
#yac2012 #yamobile
Каждые полгода выходит новый девайс
104
#yac2012 #yamobile105
Либо нужно увеличивать размеры приложений
в 2 раза
#yac2012 #yamobile
Либо нужно увеличивать размеры приложений в 1.127 раза :-)
106
#yac2012 #yamobile
Либо исправлять глюки
107
На new iPad появился «голубой экран»
108
#yac2012 #yamobile
Каждый год выходит новая версия iOS с новыми фичами
109
#yac2012 #yamobile
и иногда без обратной совместимости
110
#yac2012 #yamobile
В iOS 4.3 испортилась запись треков,
добавилось шипение
111
Apple без уведомления увеличил размеры буфферов в два раза :-)
#yac2012 #yamobile
В iOS 5 запись полностью перестала
работать
112
#yac2012 #yamobile113
#yac2012 #yamobile
Минимальная поддерживаемая версия iOS?
114
#yac2012 #yamobile
Долго поддерживали все версии,
начиная с 3.1.2
115
#yac2012 #yamobile
Чем дальше, тем больше костылей
116
#yac2012 #yamobile
Большое количество комбинаций:
девайс и версия iOS
117
#yac2012 #yamobile
Везде протестировать нет возможности, о проблемах узнаём только после релиза
118
#yac2012 #yamobile
По статистике: в основном это
< 7% пользователей
119
#yac2012 #yamobile
Так они ещё и колы ставят :-)
120
#yac2012 #yamobile
В итоге: решили поддерживать
последнюю объявленную и предыдущую версии
121
#yac2012 #yamobile
То есть сейчас iOS 5 и выше
122
#yac2012 #yamobile
Cледовательно,iPhone 3Gs и новее
123
#yac2012 #yamobile
Каждый месяц мы выпускаем обновления
приложений
124
#yac2012 #yamobile
На самом деле — чаще
125
В этом году мы выпустили 33 «апдейта»,половина — минорные обновления
#yac2012 #yamobile
Разработать «апдейт» несложно,
126
#yac2012 #yamobile
Легко всё разломать у текущих пользователей
127
#yac2012 #yamobile
Цена ошибки — велика
128
Исправить получится только после проверки приложения, а это от 5—10 дней
#yac2012 #yamobile
Обновление приложений — очень важный и сложный процесс!
129
#yac2012 #yamobile
Когда версия исправляет обновление предыдущей версии,
130
#yac2012 #yamobile
Это печально...
131
#yac2012 #yamobile
Хотя, судя по iOS 6, ошибки в новой версии — это «Apple way» :-)
132
При Стиве Джобсе такого не было!
#yac2012 #yamobile
Раньше тестировали приложения все
133
Программисты, менеджеры, бета-тестеры, ...
#yac2012 #yamobile
Это отнимало очень много времени
134
И совершенно неэффективно!
#yac2012 #yamobile
Пытались работатьс бета-тестерами
135
Но они очень ленивые и медленные
#yac2012 #yamobile
В итоге: решились на «тестировщика»
136
Это было сложное и кардинальное решение для нас :-)
#yac2012 #yamobile
Если в Яндексе работают
«тестировщикИ»,
137
#yac2012 #yamobile
То у нас он один и универсальный :-)
138
#yac2012 #yamobile139
• Он совсем не программист!
• Тестирует на всех девайсах и поддерживаемых версиях ОС
• Разбирает фидбек от пользователей
• Есть список тестов и план тестирования по каждому приложению
#yac2012 #yamobile
Версионность
141
#yac2012 #yamobile
x.x — мажорный «апдейт»
142
Важное обновление, новый функционал,разработка от 2х недель
#yac2012 #yamobile
x.x.x — минорный «апдейт»
143
Исправление ошибок и улучшения,разработка 1—5 дней
#yac2012 #yamobile
x.x.x.x — Dev-версия, не для публикации
144
Исправление ошибок и улучшения,в активной фазе каждые 1—2 дня
#yac2012 #yamobile
x.x.x.x — Dev-версия, не для публикации
145
Обработка таких версий на сервере,включение дополнительного функционала:
#yac2012 #yamobile
x.x.x.x — Dev-версия, не для публикации
146
проверка «инаппов» через sandbox,контент для продажи — free, ...
Вторая часть айсберга
147
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
6. Безопасность приложений и борьба с «пиратами»
148
#yac2012 #yamobile
Раньше мы выпускали только платные приложения
149
#yac2012 #yamobile
Но их стали оперативно ломать и выкладывать на торренты
150
#yac2012 #yamobile
Из собственной статистики запусков мы обнаружили,
151
#yac2012 #yamobile
что пользователей больше, чем покупателей :-)
152
#yac2012 #yamobile
Некоторые «хакеры» тщеславны
153
#yac2012 #yamobile154
#yac2012 #yamobile
Мы заблокировали версии на серверной
стороне
155
#yac2012 #yamobile156
#yac2012 #yamobile
И просили обновиться на новые версии
157
#yac2012 #yamobile158
#yac2012 #yamobile
Но новые версии тоже ломали и выкладывали :-)
159
#yac2012 #yamobile
Мы перешли на Freemium-модель
160
Бесплатные приложения с «инаппами»
#yac2012 #yamobile
Оказывается, «инаппы» можно ломать и делать бесплатными
161
#yac2012 #yamobile
И мы сделали проверку запросов на сервере
162
Как рекомендует Apple
#yac2012 #yamobile163
#yac2012 #yamobile164
Много проблем возникает с Jailbreak-ами
В одном из приложений нам пришлось ввести ряд ограничений
#yac2012 #yamobile
i-FunBox и подобные программы
165
#yac2012 #yamobile166
#yac2012 #yamobile
Можно перекинуть в *.app файлы и они будут
доступны в приложении
без покупки «инаппа»
167
Старый баг одного из приложений, сообщил нам об этом сам «хакер» :-)
#yac2012 #yamobile
Пара общих рекомендаций:
168
#yac2012 #yamobile
1. Не забивайте на шифрование данных, как WhatsApp
169
http://clck.ru/2DYSI
#yac2012 #yamobile
2. Не публикуйте базы UDID-ов, если вы их ещё собираете :-)
170
http://clck.ru/2DYSs
#yac2012 #yamobile
После запрета Apple использовать UDID мы перешли
на md5 от MAC-адреса
171
Вторая часть айсберга
172
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
7. Релиз и проверка приложений
173
#yac2012 #yamobile
Последний камень преткновения —
проверка приложения
174
#yac2012 #yamobile
Обычно занимает от 5 до 10 дней
175
#yac2012 #yamobile
Время проверки приложения можно сократить до 24 часов
176
#yac2012 #yamobile
Для этого нужно написать «слёзное» письмо
App Store Resource Center
177
http://clck.ru/2H5Pk
178
#yac2012 #yamobile
У нас так получилось дваждыМожет быть наши заявки одобрили из-за фразы:
«We trust in Apple and App Store Review Team» :-)
179
#yac2012 #yamobile
Кстати, способ загрузить одновременно большое количество приложений
не работает
180
http://clck.ru/2H8KS
#yac2012 #yamobile181
#yac2012 #yamobile
Но иногда приложения отклоняют :-)
182
#yac2012 #yamobile
Documents vs. Caches
183
После выхода iOS 5 несколько приложений отклонили из-за неправильной структуры
хранения данных
#yac2012 #yamobile
Нельзя явно заставлять пользователей оценивыть приложение в App Store
184
Летнее нововедение в App Store Review
185
#yac2012 #yamobile186
Но мы обошли это ограничение
Теперь мы присылаем пуш с просьбой оценить приложение :-)
#yac2012 #yamobile
Чем чаще выпускаете обновления приложений,
187
#yac2012 #yamobile
Тем раньше узнаёте о новых ограничениях в App Store Review :-)
188
Вторая часть айсберга
189
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
8. Мотивация пользователей или
«белая» магия
190
#yac2012 #yamobile
Отлично работает следующая
комбинация действий:
191
#yac2012 #yamobile192
• Постоянные Push-уведомления
• Периодичные распродажи
• Пользователи любят покупать наборы типа «All Inclusive»
• Баннеры-прокачки для контента как в приложении App Store
#yac2012 #yamobile193
Ограничение: «инапп» не может быть бесплатным,
#yac2012 #yamobile
Решение: на сервере можно управлять параметром isFree для единицы контента
194
Вторая часть айсберга
195
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
9. Коротко про Android
196
#yac2012 #yamobile
Для охвата пользователей
Android, конечно, нужен :-)
197
#yac2012 #yamobile
Но большинство из них не хотят или не готовы платить
198
#yac2012 #yamobile
Многообразие девайсов и размеров
поражает
199
#yac2012 #yamobile
Приложения легко декомпилятся
200
#yac2012 #yamobile
В общем не-iOS ещё :-)
201
#yac2012 #yamobile
При наличии iOS-версии Android
разрабатывается быстро
202
#yac2012 #yamobile
Бонусы
203
#yac2012 #yamobile
1. При наличии успешного опыта разработки
204
#yac2012 #yamobile
Легко и быстро разрабатываютсявспомогательные приложения для внутренних нужд
205
#yac2012 #yamobile206
• Приложение для логистики,iPod + сканнер штрих-кодов
• Мониторинг внутренней статистики
• Быстрый доступ к данным по компании
#yac2012 #yamobile207
#yac2012 #yamobile208
• Приложение для логистики,iPod + сканнер штрих-кодов
• Мониторинг внутренней статистики
• Быстрый доступ к данным по компании
#yac2012 #yamobile209
#yac2012 #yamobile210
• Приложение для логистики,iPod + сканнер штрих-кодов
• Мониторинг внутренней статистики
• Быстрый доступ к данным по компании — приложения «для директора» :-)
#yac2012 #yamobile
2. Запустили переводы интересных статей про iOS и Apple
211
#yac2012 #yamobile
Спасибо за внимание!
Анатолий Шарифулин@sharifulin
Аpplifto Inc.www.applifto.ru
213
#yac2012 #yamobile
Вопросы?
Анатолий Шарифулин@sharifulin
Аpplifto Inc.www.applifto.ru
214