Telegram Web Link
Топ AppStore и первое приложение для Apple Watch

В тот же год Apple должна была выпустить свое новое устройство — Apple Watch. Мы с заказчиками сразу решили, что Shots — а именно так называлась новая соцсеть, — непременно будет там.

— Как создать приложение под устройство, которое еще даже не вышло?
— Разрабатывать и тестировать на эмуляторе.

Мы переработали интерфейс так, чтобы можно было управлять приложением с устройства на запястье. Можно было:

- читать чаты,
- отвечать на сообщения,
- управлять с часов съемкой фото и видео,
- скроллить ленту,
- просматривать профили пользователей.

Купертиновцы презентуют Apple Watch, умные часы появляются в продажах, а в пока еще молодом сторе новой платформы красуется Shots — Apple выделила наше приложение в числе самых первых под WatchOS.

#case
🔥7
Best App of the Year

Shots — визуальная соцсеть, как Instagram и Snapchat, так что огромную роль играла встроенная камера (да, в то время ей еще активно пользовались, а в снэпчате пользуются до сих пор).

Мы добавили в нашу камеру лайф-фильтры и gif-анимации. Это были настоящие Cutting Edge фичи!

> Раньше фильтры накладывались только после съемки, а мы добавили возможность применить фильтр сразу при предпросмотре в реальном времени.

И это не было бы большим достижением, если бы нам не удалось зарелизить их одновременно с инстой, подглядев у снэпчата 🙃
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
📹 Хайп на Ретро

Одним из фильтров стал VHS. Тогда тренд на ретро-стиль переживал один из своих пиков, которые еще не раз повторятся в будущем. Так что мы создали еще один фильтр для камеры Shots, который записывал видео так, как если бы они были сняты старой кассетной камерой.

Фильтр взлетел. Он стал пользоваться такой бешеной популярностью, что мы решили не останавливаться и выпустили отдельное приложение с VHS-камерой, но на этот раз мы уже опередили всех. Нам потребовалось меньше трех недель, чтобы выпустить приложение для iOS и Android. Уже через несколько месяцев приложение было скачано несколько миллионов раз, а оценку 5 звезд на iOS оставило 8 из 10 пользователей.

🏆 Apple отметила VHS Home videos app как Best New App больше чем в 100 странах и представила к награде App Store’s Best of 2017.

Успех, которого мы сами не ожидали.
8👏4🔥3
Оптимизация

Кто был нашей аудиторией? Подростки. Если вам кажется, что зумеры уже рождаются с последним айфоном про макс в руках, то так было не всегда и уж точно не везде. В то время американским тинейджерам от родителей часто доставались старые модели смартфонов по истечению контракта с операторами связи вроде AT&T или T-Mobile. Нам постоянно приходилось держать это в голове, так что много внимания мы уделили оптимизации приложения.

🛜 Офлайн мод

Интернет тоже был роскошью. В США интернет значительно дороже, поэтому у школьников часто он не был включен в тарифный план — в соцсети выходили в школе или дома по Wi-Fi. Одной из фич было запоминание оставленных лайков, реплаев, подписок и отправленных сообщений без сети, чтобы когда появлялось соединение все тут же синхронизировалось.

🇧🇷 Оптимизация для пользователей из Бразилии

Если в США у нашей аудитории быстрый интернет был хотя бы по Wi-Fi, то подросткам из Бразилии повезло меньше — там даже домашний интернет был невероятно медленным. Тогда то мы и уменьшили размер приложения до 100Мб, чтобы Shots можно было скачать даже с низкой скоростью подключения.

🖼 Постепенная загрузка изображений

Одним из нововведений стало использование формата Progressive JPEG. Сейчас появились технологии покруче, но в то время мы экспериментировали с технологиями, чтобы загружать изображения даже с низкой скоростью интернета. Кто не помнит или не застал: это формат, который позволяет при медленном интернете моментально прогрузить фотографию в низком качестве, затем плавно его улучшая.
🔥7👍1👏1
Логотип на салфетке

Звучит как мем, но это реальная история.

В самом начале мы рассказали, что во многих проектах Shots Studios участвовал Джастин Бибер. Как-то раз, когда мы спросили заказчиков, каким они видят логотип приложения, наш вопрос застал их компанию в ресторане. Тогда Джастин попросил ручку и нарисовал эскиз на том, что оказалось под рукой — на салфетке, сфотографировал и отправил нам. После наш дизайнер создал логотип на основе этого рисунка.

Вот такая вот история! На нашем сайте вы также можете полистать этот и другие кейсы и посмотреть вакансии на один из наших проектов 🪐

> Кейс Shots

> Страница с актуальными вакансиями
🔥8😁2
Поделитесь, как вам новый формат? Стоит ли нам чаще рассказывать подобные истории о наших проектах? Может быть, есть что-то, о чем бы вам было интересно узнать? Дайте нам знать в комментариях, если да.
👍21🔥64
This media is not supported in your browser
VIEW IN TELEGRAM
Apple представит новый iPhone SE 19 февраля

Это будет самый доступный смартфон компании, инсайдеры называют цену $499. Внешне он будет похож на iPhone 14.
🔥4🌭3
Можно вечно смотреть на огонь, воду и на то, как Microsoft пытается заставить пользователей перейти на браузер Edge. Вот, например, новый финт — страничка-руководство «Как удалить Edge», где нет ни слова о том, как удалить браузер (удалить его с Windows, кстати, можно только в ЕС), зато подробно расписаны преимущества Edge перед Chrome.

#web
😁8
Подогрев сидений по подписке, это, конечно, здорово. Но как насчет рекламы на мультимедийныом экране в вашем Jeep?

Теперь в автомобилях марки после каждой остановки появляется рекламный банер и мешает во время езды. Рекламу можно закрыть, только для этого надо каждый раз тянуться рукой до сенсорного экрана.
🤣8
Всем привет! Меня зовут Булат, и я работаю в Mercury React Native разработчиком.
Наверняка все наслышаны о фреймворке от компании Facebook (https://reactnative.dev/), на котором можно разрабатывать кроссплатформенные мобильные приложения. Не претендую на роль знатока, но постараюсь рассказать вам немного своего мнения об этой технологии, а также о роли нативных модулей в React Native. Расскажу, почему умение писать нативные модули очень важно для React Native программиста и покажу как одна непростая задача решилась с помощью самописного нативного модуля.
🔥155❤‍🔥3😎1
После окончания университета я пару лет проработал в небольшой компании, где мы создавали игры на JS, используя Phaser.js и на языке Lua, используя фреймоврк Corona SDK. Опыт был интересный. Конечно, мы не создавали крутые 3d проекты, но для начинающего разработчика это был тот еще челлендж. Игры были различные от популярных в то время «Три в ряд» до пасьянсов и даже стратегий в стиле Tower Defense. Некоторые игры можно все еще найти на различных стоковых сайтах, например: https://www.gamepix.com/play/farm-dream.

Сложность реализации заключалась в невидимых блоках посередине, сроки были также очень сжатые. Помню, как было действительно страшно не успеть доделать игру в заданные сроки.
👍5❤‍🔥32
А эту демку делал для предыдущего доклада в Мерке, чтобы продемонстрировать возможности фреймворка: https://kidasov.github.io/bomber/ — управление с помощью стрелочек бомбы ставить на пробел. На больших экранах может подлагивать, потому что каждый спрайт карты — это отдельная картинка. Но это просто демо возможностей фреймворка.
🔥65❤‍🔥3
Чем были прекрасны эти 2 года? При написании любой даже самой маленькой игры в голове генерировалось просто куча идей, как сделать игровой процесс лучше, какой алгоритм использовать. И как только появлялся хоть какой-то геймплей, то все свободное время я занимался лишь изучением возможностей фреймворка, общался на форумах о последних апдейтах. Сидишь вечерами и пытаешься экспериментировать над геймплеем и это очень увлекает, так как процесс полностью интерактивный. Помимо этого увидел реальное применение алгоритмам, о которых до только читал в книжках до этого. Много работал с массивами, графами, было очень интересно описывать игровые сущности классами, экспериментировал с паттернами программирования. И самое главное, что каждая новая игра заставляла поразмыслить над геймплеем и особенностями реализации.
🔥10👍1
Проработав в геймдеве 2 года, я попал в Mercury, где моим первым проектом стало приложение для ТВ приставки Roku, где программы пишутся на языке brightscript (который совсем не bright, писать на нем было не очень привычно). Помню, что было очень неудобно дебажить, так как у приставки было мало видеопамяти и она периодически подвисала, не выдерживая моего неправильного кода.
🔥83🥰2🥴1
За годы, проведенные в Mercury, также посчастливилось поработать на Ember.js, расширяя функционал админки на одном из проектов. Было сложным привести legacy-код на проекте в порядок из-за огромного количества ненужных библиотек, во многих местах наряду с ember-компонентами использовался JQuery. Со временем вошел во вкус, и даже появилась идея все переписать на новом Ember.js, но увы данную часть проекта свернули и мне так и не удалось использовать последний Ember. К слову, фреймворк довольно неплохой. Также у Ember неплохое community и отличная документация, а также есть отличная CLI, через которую можно установить большое количество ember библиотек (аддонов).
👍4❤‍🔥32
Параллельно я изучал React и React-Native. В первое время фронтовых проектов было почти столько же, сколько и мобильных, но со временем число фронтенд-проектов стало меньше и большая часть проектов, на которых я работал, была разработана на React Native. Первые впечатления от фреймворка были довольно положительные. Кроме работы с Xcode, такое большое количество настроек, каждая из которых может все поломать пугала, а обновления Xcode без немалой доли терпения точно не пережить. Но после того как настроил и привык к окружению Xcode для iOS, Android Studio для Android начала вникать в разработку кроссплатформенных приложений, используя JavaScript или TypeScript. На проектах постепенно втягивался в разработку на React Native, используя доступные библиотеки.

Однако сложность задач росла и со временем все чаще наблюдал баги, где задачи не решались стандартным способом, приходилось лезть под капот React Native модуля и разбираться. Спасибо отзывчивым коллегам и форумам, которые помогали понять, что в нативном коде есть ошибка и ее нужно поправить. Часами напролет я пытался найти решение, чтобы решить задачу. Но лезть в нативный код мне также не хотелось. Поначалу я хотел делегировать задачи, связанные с нативом, однако потом мне это надоело и я решил потихонечку разбираться и пробовать свои силы в редактировании нативного кода и исправлении существующих библиотек под свои нужды. Поначалу приходилось форкать библиотеку, но с появлением patch-package написание патчей стало гораздо проще.
🔥83❤‍🔥2
Наступил момент, когда доступных решений на некоторых проектах просто не было, кроме как использовать нативные SDK. Например, на одном из проектов нам нужно было интегрировать нативный компонент для iOS, который мы не могли найти в React Native библиотеке, на другом пришлось писать модуль для работы с платежной системой PayPall. Медленно, но верно я начал вникать и пытаться что-то сделать в нативном коде, хоть это было и довольно сложно для человека незнакомого с Objective-C.

На последнем из проектов появились задачи посложнее, например, коннектиться к стороннему девайсу — панорамной камере ricoh theta, — и показывать с нее лайв превью, фотографировать и многое другое. Пришлось писать нативный модуль с нуля для iOS и Android для отображения этого самого лайв превью. Поначалу это кажется непосильной задачей, но со временем появляется какое-то понимание. Тут мне хочется немного остановиться и рассказать про ценность и необходимость написания нативных модулей для React Native разработчика. об этом уже завтра. А пока, если есть какие-то идеи или вопросы, приглашаю пообщаться в комментариях 👇
🔥6❤‍🔥43
Всем привет! Сегодня расскажу, что же такое нативные модули и как они работают. Все приложения на React Native мы пишем, используя React, JavaScript или TypeScript. Но для определенных задач, например, для общения со сторонними девайсами для которых доступен только нативный SDK, нам придется писать нативный код. Пишем мы нативные модули на языке Objective-C или Swift для iOS, Java или Kotlin для Android. Другими словами, мы можем написать нативный модуль для доступа к нужному нам API и использовать его в нашем React Native проекте
6👍1
2025/07/09 18:46:04
Back to Top
HTML Embed Code: