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

Like this? Share it with your network

Share

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

  • 1,263 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,263
On Slideshare
1,240
From Embeds
23
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
6

Embeds 23

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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