Обновить
8.06

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

Что нового в API StoreKit 2 и как он упростил интеграцию покупок в приложении

Время на прочтение8 мин
Количество просмотров7.9K

На недавно прошедшем WWDC 2021 представили новую версию StoreKit 2. Это фреймворк, который отвечает за осуществление покупок в iOS. Доля приложений со встроенными покупками и подписками постоянно растёт, и выпустив StoreKit 2, Apple заметно упростил интеграцию покупок в приложение. Сегодня мы рассмотрим работу с StoreKit 2 со стороны сервера, то есть с помощью App Store Server API.

Читать далее

Tuist: Xcode-проект на стероидах

Время на прочтение9 мин
Количество просмотров25K


Стандартное представление Xcode-проекта сложно назвать комфортным для командной работы. Даже в небольших проектах часто возникают merge-конфликты после изменения состава исходников в разных ветках.


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


Да, ограничения Xcode можно победить, но решением в основном является "винегрет" из сторонних инструментов, заправленный собственными Shell или Ruby скриптами, в которых мало кто разбирается.


Но есть куда более изящное и комплексное решение — Tuist. С ним мы и познакомимся в этой статье.

Читать дальше →

Паттерн Observer в Swift

Время на прочтение4 мин
Количество просмотров10K

Всем доброго времени суток. В этой статье речь пойдет о паттерне Observer. Все кто связан с iOS разработкой наверняка сталкивались с инструментами в основе работы которых лежит этот паттерн. Например NotificationCenter, KVO или великий и могучий RxSwift который настолько сейчас популярен. В этой статье я на простом примере разберу принцип работы данного паттерна.

Читать далее

Meet StoreKit 2

Время на прочтение12 мин
Количество просмотров7.6K

Всем привет, меня зовут Сурен, я SDK Engineer в qonversion.io

Мы - data платформа для приложений с подписками. Наши мобильные SDK предоставляют интерфейс для работы со StoreKit и Google Billing Client, принимают пуши, отображают экраны, построенные в визуальном конструкторе экранов и многое другое.

Сегодня хотел бы рассказать про StoreKit 2, который был представлен на WWDC 21.

На WWDC 21 Apple в очередной раз представила немало новинок. Одним из крутых обновлений является StoreKit 2. В последние годы встроенные покупки и подписки становятся основой большого количества приложений и приносят огромные деньги Apple и разработчикам. Так на WWDC 21 Apple поделились информацией, что за всё время существования AppStore они выплатили разработчикам 230 миллиардов долларов. Причём значительный рост произошел за последние несколько лет. Именно поэтому в последнее время и Apple, и Google делают такой упор на всём, что связано со встроенными покупками. На WWDC 20 был показан StoreKitTransactionManager с .storekit файлом, которые очень сильно упростили тестирование встроенных покупок. Кстати, ждать пришлось всего лишь с iOS 3 до iOS 14. Подробнее о новинках тестирования - тут.

Читать далее

О том, как мы научили машину определять пол человека по его почерку

Время на прочтение5 мин
Количество просмотров4.4K

Для начала хотелось бы упомянуть, что это далеко не первое исследование подобного рода. Начиная с 1960-х готов по настоящее время было разработанно множество программных комплексов и методик, позволяющие решать задачи идентификационного (кем именно была выполнена рукопись, представленная на исследование) и диагностического характера (дифференциации рукописей на мужское и женское, вычисление предполагаемого возраста исполнителя рукописи и т. д.). В качестве примера можно привести подобные программные комплексы: «Прогноз», «POL», «Тюльпан», «ДИА», «Прост», «Рабочее место эксперта-почерковеда» и так далее.

Однако не будем углубляться в историю…

Для того, чтобы приступить к решению столь нетривиальной задачи, необходимо познакомиться поближе с объектом исследования (самим почерком), с уже известными методиками его исследования и с историей применения кибернетических методов в данной области.

Для начала кратко разберем понятие почерк:

Почерк - это зафиксированная в рукописи система привычных движений, в основе которой лежит письменно двигательный навык.

В свою очередь, он имеет следующие основные свойства:

Читать далее

Apple убивает TeamCity, Bitrise, Appcenter, Fastlane, Firebase, Sentry и иже с ними. Краткий обзор Xcode Cloud

Время на прочтение3 мин
Количество просмотров16K

Заголовок конечно громковат, может не убивает, но уменьшит им доходы точно. Давайте кратко посмотрим что представила Apple на WWDC 2021, что такое Xcode Cloud?

Читать далее

Делаем OpenVPN клиент для iOS

Время на прочтение5 мин
Количество просмотров16K
Привет всем!
Давайте рассмотрим как создать собственное приложение, поддерживающее OpenVPN-протокол. Для тех, кто об этом слышит впервые ссылки на обзорные материалы, помимо Википедии, приведены ниже.

С чего начать?


Начнем с фреймворка OpenVPNAdapter — написан на Objective-C, ставится с помощью Pods, Carthage, SPM. Минимальная поддерживаемая версия ОС — 9.0.
После установки необходимо будет добавить Network Extensions для таргета основного приложения, в данном случае нам понадобится пока Packet tunnel опция.

image

Network Extension


Затем добавляем новый таргет — Network Extension.
Сгенерированный после этого класс PacketTunnelProvider приведем к следующему виду:
Читать дальше →

Тернистый путь внедрения Swift Package Manager. Доклад Яндекса

Время на прочтение25 мин
Количество просмотров11K
Доклад будет интересен iOS-разработчикам, которые хотят внедрить технологию Swift Package Manager (SPM) в существующий проект. Руководитель iOS-разработки Яндекс Go Вадим Белотицкий рассказал о причинах, по которым его команда решила внедрять SPM, и о решении возникших проблем, включая:

  • Проблемы с компиляцией
  • Сочетание Swift- и Objective-C-кода
  • Падения, связанные с некорректной линковкой проекта
  • Сочетание двух менеджеров зависимостей — CocoaPods и SPM
  • Проблемы сборки на CI (TeamCity)

Сам процесс внедрения рассмотрен поэтапно, начиная с примеров Apple и тестовых примеров к первым шагам по внедрению (созданию первого модуля с генерацией проекта) и вплоть до состояния приложения сейчас.

Читать конспект

Как Лёня с React на Swift переезжал

Время на прочтение7 мин
Количество просмотров10K
Всем привет! Меня зовут Лёня, я фронтенд-разработчик в компании KOTELOV и выпускник курса «Мидл фронтенд-разработчик» в Яндекс.Практикуме. Общаясь с коллегами, которые занимаются мобильной разработкой, я понял, что у них всё гораздо сложнее, чем в вебе. Я взял свой телефон в руки, посмотрел на известные приложения типа телеги или Яндекс.Музыки с точки зрения человека, который их пишет, и подумал: «Вау, как круто! Я тоже хочу так уметь!»

Тогда я принял твёрдое решение изучить iOS-разработку и написать собственное приложение. На выбор было два языка: Objective-C и Swift. К динозаврам моё отношение подозрительное, поэтому я принял решение набивать шишки обо что-то помягче и посвежее.

Этим постом я открываю цикл про то, как я переезжал с фронта на мобилку и с чем столкнулся по пути. Если вы тоже посматриваете в сторону мобилок, вам может пригодиться мой опыт.



Готовимся к переходу — изучаем SwiftUI


Два года назад Apple выпустила SwiftUI — новый фреймворк для своего языка. До этого разработчики писали на UI Kit, но это дело прошлого. Думаю, что на нём до сих пор пишут лишь потому, что сложно в один день переписать весь легаси-код на новый лад. Для себя я уже давно вынес правило: никогда не изучай старое, если есть новое. Но на всякий случай я изучил различия между старым UI Kit Storyboard и SwiftUI, а также мнения людей, которые в теме.
Читать дальше →

Обертки свойств в Swift с примерами кода

Время на прочтение9 мин
Количество просмотров11K

Property Wrappers (Обертки Свойств) в Swift позволяют извлекать общую логику в отдельный объект-обертку. С момента представления во время WWDC 2019 и появления в Xcode 11 со Swift 5 было много примеров, которыми поделились в сообществе. Это изящное дополнение к библиотеке Swift, позволяющее удалить много шаблонного кода, который, вероятно, все мы писали в своих проектах.

Историю об обертках свойств можно найти на форумах Swift для SE-0258. В то время как целесообразность их использования в основном говорит о том, что обертки свойств являются решением для @NSCopying свойств, есть общая закономерность, которая реализовывается ими, и вы, вероятно, скоро все узнаете.

Читать далее

Построение графиков в SwiftUI

Время на прочтение3 мин
Количество просмотров5K

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

Создание пакета для построения графиков с нуля было невозможным из-за ограничений по времени и бюджету, поэтому мне пришлось искать уже существующие решения.

Выбор пал на SwifUI-Charts, который предлагает действительно красиво выглядящие графики и простую интеграцию.

Читать далее

Фантомные типы в Swift

Время на прочтение3 мин
Количество просмотров4K

Не каждый язык со статической системой типов обладает такой строгой типобезопасностью, как Swift. Это стало возможным благодаря таким особенностям Swift, как фантомные типы (phantom types), расширения универсальных типов и перечисления со связанными типами. На этой неделе мы узнаем, как использовать фантомные типы для создания типобезопасных API.

Читать далее

Видео-стриминг на iOS по RTMP

Время на прочтение6 мин
Количество просмотров6.5K

Недавно получил интересную задачу в работу, сделать приложение для видео-стриминга, это для стартапа ShopStory (e-comm live streaming). Первую версию приложения реализовал используя Open Source библиотеку для стриминга по RTMP HaishinKit. А вторую версию на Larix SDK. В этой статье разберу какие проблемы возникали в процессе.

Читать далее

Ближайшие события

Пошаговый урок: как начать делать что угодно для Touch Bar

Время на прочтение4 мин
Количество просмотров5.2K

Я не Swift разработчик, и даже не objc. У меня просто был и есть Mac с навороченной вставкой в виде Touch Bar для которой захотелось сделать кастомизацию.

Эта статья покажет всем не iOS разработчикам как можно НАЧАТЬ создавать простые приложухи (развлекательного или полезного характера) для Touch Bar с самых первых этапов.

Притупим к делу:

Приступить к делу

Построители результатов в Swift: описание и примеры кода

Время на прочтение10 мин
Количество просмотров4.4K

Построители результатов (result builders) в Swift позволяют получать результирующее значение из последовательности компонентов — выставленных друг за другом «строительных блоков». Они появились в Swift 5.4 и доступны в Xcode 12.5 и более поздних версиях. Ранее эти средства были известны как function builders («построители функций»). Вам, вероятно, уже приходилось использовать их при создании стеков представлений в SwiftUI.

Должен признаться: поначалу я думал, что это некая узкоспециализированная возможность Swift, которую я никогда не стану применять для организации своего кода. Однако стоило мне в ней разобраться и написать небольшое решение для создания ограничений представления в UIKit, как я обнаружил, что раньше просто не понимал всю мощь построителей результатов.

Читать далее

Вас заметили! App Tracking Transparency (ATT) для iOS 14.5

Время на прочтение3 мин
Количество просмотров19K

Недавно вышла iOS 14.5, а чуть ранее Apple предупредила разработчиков, что начиная с этой версии ОС необходимо поддерживать фреймворк AppTrackingTransparency, который позволяет получить доступ к IDFA.

Читать далее

10 расширений Swift, которые мы используем на Livefront

Время на прочтение11 мин
Количество просмотров4.4K

Добавьте в Swift свою собственную изюминку

Давайте будем честными. Фреймворки Swift и Apple не обладают всей функциональностью, необходимой при создании лучшего программного обеспечения для устройств Apple. К счастью, Swift поддерживает расширения, чтобы мы могли добавлять недостающие части, необходимые для более удобной работы.

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

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

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

Стремясь к тому, чтобы содержание ниже было относительно кратким, я не включил в описание наши юнит-тесты.

Вы можете найти Xcode Playground, используемый в этой статье, на моей странице GitHub.

Вот только 10 из многих расширений, которые мы используем в Livefront.

Читать далее

Переход вашего приложения на модули пакетов Swift

Время на прочтение3 мин
Количество просмотров3.5K

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

Читать далее

AppCode 2021.1: улучшения поддержки Swift Package Manager и быстродействия, обновление плагина Kotlin/Native и другое

Время на прочтение2 мин
Количество просмотров2K

Всем привет! 

Все IDE от JetBrains уже обновились, мы же в AppCode немного задержались, проверяя очередные улучшения в кэшировании. Но вот и у нас вышел первый релиз в этом году — AppCode 2021.1! 

Читать дальше

Как мы создали фреймворк для построения графиков в iOS-приложении

Время на прочтение10 мин
Количество просмотров5.4K

Привет, я Сергей, iOS-разработчик в ЮKassa, занимаюсь ее мобильным приложением. Недавно в нем появился просмотр аналитики по счетам и платежам. И сегодня я расскажу, как мы реализовали эту возможность, а еще — зачем и как разработали собственный фреймворк для создания графиков.

Читать статью