👍2👎1
Forwarded from Android Broadcast (Кирилл Розов)
История Android от L до T
Как для мобильных разработчиков менялся Android с 2014 года и до сегодняшнего дня? Казалось бы, можно просто открыть официальное описание каждой версии и узнать. Но интереснее не просто читать сухие чейнджлоги, а вместе вспомнить все и из отдельных фактов сделать общие выводы.
В июне я выступил с докладом об этом на конференции Mobius, а теперь сделал текстовую расшифровку публикую его текстовую версию
#AndroidBroadcast #android
Как для мобильных разработчиков менялся Android с 2014 года и до сегодняшнего дня? Казалось бы, можно просто открыть официальное описание каждой версии и узнать. Но интереснее не просто читать сухие чейнджлоги, а вместе вспомнить все и из отдельных фактов сделать общие выводы.
В июне я выступил с докладом об этом на конференции Mobius, а теперь сделал текстовую расшифровку публикую его текстовую версию
#AndroidBroadcast #android
👍4👎2😢1
User-Defined в iOS проекте
Настройка User-Defined для того, чтобы использовать разный код/конфигурацию на проде и дебаге:
👉 Добавляем User-Defined значения. Пример на скринах
👉 А затем для удобства использования создаем класс со статическим значением, например:
#swift
Настройка User-Defined для того, чтобы использовать разный код/конфигурацию на проде и дебаге:
👉 Добавляем User-Defined значения. Пример на скринах
👉 А затем для удобства использования создаем класс со статическим значением, например:
class ApplicationConfig {
static var serverURL: URL? {
let urlString = Bundle.main.object(forInfoDictionaryKey: "serverURL") as? String ?? ""
return URL(string: urlString)
}
}
#swift
👍7👎1
Создаем виджеты для экрана блокировки на SwiftUI
Реализовать виджет для экрана блокировки несложно, поскольку его API использует тот же код, что и виджеты домашнего экрана. Нужно добавить обработку кейсов accessoryInline, accessoryCircular, accessoryCorner, accessoryRectangular для разных видов виджетов на iOS, WatchOS
#swiftUI #iOS16
Реализовать виджет для экрана блокировки несложно, поскольку его API использует тот же код, что и виджеты домашнего экрана. Нужно добавить обработку кейсов accessoryInline, accessoryCircular, accessoryCorner, accessoryRectangular для разных видов виджетов на iOS, WatchOS
#swiftUI #iOS16
🔥9👎1
Apple застолбила бренды для своих гарнитур смешанной реальности
Apple начала процесс регистрации брендов и товарных знаков: Reality One, Reality Pro, Reality Processor
#apple
Apple начала процесс регистрации брендов и товарных знаков: Reality One, Reality Pro, Reality Processor
#apple
🔥7👍1👎1
Handling multiple caches in App (4 мин)
Вариант имплементации кэширования для разных типов данных:
👉 Слой utils состоит из сущностей, которые реализуют протоколы для получения данных
👉 Assets Manager - посредник между слоем utils и хранилищами. Главной целью является сопоставление типа кэширования и хранилища
👉 На уровне Caching Layer располагаются все хранилища. Работа происходит только с сырыми данными абстрактно от типа
#architecture
Вариант имплементации кэширования для разных типов данных:
👉 Слой utils состоит из сущностей, которые реализуют протоколы для получения данных
👉 Assets Manager - посредник между слоем utils и хранилищами. Главной целью является сопоставление типа кэширования и хранилища
👉 На уровне Caching Layer располагаются все хранилища. Работа происходит только с сырыми данными абстрактно от типа
#architecture
👍2👎1🔥1
SwiftUI, How to create BlurEffect. Introducing 2 ways
Два способа создания эффекта blur в помощью SwiftUI:
👉 С помощью модификатора
👉 Через UIViewRepresentable, если нужно больше возможностей для кастомизации
#swiftUI
Два способа создания эффекта blur в помощью SwiftUI:
👉 С помощью модификатора
.blur
👉 Через UIViewRepresentable, если нужно больше возможностей для кастомизации
#swiftUI
👍4👎1
Готов ли Kotlin Multiplatform к проду на iOS?
Kotlin Multiplatform уже несколько лет широко используется в продакшен приложениях. Насколько готов Kotlin Multiplatform к проду на iOS? Несмотря на сложности с отладкой, отсутствие поддержки аргументов по умолчанию, исчерпывающих перечислений (enum'ов), Codable и некоторые другие проблемы, KMP можно разворачивать со следующими условиями:
👉 Используйте его с осторожностью: нет необходимости идти ва-банк с KMP. Можно попробовать обкатать на небольшом модуле
👉 Общие компоненты: скорее всего, ваша цель использования KMP состоит в том, чтобы обмениваться компонентами между платформами, поэтому начните с них
👉 Помните о версиях: JetBrains поддерживает сайт со стабильностью Kotlin Components, некоторые компоненты Kotlin/Native являются бета-версиями. Определите, достаточно ли стабильности KMP для вашей организации
#crossplatform
Kotlin Multiplatform уже несколько лет широко используется в продакшен приложениях. Насколько готов Kotlin Multiplatform к проду на iOS? Несмотря на сложности с отладкой, отсутствие поддержки аргументов по умолчанию, исчерпывающих перечислений (enum'ов), Codable и некоторые другие проблемы, KMP можно разворачивать со следующими условиями:
👉 Используйте его с осторожностью: нет необходимости идти ва-банк с KMP. Можно попробовать обкатать на небольшом модуле
👉 Общие компоненты: скорее всего, ваша цель использования KMP состоит в том, чтобы обмениваться компонентами между платформами, поэтому начните с них
👉 Помните о версиях: JetBrains поддерживает сайт со стабильностью Kotlin Components, некоторые компоненты Kotlin/Native являются бета-версиями. Определите, достаточно ли стабильности KMP для вашей организации
#crossplatform
👍7👎2
Документация Apple по Dynamic Island
Как добавить Live Activities в приложение:
👉 Создаем widget extension для приложения (WidgetKit, Creating a Widget Extension)
👉 Добавляем
👉 Добавляем структуру ActivityAttributes чтобы описать статический и динамический контент Live Activity
👉 Создаем ActivityConfiguration на основе ActivityAttributes
👉 Конфигурируем начало, обновление и конец Live Activity
Доступно с Xcode 14.1
#iOS16
Как добавить Live Activities в приложение:
👉 Создаем widget extension для приложения (WidgetKit, Creating a Widget Extension)
👉 Добавляем
Supports Live Activities: YES
в Info.plist👉 Добавляем структуру ActivityAttributes чтобы описать статический и динамический контент Live Activity
👉 Создаем ActivityConfiguration на основе ActivityAttributes
👉 Конфигурируем начало, обновление и конец Live Activity
Доступно с Xcode 14.1
#iOS16
🔥15👎1
AttributedString, a better way to handle attributed strings in iOS 15 (2 мин)
С iOS 15 на замену NSAttributedString приходит AttributedString. В скринах пример кода для цветной строки с подчеркиванием, выделение range и markdown
#swift
С iOS 15 на замену NSAttributedString приходит AttributedString. В скринах пример кода для цветной строки с подчеркиванием, выделение range и markdown
#swift
👏5👎1
Data flow in SwiftUI (4 мин)
На схеме случаи использования Binding, ObservableObject, StateObject, ObservedObject, EnvironmentObject
#swiftUI
На схеме случаи использования Binding, ObservableObject, StateObject, ObservedObject, EnvironmentObject
#swiftUI
👍5👎1🔥1