Делюсь интересными находками/лайфхаками в процессе разработки под iOS/Android, и возможно ты найдешь что-то полезное для себя!
GitHub: https://github.com/easydev991
Post #250
569
EA @easy_dev991
Showing posts older than #251 · Back to latest
Xcode Cloud для РФ и я не мог больше обновлять приложение на аккаунте владельца сайта workout.su. fastlane).SwiftUI 🤓onAppear добавляем смену состояний.
Text с одинаковой структурой:
private struct UserInfo: Identifiable {
let id = UUID()
let label: String
let value: String
}
label: .system(size: 20, weight: .bold)value: .system(size: 16, weight: .regular)markdown в тексте.
let items: [UserInfo] = [
.init(label: "Почта", value: "test@example.com"),
.init(label: "Телефон", value: "+79123456789"),
.init(
label: "Адрес",
value: "117513, г. Москва, ул. Профсоюзная, д. 129, корп. 3, кв. 117, подъезд 5, этаж 8"
)
]
easy_dev991 Сервис ничего не хранит, не возвращает и не изменяет. У него есть единственный async throws метод, который принимает в себя модель для отправки запроса. Вопрос с моего собеса: сделаем сервис структурой или final-классом?
fastlane, и выключил воркфлоу в Xcode Cloud, потому что:fastlane) занимает меньше минуты, а в облаке это растягивается на 5 минутfastlane
[18:40:04]: Driving the lane 'ios upload_screenshots' 🚀
...
[18:40:09]: Starting with the upload of screenshots...
[18:40:11]: Deleted 'ru APP_IPAD_PRO_3GEN_129' - (0.814763 secs)
[18:40:11]: Deleted 'en-US APP_IPHONE_67' - (0.814563 secs)
[18:40:11]: Deleted 'ru APP_IPHONE_67' - (0.837923 secs)
[18:40:11]: Deleted 'en-US APP_IPAD_PRO_3GEN_129' - (0.915516 secs)
[18:40:12]: Number of screenshots not deleted: 0
[18:40:12]: Successfully deleted all screenshots
...
[18:40:17]: Uploaded './fastlane/screenshots/ru/iPhone 15 Pro Max-1-[18:40:21]: Uploaded './fastlane/screenshots/ru/iPhone 15 Pro Max-3-sortByDate.png'... (3.672329 secs)
[✔] Waiting for all the screenshots to finish being processed...
[18:40:28]: Successfully uploaded all screenshots
[✔] Sorting screenshots uploaded...
[18:40:29]: Successfully uploaded screenshots to App Store Connect
appstoreconnect для сохранения нужного порядка отображения скриншотов приходится загружать картинки по одной в желаемом порядке🙈fastlane так не может - нужно делать скриншоты на других девайсах, подробнее написал в ридми.
[16:44:44]: 🚫 Invalid screenshots were detected! Here are the reasons:
[16:44:44]: 🚫 Error: ./fastlane/screenshots/en-US/iPad Pro 13-inch (M4)-1-demoList.png - Invalid screen size (Actual size is 2064x2752. See the specifications to fix https://help.apple.com/app-store-connect/#/devd274dd925)
...
[16:44:44]: 🚫 Error: ./fastlane/screenshots/ru/iPhone 16 Pro Max-3-sortByDate.png - Invalid screen size (Actual size is 1320x2868. See the specifications to fix https://help.apple.com/app-store-connect/#/devd274dd925)
fastlane не может их опубликовать 🤔fastlane нужно явно указать идентификатор команды в поле itc_team_id, пример есть в Appfile - даже если вы не знаете идентификатор, то при первом запуске команды для публикации скриншотов fastlane сам предложит выбрать команду, там и можно скопировать идентификатор и поставить в Appfile.fastlane делает много всего в команде upload_to_app_store, и лучше сразу выключить лишнее, например, публикацию бинарного файла приложения, запуск precheck перед отправкой и т.д., более подробно про все эти настройки можно почитать в официальной документации к fastlane.overwrite_screenshots на true, чтобы после загрузки новых скриншотов не приходилось вручную удалять старые.

accentColor синий, т.е. дефолтный, а справа - черный (такой и должен быть).accentColor в assets, но вот фикс этой проблемы:
WindowGroup {
RootScreen()
.tint(.accent) // <- исправляет accentColor в тестах
}
accentColor, и только в режиме UI-тестов нужен фикс.easy_dev991 #ios #swift #swiftui #maps #geocoding #hint На прошлой неделе заметил, что релиз 3.10 приложения с площадками стал сильно греть телефон, и даже в статистике аккумулятора спустя всего 10 минут использования мое приложение было первым в списке по потреблению…
NetworkMonitorActor, хотя можно было использовать стандартный AsyncIterator 🙈SwiftUI-обертки, то напишите явную проверку в методе updateUIView, чтобы обновление карты выполнялось только тогда, когда это 100% нужно - я для этого сделал флаг shouldUpdateRegion и передаю его в карту, а в методе updateUIView вызываю замыкание при обновлении карты, чтобы снять флаг