#appledeveloper #ios
Как я оплатил подписку Apple Developer
Для начала решил почитать про опыт других людей, потому что раньше слышал про разные сложности.
Оказалось, есть много проблем, связанных с оплатой подписки, и я пытался выделить самые частые проблемы, с которыми сталкивались остальные.
В итоге решил поискать способы, которые точно работают, и начал с того, что я успешно оплачиваю подписку на
Выяснил, что есть 2 рабочих способа оплатить подписку в РФ: с номеров билайн/мтс. Но есть нюансы, о которых рассказал в платном канале в полной версии истории:
- базовая подписка
- продвинутая подписка
- сеньорская подписка
Как я оплатил подписку Apple Developer
Для начала решил почитать про опыт других людей, потому что раньше слышал про разные сложности.
Оказалось, есть много проблем, связанных с оплатой подписки, и я пытался выделить самые частые проблемы, с которыми сталкивались остальные.
В итоге решил поискать способы, которые точно работают, и начал с того, что я успешно оплачиваю подписку на
iCloud - скорее всего похожий способ будет и для подписки разработчика.Выяснил, что есть 2 рабочих способа оплатить подписку в РФ: с номеров билайн/мтс. Но есть нюансы, о которых рассказал в платном канале в полной версии истории:
- базовая подписка
- продвинутая подписка
- сеньорская подписка
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
👍3
#ios #swift #concurrency #preconcurrency
Вот этот код из документации приводит к предупреждению и ошибке:
Для исправления достаточно добавить
Вот так одним действием можно избавиться сразу и от предупреждения, и от ошибки 😎
Вот этот код из документации приводит к предупреждению и ошибке:
import NotificationCenter
Task {
let center = UNUserNotificationCenter.current()
let settings = await center.notificationSettings()
}
Для исправления достаточно добавить
@preconcurrency перед импортом:
@preconcurrency import NotificationCenter
// ...
Вот так одним действием можно избавиться сразу и от предупреждения, и от ошибки 😎
🔥5❤1
#interview #hr
Рекрутеры придумали новый способ перехитрить удаленщиков: приглашают на
Называют это привлекательным вариантом 😂
Рекрутеры придумали новый способ перехитрить удаленщиков: приглашают на
мягкий гибрид, где можно 4 дня работать из дома, а 1 день - в офисе вместе с командой.Называют это привлекательным вариантом 😂
😁13
Насколько хорошо владеешь терминалом?)
Anonymous Poll
7%
Что это?
3%
Знаю, что такое есть, но не пользуюсь
39%
Иногда пользуюсь, но по мелочам (например, знаю команду cd)
34%
Часто пользуюсь, хорошо разбираюсь в разных командах
1%
Я мастер терминала 80 уровня, сейчас всех научу
16%
Легко нахожу нужные команды с помощью нейросети
#git #terminal #hint #gitignore
Бывает, в гит запушили файл, которого там не должно быть, а потом добавили его в
Чтобы файл корректно удалился из гита с учетом новых правил игнора, достаточно выполнить эти две команды в терминале в папке с проектом:
Пояснение:
- первая команда говорит гиту перестать отслеживать все файлы в проекте, но не удалять их с диска
- вторая команда снова добавляет все файлы и изменения в список для включения в следующий коммит, но теперь уже с учётом
- остается только сделать коммит/пуш с изменениями 👌
Для экспертов по гиту:
Знаю, что можно проделать операции только с нужным файлом, а не со всеми сразу, но мне удобнее так, и вдруг кому-то тоже 😉
Бывает, в гит запушили файл, которого там не должно быть, а потом добавили его в
.gitignore. Но файл уже находится в гите, и его нужно оттуда удалить.Чтобы файл корректно удалился из гита с учетом новых правил игнора, достаточно выполнить эти две команды в терминале в папке с проектом:
git rm -rf --cached .
git add .
Пояснение:
- первая команда говорит гиту перестать отслеживать все файлы в проекте, но не удалять их с диска
- вторая команда снова добавляет все файлы и изменения в список для включения в следующий коммит, но теперь уже с учётом
.gitignore (то есть файлы, которые вы исключили, не попадут в список)- остается только сделать коммит/пуш с изменениями 👌
Для экспертов по гиту:
Знаю, что можно проделать операции только с нужным файлом, а не со всеми сразу, но мне удобнее так, и вдруг кому-то тоже 😉
❤5🔥2
#ios #appstoreconnect
Интересное наблюдение про публикацию приложений
1. Вчера отправил на проверку два пет-проекта с разных аккаунтов разработчика с разницей в 3 часа
2. Сегодня оба приложения одновременно приложения перешли в статус "Проверка"
3. Проверка завершилась в том же порядке, в котором я отправлял приложения, но с разницей не в 3 часа, а в 14 минут
Интересное наблюдение про публикацию приложений
1. Вчера отправил на проверку два пет-проекта с разных аккаунтов разработчика с разницей в 3 часа
2. Сегодня оба приложения одновременно приложения перешли в статус "Проверка"
3. Проверка завершилась в том же порядке, в котором я отправлял приложения, но с разницей не в 3 часа, а в 14 минут
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
#terminal #simulator #hint
По умолчанию нажатия на экране iOS-симулятора не отображаются, но это легко поправить командой в терминале:
После выполнения команды нужно перезагрузить симулятор и нажатия будут отображаться.
Важный нюанс: если включить запись экрана симулятора через кнопку
Нажатия будет видно только при записи экрана самого мака (видео можно обрезать, чтобы было похоже на запись через
По умолчанию нажатия на экране iOS-симулятора не отображаются, но это легко поправить командой в терминале:
defaults write com.apple.iphonesimulator ShowSingleTouches 1
После выполнения команды нужно перезагрузить симулятор и нажатия будут отображаться.
Важный нюанс: если включить запись экрана симулятора через кнопку
Record Screen в самом симуляторе, то в получившейся записи не будут видны эти нажатия.Нажатия будет видно только при записи экрана самого мака (видео можно обрезать, чтобы было похоже на запись через
Record Screen)🔥7❤2🤔1
#ios #appstoreconnect
Самая быстрая проверка перед публикацией в
И это в выходной день 😯
Самая быстрая проверка перед публикацией в
AppStore за более чем 30 релизов - меньше часа с момента отправки на проверку до аппрува 🚀И это в выходной день 😯
🔥5
👍4🔥1
#ios #appstoreconnect
Обычно после статуса "Одобрено" идет "Готово к распространению".
Ошибка аппстора или им так понравилась сборка, что одобрили дважды? 😅
Обычно после статуса "Одобрено" идет "Готово к распространению".
Ошибка аппстора или им так понравилась сборка, что одобрили дважды? 😅
😁2👍1
#terminal #git #hint
Бывает, что после выполнения задачи ветку удаляют в репозитории, а локально она все еще висит. И когда таких веток набирается много, можно в них запутаться 😅
Чтобы удалить разом все такие ветки, нужно перейти в терминале в папку с проектом и выполнить команду:
Объяснение:
•
•
• Для каждой ветки проверяется, существует ли она на сервере (
• Если ветка отсутствует на сервере, она удаляется принудительно (
Перед выполнением команды нужно убедиться, что вы переключились на ветку, которую не хотите удалять (например,
Бывает, что после выполнения задачи ветку удаляют в репозитории, а локально она все еще висит. И когда таких веток набирается много, можно в них запутаться 😅
Чтобы удалить разом все такие ветки, нужно перейти в терминале в папку с проектом и выполнить команду:
git branch | grep -v "^\*" | while read branch; do
if ! git show-ref --verify --quiet refs/remotes/origin/$branch; then
git branch -D $branch
fi
done
Объяснение:
•
git branch выводит список всех локальных веток.•
grep -v "^\*" исключает текущую активную ветку (чтобы не удалять её).• Для каждой ветки проверяется, существует ли она на сервере (
refs/remotes/origin/branch).• Если ветка отсутствует на сервере, она удаляется принудительно (
git branch -D), что удалит ветку даже если в ней есть несмерженные изменения.Перед выполнением команды нужно убедиться, что вы переключились на ветку, которую не хотите удалять (например,
main или master).👌5❤1
#ios #swift #swiftui #binding #bug
Как сломать
Результат:
Как сломать
Xcode 16.3, чтобы в логах не было нормального описания ошибки:
import SwiftUI
struct BreakSwiftExample: View {
@State private var isOn = false
private var isOnBinding: Binding<Bool> {
.init(
get: { isOn },
set: changeToggle // не собирается
// set: { isOn = $0 } // собирается
)
}
var body: some View {
Toggle("Демо-тоггл", isOn: isOnBinding)
}
private func changeToggle(_ value: Bool) {
isOn = value
}
}
Результат:
Command SwiftCompile failed with a nonzero exit code❤2👍2🔥1