
Сергей Журавель | 22 ноября 2022 г.
Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект
Пользователь
Сергей Журавель | 22 ноября 2022 г.
Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект
Прошло много времени с тех пор, как язык программирования Swift был представлен на WWDC в 2014 году. С тех пор внедрение Swift сторонними разработчиками, безусловно, было массовым. Тем не менее, Objective-C всё ещё существует.
В этом посте мы предоставим несколько советов и приёмов для успешной разработки XCFrameworks (новые способы упаковки и поставки библиотек в различных вариантах). XCFrameworks сочетают Swift и Objective-C таким образом, чтобы совместимость языков не ставила под угрозу публичные API-интерфейсы фреймворка и не влияла на них.
Новый протокол Transferable
пришел на замену классу NSItemProvider
в iOS 16+, macOS 13+ (Ventura и новее), watchOS 9.0+ и tvOS 16+. Познакомиться с некоторыми аспектами применения протокола Transferable можно в постах Протокол Transferable меняет правила игры для Drag & Drop в SwiftUI и Протокол Transferable в SwiftUI — передача альтернативного контента с помощью ProxyRepresentation.
Проблема в том, что при использовании нового протокола Transferable
и нового View
модификатора .dropDestination (for: action: isTargeted:);
его параметр for
не принимает несколько ТИПов "сбрасываемых" объектов одновременно, как это делает выше приведенный View
модификатор .onDrop (of: [.plainText, .url, .image] ...).
С помощью перечисления enum
DropItem
, куда мы включили все возможные объекты (текст String
, URL
-адрес, изображение в виде двоичного файла Data
), нам удалось в SwiftUI
с помощью нового протокола Transferable
обеспечить перетаскивание и "сброс" (Drag & Drop) в один и тот же контейнер (например,ZStack
) различных ТИПов объектов.
Всем привет! Меня зовут Анатолий Калмыков, и я отвечаю за качество создаваемых решений в «Ростелеком ИТ». Сегодня я расскажу вам про WireMock – это одновременно и утилита, и библиотека на Java для создания HTTP заглушек над веб-сервисами. Он создает HTTP-сервер, к которому мы могли бы подключиться, как к реальному веб-сервису.
Статья получилась длинной, поэтому в первой части я расскажу, что такое WireMock и в каких случаях его необходимо использовать, как его разворачивать и настраивать, как правильно сопоставлять запросы с заглушками и как использовать журналирование. Сегодня речь пойдет исключительно о WireMock в амплуа утилиты и standalone http-сервер, который можно настроить как душе угодно, не зная языков программирования.
По крайней мере в последнее десятилетие, количество приложений, которым требуется доступ в интернет, неимоверно возросло. Причем для большинства проектов требуется только выполнение REST запросов и загрузка изображений, с созданием preview. В связи с чем, необходим своего рода менеджер сетевых запросов для загрузки данных из сети. Далее будет представлен NetworkManager, с помощью которого выполняются REST запросы, а также загружаются файлы, в том числе и изображения.
Всем привет, на связи Никита и Технократия! В прошлой статье мы уже обсудили проблемы текущего состояния concurrency в Swift. Давайте двигаться дальше и сегодня мы начнем свое знакомство с необходимой базой для async/await в Swift 5.5
Будем создавать свои спиннеры (аналоги UIActivityIndicator). Сначала разберем на простом примере, суть и подход, а затем попытаемся усложнить и получить реально веселые и крутые примеры!
Доброго времени суток! В данной серии статей вы узнаете подходы, которые помогут Вам писать более красивый React код, а также познакомитесь с способами сделать части кода более универсальными.
Всего в данной серии 3 статьи:
Лучшие подходы и решения для уменьшения кода на React. Часть 1
Лучшие подходы и решения для уменьшения кода на React. Часть 2
Лучшие подходы и решения для уменьшения кода на React. Часть 3
Привет, Хабр! Меня зовут Евгений Симигин, я занимаюсь внедрением DevOps-практик в Центре компетенций по разработке облачных и интернет-решений МТС Digital. А еще я – куратор практикумов docker и kubernetes на платформе rebrainme.com.
Практика показывает, что далеко не все инженеры знают о том, как шифровать секреты в своих репозиториях. Поэтому расскажу об инструментах helm-secrets, sops и vals, которые помогают быстро и просто решить эту задачу. Надеюсь, что после выхода моей статьи закоммиченных паролей в репах станет меньше :).
Данный гайд будет посвящен тому, как направить уведомления из системы сбора логов GrayLog в discord, сохраняя при этом удобную форму и полное содержание сообщений.
Первое с чем вы сталкиваетесь при написании мобильного приложения, это переходы с одного экрана на другой и обратно (в случае простого приложения), а так же многоуровневые переходы и моментальный возврат на первый экран (back to root view). Всё это мы разберём на примерах в данной статье, ну а для начала немного углубимся в теорию.
Что такое NavigationView?
Представьте, что перед вами коробка (NavigationView) в которой много мячиков (View) и эти мячики могут соприкасаться друг с другом (переход с View на View) только в рамках этой коробки.
Но есть так же и случаи, когда внутри коробки, помимо шариков, есть ещё одна коробка поменьше, которая содержит другие маленькие шарики (история про .sheet и .fullScreenCover - модальные окна). Это так же разберём ниже в статье.
Мониторинг нужен всем: и серверам крупных технологических компаний и домашним Raspberry PI. Мониторинг позволяет узнать, когда сервер выходит из строя, когда заканчивается дисковое пространство и даже когда подходит время апгрейда.
В этой статье рассмотрим настройку базового мониторинга с помощью Prometheus, Node Exporter и Grafana.
Добрый день! Я — Иваев Зафар, iOS разработчик в компании Usetech. В этой статье мы узнаем как фреймворк Combine помогает нам разрабатывать функционал приложения с помощью встроенных функций — операторов. В этой статье, мы покроем следующие типы операторов:
1. Последовательные операторы
2. Объединяющие операторы
И ман по линковке swift и Си библиотек и история одной проблемы - два в одном - чуть не дотягивает до кофе от нескафе!
В публикации мы рассмотрим альтернативу NavigationView т.к. он переодически выкобенивается и отказывается работать надлежащим образом.
Альтернатива кастомная, не использует UIKit, подача материала простая (насколько смог упростить), каждый момент постарался разобрать максимально подробно.
Соответственно, будут пройдены все этапы от определения необходимых типов до конечной реализации с примерами использования и пояснениями.
Привет Хабр!
В этой статье я хочу раскрыть механику создания онлайн сессии и подключения к ней. Все выполнено в с использованием Online Subsystem для возможного расширения вашей игры в контексте Steam, Origin, Play Station Store и т.д
HTTP
запросов — это один из самых важных навыков, которые необходимо получить при разработке iOS
приложений. В более ранних версиях Swift
(до версии 5) вне зависимости от того, формировали ли вы эти запросы «с нуля» или с использование известного фреймворка Alamofire, вы в конечном итоге получали сложный и запутанный код с callback
типа completionHandler: @escaping(Result<T, APIError>) -> Void
.Swift 5
нового фреймворка функционального реактивного программирования Combine
в сочетании с уже существующими URLSession
и Codable
предоставляет вам все необходимые инструменты для самостоятельного написания очень компактного кода для выборки данных из интернета.Combine
мы будем создавать «издателей» Publisher
для выборки данных из интернета, на которые в дальнейшем сможем легко «подписаться» и использовать при проектировании UI
как с помощью UIKit
, так и с помощью SwiftUI
.SwiftUI
это выглядит более лаконично и более эффектно, так как действие «издателей» Publisher
не ограничивается просто выборкой данных, а простирается дальше, вплоть до управления пользовательским интерфейсом (UI
). Дело в том, что в SwiftUI
разделение данных и View
осуществляется с помощью ObservableObject
классов с @Published
свойствами, изменения которых SwiftUI
АВТОМАТИЧЕСКИ отслеживает и полностью «перерисовывает» свои View
. ObservableObject
классы можно очень просто заложить определенную бизнес-логику приложения, если некоторые из этих @Published
свойств являются результатом синхронных и/ или асинхронных преобразований других @Published
свойств, которые можно напрямую менять такими «активными» элементами пользовательского интерфейса (UI
) как текстовые поля TextField
, Picker
, Stepper
, Toggle
и т.д. Привет, Хабр! Меня зовут Никитин Алексей, я iOS разработчик в компании 65apps. Хорошо было бы порассуждать о Dragon and Dangerous, но нет. Речь пойдет о перемещении объектов. Перетаскивание как внутри одного приложения, так и между разными — с точки зрения пользователя вещь обыденная. Но под капотом механизма D'n'D в современных приложениях могут скрываться разные варианты решения. О них и поговорим.