• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Опыт разработки мобильных приложений в Applifto
 

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

on

  • 1,091 views

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

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

Statistics

Views

Total Views
1,091
Views on SlideShare
1,073
Embed Views
18

Actions

Likes
6
Downloads
0
Comments
0

3 Embeds 18

https://twitter.com 14
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