
Swift *
Открытый объектно-ориентированный язык
Сколько стоит Review в AppStore
Если вы следите за конкурентами, или, не дай бог, вкладываете силы в ещё одно приложение-гороскопы, то сталкивались с нарушениями конкурентами гидлайнов. Я расскажу то, что знаю.
Digest MBLT DEV :: выпуск №200

Digest MBLT DEV — еженедельная подборка новостей из мира iOS-разработки. Каждую пятницу доставляем прямо в почту полезные материалы с комментариями от топовых iOS-разработчиков. Вот уже 200 выпусков = 200 недель.
Первый номер дайджеста выпущен командой e-Legion в 2015 году. С тех пор появились новые рубрики и авторы, да и количество подписчиков растёт каждую неделю. Если вы ещё не читаете наш iOS-дайджест, то мы искренне не понимаем, почему. Пора это исправить.
Квантовые шашки — make checkers great again

Мы добавили правила на основе квантовой теории в шашки, чтобы сделать их менее предсказуемыми и сломать стандартные тактики игры. Это не просто игра, это интерактивное представление квантовой теории с такими эффектами как суперпозиция и квантовая запутанность.
Как написать отличную ленту новостей ВКонтакте за 20 часов

Swift Heroes 2018. Как это было

Организаторы конференции — компании Synesthesia и SYX.
Были представлены доклады от довольно известных в iOS-комьюнити спикеров. Среди них автор библиотеки Sourcery, несколько авторов курсов на «Raywenderlich», создатель «Hacking with Swift» и другие. Конференция проходила в 2 параллельных потока, доклады разделялись на кейноуты и воркшопы.
Обновление библиотеки SPPermission и хейтер
мог подумать ты, мой дорогой друг. Не нужно тратить время. Это просто вечернее чтиво с долей несмешных юморесок. Текст будет о библиотеке RequestPermission и о её загадочном авторе.
«Server-side Swift недооценён»: интервью с Полом Хадсоном

Глядя на признанных IT-экспертов — с их подробными книгами, уверенными докладами и стройными блог-постами — можно ощутить их какими-то особенными существами, которые знают в своей области вообще всё, никогда не волнуются перед выходом на сцену и родились с клавиатурой в руках. Но стоит поговорить с таким человеком, как обнаруживаешь, что при своих огромных знаниях он вполне себе живой.
Пол Хадсон известен как эксперт в Swift и iOS. Сайт Hacking with Swift, целый ряд книг, доклады на конференциях вроде dotSwift и SwiftConf, твиттер-аккаунт с 17 000 фолловеров, YouTube-канал — это всё он. И мы с ним поговорили: от того, с чего он начинал, до советов, которые он может дать начинающим спикерам/блогерам.
Drag & Drop в ваших iOS приложениях

Механизм
Drag & Drop
, работающий в iOS 11
и iOS 12
, — это способ графического асинхронного копирования или перемещения данных как внутри одного приложения, так и между разными приложениями. Хотя этой технологии лет 30, она стала в буквальном смысле «прорывной» технологией на iOS
благодаря тому, что при перетаскивании чего-либо в iOS
, multitouch
позволяет свободно взаимодействовать с остальной частью системы и набирать данные для сброса из разных приложений.Apple Wallet. Что это такое и как интегрировать в него свою карту
Принято считать, что Wallet – не самый популярный сервис в СНГ. Но уже во втором проекте подряд заказчик ставит задачу «Сделать интеграцию с Wallet». Поэтому я решил написать эту статью, чтобы рассказать о сервисе в целом и показать, как интегрировать в него свой продукт.
Что такое Wallet? Он позволяет держать в телефоне различного вида карты (билеты, скидочные карты и т.п.), облегчая жизнь пользователям продукта. Более того, есть возможность актуализировать информацию о карте посредством push-уведомлений, но это тема для отдельной статьи. Но если у вас есть карта/билет/абонемент, которые можно интегрировать в телефон, то для этого есть решение! Как это сделать – читайте ниже.
Примеры конфигурации UIViewController-ов используя RouteComposer
В предыдущей статье я рассказал о подходе который мы используем для осуществления композиции и навигации между вью контроллерами в нескольких приложениях над которыми я работаю, который, в итоге, вылился в отдельную библиотеку RouteComposer. Я получил весомое количество приятных откликов на предыдущую статью и несколько дельных советов, что подтолкнуло меня написать еще одну, которая бы чуть больше разъяснила способы конфигурации библиотеки. Под катом я постараюсь разобрать несколько самых частых конфигурации.
Как избавить проект от лишних килограммов

Всем привет! Меня зовут Илья, я — iOS разработчик в Tinkoff.ru. В этой статье я хочу рассказать о том, как уменьшить дублирование кода в presentation слое при помощи протоколов.
Codable для API запросов и как навести в коде порядок
Начиная со Swift 4 нам доступен новый протокол Codable, который позволяет легко кодировать/декодировать модели. В моих проектах очень много кода для API вызовов, и за последний год я проделал большую работу по оптимизации этого огромного массива кода во что-то очень легкое, лаконичное и простое путем убивания повторяющегося кода и использования Codable даже для multipart запросов и url query параметров. Так получилось несколько отличных на мой взгляд классов для отправки запросов и парсинга ответов от сервера. А также удобная структура файлов представляющая из себя контроллеры для каждой группы запросов, которая мне привилась при использовании Vapor 3 на бэкенде. Несколько дней назад я выделил все свои наработки в отдельную библиотеку и назвал ее CodyFire. О ней мне и хотелось бы рассказать в этой статье.
Ближайшие события
Тестирование презентера с использованием PromiseKit
Паттерн MVP в разработке мобильных приложений — это довольно простой способ разгрузить ViewController и вынести часть логики в презентер. Презентер начинает обрастать логикой, которая легко поддается тестированию.
Пусть есть экран MelodyListViewController
показывающий список мелодий. У него есть презентер MelodyListPresenter
, который говорит ViewController что показывать. Данные презентер будет брать из сервиса MelodyService
. MelodyService
это обертка над базой данных и api клиентом, загружающая мелодии. Если сеть доступна, сервис берет данные с api, иначе с базы данных. Типы ошибок загрузки представлены в enum ServiceRequestError
.
А в ваших iOS приложениях IBOutlet уже private?

Вы наверняка использовали Storyboard или XIB для верстки интерфейсов? Верстать из кода это прекрасно, но иногда намного проще понять как устроен какой-то из компонентов интерфейса, увидев его, а не прочитав. В этой записи я хочу обсудить необходимость использования для IBOutlet модификатора private.
Разработчиков, для которых инкапсуляция IBOutlet является очевидной, тут вряд ли что-то удивит, зато может быть интересен опрос в конце статьи.
Very Special Event: как мы смотрели презентацию Apple и что об этом думаем
От презентации Apple, которая должна была пройти 12 сентября, ничего особенного не ждали: три новых модели iPhone и новую версию Apple Watch — об этих новинках знали заранее. Тем не менее, мы в Авито не могли пропустить это событие. Когда за пару дней до Very Special Event мы поняли, что образовалась компания из тех, кто не хочет смотреть трансляцию в одиночку, то решили позвать в гости наших друзей — iOS-разработчиков из других компаний. Посмотреть мероприятие вместе, обсудить новинки (и то, как они повлияют на разработку приложений под iOS), поесть шаурму, выпить смузи, вот это всё.
Рассказываю под катом, как мы смотрели Apple Special Event, и что думают мои коллеги о новых устройствах и фичах компании из Купертино.

RxSwift часть 1
Доброго времени суток, хабровчане. В этом цикле статей, я бы хотел рассказать о реактивном программировании, а именно о фреймворке
RxSwift. На Хабре и в сети были статьи по RxSwift, но, на мой взгляд, они слишком трудны для начинающих. Поэтому, если вы начинаете постигать реактивное программирование в iOS, то прошу под кат.
Контроль над ресурсами. Настраиваем SwiftGen
Наверное, в каждом большом iOS-проекте — долгожителе можно наткнуться на иконки, которые нигде не используются, или обращения к ключам локализации, которые уже давно не существуют. Чаще всего такие ситуации возникают из-за невнимательности, а лучшее лекарство от невнимательности — автоматизация.
В iOS-команде HeadHunter мы большое внимание уделяем автоматизации рутинных задач, с которыми может столкнуться разработчик. Этой статьей мы хотим начать цикл рассказов о тех инструментах и подходах, которые упрощают нашу повседневную работу.
Какое-то время назад нам удалось взять ресурсы приложения под контроль с помощью утилиты SwiftGen. О том, как ее настроить, как с ней жить и как эта утилита помогает переложить проверку актуальности ресурсов на плечи компилятора, и пойдет речь под катом.
Теория Universal Links

Введение
WWDC15 – Apple анонсирует переход на Universal Links. Их смысл непомерно прост – отправлять пользователя в приложение, если он переходит на страницу сайта, которую приложение поддерживает. Наиболее часто это применяется в письмах, которые отправляются после регистрации для подтверждения электронной почты. Таким образом, Universal Links избавляет пользователя от необходимости самостоятельно возвращаться в приложение – а это хорошо как для пользовательского опыта, так и для статистики.
Компонентная архитектура UI в iOS-приложении

Привет, Хабр!
Меня зовут Валера, и уже два года я разрабатываю iOS-приложение в составе команды Badoo. Один из наших приоритетов — легкосопровождаемый код. Из-за большого количества новых фич, еженедельно попадающих к нам в руки, нам нужно в первую очередь думать об архитектуре приложения, иначе будет крайне сложно добавить новую фичу в продукт, не ломая уже существующие. Очевидно, что это также относится и к реализации пользовательского интерфейса (UI) независимо от того, делается это с помощью кода, Xcode (XIB) или смешанного подхода. В этой статье я опишу некоторые методики реализации UI, которые позволяют нам упрощать разработку пользовательского интерфейса, делая её гибкой и удобной для тестирования. Также есть версия этой статьи на английском.
Прежде чем начать…
Я буду рассматривать методики реализации пользовательского интерфейса на примере приложения, написанного на Swift. Приложение по нажатию на кнопку показывает список друзей.
Оно состоит из трёх частей:
- Компоненты — кастомные UI-компоненты, то есть код, относящийся только к пользовательскому интерфейсу.
- Демоприложение — демонстрационные view models и другие сущности пользовательского интерфейса, имеющие только UI-зависимости.
- Реальное приложение — view models и другие сущности, которые могут содержать специфические зависимости и логику.
Почему такое разделение? На этот вопрос я отвечу ниже, а пока ознакомьтесь с пользовательским интерфейсом нашего приложения:
Вклад авторов
WildGreyPlus 232.0miden16 170.0illusionofchaos 140.0MaxRokatansky 135.0kuradnaths 131.0nsurl-dev 121.0yarmolchuk 119.8niklnd 112.0freetonik 112.0