Рубрика «разработка под iOS» - 21

Всем привет. Сегодня хотим поделиться переводом подготовленным в преддверии запуска курса «iOS Разработчик. Продвинутый курс». Поехали!

Оборачиваем последовательности в Swift - 1

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

Читать полностью »

Вводные слова

Как бы ни ругали Apple за закрытость платформы и самой экосистемы, некоторые их решения являются исключением. На рынке много стриминговых сервисов, но предоставляющих полноценный SDK для стриминга в сторонних продуктах крайне мало, для российского рынка список официально доступных SDK ограничивается Deezer и Apple Music. Конечно, когда на наш рынок придёт Spotify, на один доступный SDK станет больше, но пока есть два игрока и только один из них имеет широкую пользовательскую базу.

Так получилось, что я имел опыт работы с Deezer SDK под Android и прямо сейчас активно работаю с SDK Apple Music (MusicKit) под iOS. И главное отличие от опыта с Deezer состоит в том, что MusicKit — это верхушка айсберга, она же публично доступный API. В отличие от Deezer, где повторить большую часть функциональности официального приложения — это просто длительный процесс, повторить функциональность даже веб-страницы Apple Music, используя только публичный API, невозможно. Даже если Apple использует MusicKit в своих решениях, то кроме него она использует ещё массу недокументированных API запросов и приватных API, которые простым смертным использовать запрещено.

В статье я расскажу про работу с MusicKit с точки зрения разработчика в контексте реализации достаточно "простых задач": поискать в каталоге, показать картинки в результатах поиска, получить песни, рекомендации и даже проиграть какую-то музыку. Забегая вперёд скажу, что многое из рассказанного будет справедливо и для работы с Apple Music в Android и Javascript.

Если понадобится, готов дать детальные ответы с кодом на вопросы в комментариях.

Читать полностью »

В нашей еженедельной подборке PWA в Google Play, запись нажатий, декларативный UI, изменения логотипа и нумерации версий Android, история создателя FBReader, отслеживание рук и многое другое!

Дайджест интересных материалов для мобильного разработчика #312 (19 — 25 августа) - 1Читать полностью »

Последнее, что хочется увидеть во время дебага кода — это хаос. Но что если этот хаос управляемый и запущен руками самого разработчика? Зачем умышленно устраивать турбулентность в слаженной работе своего приложения, как добиться душевного спокойствия при релизе важных фич и где точно вам пригодится практика хаос-инженерии, читайте в разговоре ведущих подкаста AppsCast с Павлом Осиповым PavelOsipov.

Chaos engineering - 1
Читать полностью »

Привет! Всем нравятся отзывчивые приложения. Ещё лучше, когда в них есть уместные анимации. В этой статье я расскажу и покажу со всем «мясом», как правильно показывать, скрывать, крутить, вертеть и делать всякое с всплывающими экранами.

Всплывай! Транзишены в iOS - 1

Читать полностью »

image

Какая разница между первым и вторым примером?

За что отвечает таргет?

В каком случае вызывается метод при нажатие кнопки?

TL;DR

При нажатии на кнопку наш метод вызывается в обоих случаях.

Только в первом примере UIKit попытается вызвать метод в назначенном таргете(у нас это ViewController). Будет краш, если этого метода не существует.

Во втором же примере используется iOS Responder Chain, UIKit будет искать самого ближнего UIResponder-a у которого есть данный метод. Краша не будет, если наш метод не найден.

UIViewController, UIView, UIApplication наследуют от UIResponder.

Читать полностью »

image

В последнее время я больше занимался фронтенд разработкой, чем мобильной, и я столкнулся с некоторыми очень интересными паттернами проектирования, которые я уже знал, но на самом деле не углублялся в них… до сих пор.

Но теперь все это имеет смысл, после использования из в разработки на React в течение нескольких недель, я теперь не могу вернуться к своим старым способам разработки под iOS. Я не буду переходить на javascript (AKA React Native) для разработки мобильных приложений, но вот кое-что, чему я научился.

image

Вернувшись к разработке под iOS, я создал новый проект и начал исследовать ReSwift, это реализация паттерна Flux и Redux в Swift. И это довольно просто работает, я несколько раз клонировал архитектуру JavaScript приложении, теперь у меня есть глобальное состояние, и мои контроллеры просто слушают это состояние. Сами контроллеры состоят из различных компонентов представления, которые инкапсулируют очень специфическое поведение.
Читать полностью »

Хакер выпустил первый публичный джейлбрейк для устройств Apple на iOS 11 и 12 - 1

Apple по ошибке упростила процесс взлома iPhone, вернув уязвимость, которую она уже исправила. Хакеры быстро воспользовались этим и выпустили джейлбрейк для iOS — первый бесплатный публичный джейлбрейк для iPhone за последние годы.

Специалисты по безопасности выяснили, что обновление для iOS 12.4 вернуло ошибку, обнаруженную ранее Недом Уильямсоном из Google Project Zero и исправленную ​​в iOS 12.3. Почти сразу был опубликован джейлбрейк для iOS 12.4.

Разработчик утилиты для взлома под ником Pwn20wnd заявляет, что программа успешно использует уязвимость SockPuppet на iOS 12.4 и может разблокировать устройство, что позволяет устанавливать и запускать любое стороннее программное обеспечение.
Читать полностью »

Разработана свободная альтернатива Apple AirDrop - 1

Apple Wireless Direct Link (AWDL) — ключевой протокол в экосистеме Apple, его использует более миллиарда устройств iOS и macOS для связи между собой. Это запатентованное расширение стандарта IEEE 802.11 (Wi-Fi), которое интегрируется с Bluetooth Low Energy (BLE) и обеспечивает работу таких сервисов, как Apple AirDrop (технология передачи файлов по Wi-Fi и Bluetooth).

14 августа 2019 года на конференции USENIX Security 2019 раскрыт ряд серьёзных уязвимостей в этом протоколе, которые допускают атаки MiTM с незаметным изменением передаваемых файлов, атаки типа «отказ в обслуживании» с прерыванием связи, а также утечки конфиденциальных данных, которые подрывают рандомизацию MAC-адресов, позволяя идентифицировать пользователей и осуществлять долгосрочное отслеживание (см. ниже).

В связи с этим немецкие разработчики Милан Стют и Александр Хейнрих разработали OpenDrop — свободную и более безопасную альтернативу проприетарной технологии от Apple.
Читать полностью »

В новом дайджесте мы обсуждаем подготовку приложений к iOS 13 и Android Q, работу протокола QUIC, отсутствие инновационных приложений в Google Play и в целом его работу, магазин приложений от Huawei и многое другое. Присоединяйтесь!

Дайджест интересных материалов для мобильного разработчика #311 (12 — 18 августа) - 1Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js