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

  • 858 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
858
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
1
Comments
0
Likes
6

Embeds 0

No embeds

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