Код Воробья для iOS разработчиков
11.2K subscribers
381 photos
96 videos
2 files
303 links
Пишу для iOS разработчиков про Xcode, разработку на Swift и SwiftUI.
Реклама: sparrowcode.io/ru/ads
Автор: @ivanvorobei

РКН: bit.ly/sparrowcode
Download Telegram
Код Воробья для iOS разработчиков
В App Store Connect обновили процесс ревью приложений Новые функции касаются только Ивентов (будут доступны в App Store с 27 октября). В панели добавили вкладку App Review. Сейчас переход на обновлённую систему по-желанию. До конца года все аккаунты переведут…
С 25 Января аккаунты всех разработчиков переведут на новую систему ревью.

Для отправки жмем новую кнопку Add for Review. Добавили соответсвуйщий статус приложения Ready for Review.
Можно прикреплять ивенты и оформления страницы в сторе.

В остальном новый процесс обновили только визуально, концепция выгрузил-заполнил-отправил осталась. Чтобы сейчас перейти на новый процесс ревью, пройдите по ссылке.
👍12😱3
Media is too big
VIEW IN TELEGRAM
SPAlert повторяет алерт из приложений музыки и почты. Есть готовые пресеты .done и .error с анимированной иконкой.

Показать алерт в одну строку:
SPAlert.present(title: "Added to Library", preset: .done)

Можно подставить кастомные иконки. Есть спинер. Поддерживает SwiftUI.

#Библиотеки
20🔥12👍5
В App Store Connect теперь можно добавлять уникальный код для офера. Оффер будет доступен по ссылке и через системный экран активации в App Store.

Количество активации ограничено (максиум 25000). Если нужно больше - создайте новый код. Опционально доступен срок годности кода.
🔥11👍5
Как устроен онбординг в App Store

Контроллер назвали OnboardingViewController. Не оборачивали в навигейшн. Основной вью выступает не коллекция, а UIScrollView.

Заголовок “What’s New…” поместили в контейнер, хотя внутри него только лейбл. Ячейки это UIView, а тайтл-описание находятся в стеке.

Тулбар обычная вью с фоном UIVisualEffectView. Текст с кнопкой "See how your data..." это UITextView.
Иконка, текст и кнопки в тулбаре поместили в вертикальный стек. Ненормально большой отсуп снизу тулбара задан фикс значением от layoutMargins.bottom + 89.

#ViewHierarchy
👍32🔥152
Сделал библиотеку для работы с SFSymbols.

Выбираете символ (например, plus) и стиль plus.circle. Без стиля отрисуется дефолтное начертание. Для всех символов работает автокомплит.

Если символ доступен только с iOS 15, а вы используете его в iOS 14, компилятор предупредит.

#Библиотеки
🔥49👍15🎉5
Приложения в App Store можно делать доступными только по ссылке

Приложение не будет отображаться в поиске, категориях и рекомендациях. Такие приложения проходят полноценную модерацию и апрув. 
Эпл не ограничивает пользователей, которые могут скачать приложение - предлагается делать авторизацию и комбинировать ее с доступностью по ссылке.
👍18🔥13
В Xcode 13.3 Beta завезли ивертированную проверку доступности.

Так же добавили удобный синтаксис для enum в схеме if case .value, SPM поддерживает плагины и можно не указывать ключ в словаре - компилятор определит тип автоматически.

Много исправлений подсветки, jump to definition и индексации.
🔥43👍54🎉3
Как устроен системный калькулятор

Приложение написано на сценах. Root-контроллер называется DisplayViewController. Лейбл с введенными цифрами обернули в контейнер DisplayView и добавили жесты LongPress, Swipe и Tap.

Клавиатуру сделали обычный вью и назвали CalculatorKeypadView. Кнопки сделаны как UIButton. Все кнопки - объекты одного класса, даже измененный 0. Контейнер лейаутится через AutoLayout, а вот сетку с кнопками расставили с помощью фреймов.

#ViewHierarchy
🔥53👍20😱43🎉1
Как добавить кастомную SwiftUI-вью в библиотеку Xcode. Туториал написал Никита. Я рад, что авторов становится больше.

Чтобы оптимизировать работу над туториалами, я опубликовал их на GitHub. Теперь каждый может добавить свой туториал, сделать перевод или исправить опечатку. Открывайте PR, после апрува изменения на сайте появятся автоматически.
🔥19👍73🎉2
Платежи вне App Store для дейтинг приложений в Нидерландах будут с комиссией 27%. Появились подробности.

Сделали через разрешение StoreKit External Purchase Link Entitlement. Нельзя комбинировать со встроенными покупками. Интерфейс платежа должен быть нативным, веб-вью нельзя. Заголовок со скриншота добавлять обязательно 🤦‍♂️

Разработчик подает отчёт ежемесячно, Apple выставляет счёт на комиссию.

27% и комиссия платежной системы сумарно дают комиссию в 30%. Apple поступила логично - от своего заработка за размещение в их магазине отняли комиссю банка. Но манипулятивный заголовок про безопасность выглядит дёшево.
😱11👍8🔥5
Сегодня утром разработчики из Беларуси получили сообщение о деактивации аккаунтов.

Приложения пока остаются в App Store, но создать новое приложение и версию нельзя. Статус некоторых приложений изменился на Pending Agreement.

В панели статус соглашения изменился на Restricted. Похожая ситуация уже была в РФ и Крыму.

За обновлениями ситуации можно следить здесь.
😱35🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Ваш покорный слуга дал комментарий по блокировке аккаунтов в Беларуси для РБК @rbc_news.

Ситуация с аккуантами разрешилась - приложения вернули в стор, позиции и рейтинги восстановили. Эпл принесла извинения.
🔥35👍13😱1🎉1
С iOS 13 завезли удобную асинхронность с async/await. Никита написал туториал, где разобрал Task, actor и их взаимодействие.

С новыми инструментами код удобнее читать и поддерживать. В конце туториала напишите тузлу для получения позиции приложения в App Store.

https://sparrowcode.io/ru/tutorials/async-await
👍25🔥115
Как устроено приложение Wallet

Сделали на сценах, а лейаут на фреймах. Рут контроллер называется PKPassGroupsViewController. Главная вью UIStackView, в неё поместили: заголовок Wallet, группу карточек, группу бонусных карт и футер.

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

Чтобы управлять пространством сверху для тапа - эпл сделала переиспользуемый класс. Каждую карточку поместили в ещё один саб-контейнер с названием WLEasyToHitCustomView (переводится легко нажать). Возможно, связали контейнеры в родителе или через делегаты.

#ViewHierarchy
🔥35👍9😱8