View
16
Download
0
Category
Preview:
Citation preview
Опыт разработки мобильных приложений
в 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
Review в 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 #yamobile
Бонус: если приложение часто бывает в топе
«кассовых»,
93
#yac2012 #yamobile
То можно оценить оборот $ раздела
в день
94
#yac2012 #yamobile95
Рассылка Push-уведомлений
#yac2012 #yamobile
Типы «пушей»
96
• Открытие приложения• Написать в обратную связь
• Оставить отзыв в App Store
• Переход на пункт меню или единицу контента
#yac2012 #yamobile
Фильтрация при отправке
• Всем• Только тестовым устройствам
• Выборочно• учитывая локализацию• определенной версии ОС и приложения
97
#yac2012 #yamobile
Чем чаще отсылаешь «пуши», тем число активных устройств
точней
98
#yac2012 #yamobile
Не забывать: про поддержку
«тихого режима» в приложении
99
100
Вторая часть айсберга
101
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
5. Новые девайсы, версии ОС и приложений
102
#yac2012 #yamobile
Каждые полгода выходит новый девайс
103
#yac2012 #yamobile104
Либо нужно увеличивать размеры приложений
в 2 раза
#yac2012 #yamobile
Либо нужно увеличивать размеры приложений в 1.127 раза :-)
105
#yac2012 #yamobile
Либо исправлять глюки
106
На new iPad появился «голубой экран»
107
#yac2012 #yamobile
Каждый год выходит новая версия iOS с новыми фичами
108
#yac2012 #yamobile
и иногда без обратной совместимости
109
#yac2012 #yamobile
В iOS 4.3 испортилась запись треков,
добавилось шипение
110
Apple без уведомления увеличил размеры буфферов в два раза :-)
#yac2012 #yamobile
В iOS 5 запись вообще перестала работать
111
#yac2012 #yamobile
Минимальная поддерживаемая версия iOS?
112
#yac2012 #yamobile
Долго поддерживали все версии,
начиная с 3.1.2
113
#yac2012 #yamobile
Чем дальше, тем больше костылей
114
#yac2012 #yamobile
Большое количество комбинаций:
девайс и версия iOS
115
#yac2012 #yamobile
Везде протестировать нет возможности, о проблемах узнаём только после релиза
116
#yac2012 #yamobile
По статистике: в основном это
< 7% пользователей
117
#yac2012 #yamobile
Так они ещё и колы ставят :-)
118
#yac2012 #yamobile
В итоге: решили поддерживать
последнюю объявленную и предыдущую версии
119
#yac2012 #yamobile
То есть сейчас iOS 5 и выше
120
#yac2012 #yamobile
Cледовательно,iPhone 3Gs и новее
121
#yac2012 #yamobile
Каждый месяц мы выпускаем обновления
приложений
122
#yac2012 #yamobile
На самом деле — чаще
123
В этом году мы выпустили 33 «апдейта»,половина — минорные обновления
#yac2012 #yamobile
Разработать «апдейт» несложно,
124
#yac2012 #yamobile
Легко всё разломать у текущих пользователей
125
#yac2012 #yamobile
Цена ошибки — велика
126
Исправить получится только после проверки приложения, а это от 5—10 дней
#yac2012 #yamobile
Обновление приложений — очень важный и сложный процесс!
127
#yac2012 #yamobile
Когда версия исправляет обновление предыдущей версии,
128
#yac2012 #yamobile
Это печально...
129
#yac2012 #yamobile
Раньше тестировали приложения все
130
Программисты, менеджеры, бета-тестеры, ...
#yac2012 #yamobile
Это отнимало очень много времени
131
И совершенно неэффективно!
#yac2012 #yamobile
Пытались работатьс бета-тестерами
132
Но они очень ленивые и медленные
#yac2012 #yamobile
В итоге: решились на «тестировщика»
133
Это было сложное и кардинальное решение для нас :-)
#yac2012 #yamobile
Если в Яндексе работают
«тестировщикИ»,
134
#yac2012 #yamobile
То у нас он один и универсальный :-)
135
#yac2012 #yamobile136
• Он совсем не программист!
• Тестирует на всех девайсах и поддерживаемых версиях ОС
• Разбирает фидбек от пользователей
• Есть список тестов и план тестирования по каждому приложению
#yac2012 #yamobile
Версионность
138
#yac2012 #yamobile
x.x — мажорный «апдейт»
139
Важное обновление, новый функционал,разработка от 2х недель
#yac2012 #yamobile
x.x.x — минорный «апдейт»
140
Исправление ошибок и улучшения,разработка 1—5 дней
#yac2012 #yamobile
x.x.x.x — Dev-версия, не для публикации
141
Исправление ошибок и улучшения,в активной фазе каждые 1—2 дня
#yac2012 #yamobile
x.x.x.x — Dev-версия, не для публикации
142
Обработка таких версий на сервере,включение дополнительного функционала:
#yac2012 #yamobile
x.x.x.x — Dev-версия, не для публикации
143
проверка «инаппов» через sandbox,контент для продажи — free, ...
Вторая часть айсберга
144
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
6. Безопасность приложений и борьба с «пиратами»
145
#yac2012 #yamobile
Раньше мы выпускали только платные приложения
146
#yac2012 #yamobile
Но их стали оперативно ломать и выкладывать на торренты
147
#yac2012 #yamobile
Из собственной статистики запусков мы обнаружили,
148
#yac2012 #yamobile
что пользователей больше, чем покупателей :-)
149
#yac2012 #yamobile
Некоторые «хакеры» тщеславны
150
#yac2012 #yamobile151
#yac2012 #yamobile
Мы заблокировали версии на серверной
стороне
152
#yac2012 #yamobile153
#yac2012 #yamobile
И просили обновиться на новые версии
154
#yac2012 #yamobile155
#yac2012 #yamobile
Но новые версии тоже ломали и выкладывали :-)
156
#yac2012 #yamobile
Мы перешли на Freemium-модель
157
Бесплатные приложения с «инаппами»
#yac2012 #yamobile
Оказывается, «инаппы» можно ломать и делать бесплатными
158
#yac2012 #yamobile
И мы сделали проверку запросов на сервере
159
Как рекомендует Apple
#yac2012 #yamobile160
#yac2012 #yamobile161
Много проблем возникает с Jailbreak-ами
В одном из приложений нам пришлось ввести ряд ограничений
#yac2012 #yamobile
i-FunBox и подобные программы
162
#yac2012 #yamobile163
#yac2012 #yamobile
Можно перекинуть в *.app файлы и они будут
доступны в приложении
без покупки «инаппа»
164
Старый баг одного из приложений, сообщил нам об этом сам «хакер» :-)
#yac2012 #yamobile
Пара общих рекомендаций:
165
#yac2012 #yamobile
1. Не забивайте на шифрование данных, как WhatsApp
166
http://clck.ru/2DYSI
#yac2012 #yamobile
2. Не публикуйте базы UDID-ов, если вы их ещё собираете :-)
167
http://clck.ru/2DYSs
#yac2012 #yamobile
После запрета Apple использовать UDID мы перешли
на md5 от MAC-адреса
168
Вторая часть айсберга
169
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
7. Релиз и проверка приложений
170
#yac2012 #yamobile
Последний камень преткновения —
проверка приложения
171
#yac2012 #yamobile
Обычно занимает от 5 до 10 дней
172
#yac2012 #yamobile
Время проверки приложения можно сократить до 24 часов
173
#yac2012 #yamobile
Для этого нужно написать «слёзное» письмо
App Store Resource Center
174
http://clck.ru/2H5Pk
175
#yac2012 #yamobile
У нас так получилось дваждыМожет быть наши заявки одобрили из-за фразы:
«We trust in Apple and App Store Review Team» :-)
176
#yac2012 #yamobile
Кстати, способ загрузить одновременно большое количество приложений
не работает
177
http://clck.ru/2H8KS
#yac2012 #yamobile
Но иногда приложения отклоняют :-)
178
#yac2012 #yamobile
Documents vs. Caches
179
После выхода iOS 5 несколько приложений отклонили из-за неправильной структуры
хранения данных
#yac2012 #yamobile
Нельзя явно заставлять пользователей оценивыть приложение в App Store
180
Летнее нововедение в App Store Review
181
#yac2012 #yamobile182
Но мы обошли это ограничение
Теперь мы присылаем пуш с просьбой оценить приложение :-)
#yac2012 #yamobile
Чем чаще выпускаете обновления приложений,
183
#yac2012 #yamobile
Тем раньше узнаёте о новых ограничениях в App Store Review :-)
184
Вторая часть айсберга
185
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
8. Мотивация пользователей или
«белая» магия
186
#yac2012 #yamobile
Отлично работает следующая
комбинация действий:
187
#yac2012 #yamobile188
• Постоянные Push-уведомления
• Периодичные распродажи
• Пользователи любят наборы типа«All Inclusive»
• Баннеры-прокачки для контента как в приложении App Store
#yac2012 #yamobile189
Ограничение: «инапп» не может быть бесплатным,
#yac2012 #yamobile
Решение: на сервере можно управлять параметром isFree для единицы контента
190
Вторая часть айсберга
191
1. Работа со сборками и профилями2. Стандартное серверное API
3. Клиент-серверное взаимодействие
4. Управление приложениями
5. Новые девайсы, версии ОС и приложений
6. Безопасность приложений
7. Релиз и проверка приложений
8. Мотивация пользователей
9. Кратко про Android
#yac2012 #yamobile
9. Коротко про Android
192
#yac2012 #yamobile
Для охвата пользователей
Android, конечно, нужен :-)
193
#yac2012 #yamobile
Но большинство из них не хотят или не готовы платить
194
#yac2012 #yamobile
Многообразие девайсов и размеров
поражает
195
#yac2012 #yamobile
Приложения легко декомпилятся
196
#yac2012 #yamobile
С безопасностью одни проблемы
197
#yac2012 #yamobile
В общем не-iOS ещё :-)
198
#yac2012 #yamobile
При наличии iOS-версии Android
разрабатывается быстро
199
#yac2012 #yamobile
Бонус
200
#yac2012 #yamobile
При наличии успешного опыта разработки
201
#yac2012 #yamobile
Легко и быстро разрабатываютсявспомогательные приложения для внутренних нужд
202
#yac2012 #yamobile203
• Приложение для логистики,iPod + сканнер штрих-кодов
• Мониторинг внутренней статистики
• Быстрый доступ к данным по компании
#yac2012 #yamobile204
#yac2012 #yamobile205
• Приложение для логистики,iPod + сканнер штрих-кодов
• Мониторинг внутренней статистики
• Быстрый доступ к данным по компании
#yac2012 #yamobile206
#yac2012 #yamobile207
• Приложение для логистики,iPod + сканнер штрих-кодов
• Мониторинг внутренней статистики
• Быстрый доступ к данным по компании
#yac2012 #yamobile
Спасибо за внимание!
Анатолий Шарифулин@sharifulin
Аpplifto Inc.www.applifto.ru
208
#yac2012 #yamobile
Вопросы?
Анатолий Шарифулин@sharifulin
Аpplifto Inc.www.applifto.ru
209
Recommended