Kotlin/Swift (iOS) Туда и Обратно
36 subscribers
130 photos
21 videos
9 files
88 links
Канал - журнал, рассказывающий об опыте изучения Swift & iOS backend-разработчиком на Java & Kotlin
Download Telegram
Продолжаю осваивать Firebase 👩‍💻

Добавил интеграцию с Crashlytics - это сервис, который показывает, когда и почему твоё приложение падает у пользователей. Он собирает все вылеты в одном месте и помогает быстро понять, что сломалось, чтобы починить.

🟥 Документация - на уровне!
Достаточно пройтись по инструкции: https://firebase.google.com/docs/crashlytics/get-started?platform=ios

Отдельно понравилась настройка Xcode для загрузки Apple Debug Symbols (dSYM), не сам процесс, а идея. После этого отчёты об ошибках становятся человекочитаемыми: вместо адресов памяти видно имена методов.

Главной мотивацией подключения Crashlytics был баг, который я обнаружил после релиза. Снова ною про тесты, они очень нужны, но писать их сложно - мешает интеграция с Firebase.
Как делать UI тесты и “мокать” Firebase - до сих пор загадка для меня 🤔💭
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Зарегал домен 🌐

У меня появился мой первый домен, и этого первенца зовут grocemelier.app

Создавая это приложение, я хочу пройти путь наиболее похожий на создание продукта. Независимо от результата, уверен, что получу уйму полезных навыков, и познакомлюсь с тем, что на работе встретить почти никогда не удаётся.

✍️ Регистрация не заняла много времени, напротив, это было одно из самых простых. Плати и получай 🤑

Но даже при регистрации домена мне удалось узнать что-то новое. В интерфейсе настройки обнаружил типы записей в DNS. Если я знал, что такое A, NS, то MX и CNAME стали для меня открытием. Разрабатывая backend очень редко приходится сталкиваться с этими вещами, а времени, свободного времени, всегда мало. Даже сказал бы - его нет!

✍️ Создание landing страницы порядком меня помучало (я потратил на это 5 часов)

Поскольку я уже повязан Firebase, то и тут я решил воспользоваться их продуктом Firebase Studio.

Firebase Studio по своей сути является генератором сайтов, приложений, ai решений. И да, это снова AI - Gemini.
Интерфейс представляет собой VS Code 👩‍💻 запущенный на виртуалке (поэтому доступ к терминалу имеется). Туда накинуты расширения, которые показывают Preview сайта, интегрируются с Gemini Agent, и отсюда же можно задеплоить приложение на Google Cloud инфраструктуру посредством Firebase Hosting.

Я создал несколько версий, но на текущий момент оставил только одну - самую простую. Сейчас я смогу собирать emails потенциальных пользователей для участия в Beta тестировании (для этого буду использовать TestFlight). Возможно стоит разместить сразу TestFlight кнопку, но так целостность страницы нарушается, я оставил это немного на попозже - пока буду инвайтить руками.

✍️ По пути применяю полученный опыт

В качестве базы использую Firebase Firestore. Есть функции для отправки нотификаций в телеграм. Firebase Studio умеет работать только с nextjs фреймворком (просил написать на Vue.js - отказался, сказав, что не такой умный), но другие языки/платформы так же поддерживаются.

В общем я получаю очень много интересного опыта и позитивных эмоций занимаясь этим проектом 🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Добавил кнопу логина через Google 🖥

Над этой темой пришлось попотеть.

🔴 Во первых, почему-то Google Sign-In не включен в Firebase SDK

В Firebase Console можно включить различные механизмы Authentication. Но по какой-то непонятной мне причине, https://github.com/google/GoogleSignIn-iOS нужно подключать отдельно.

🔴 Во вторых, документация расходится с практикой

Хорошо описано как добавить Firebase Auth. Есть примеры, и много сторонних статей. Но есть такой пример:

https://firebase.google.com/docs/auth/ios/google-signin


guard let clientID = FirebaseApp.app()?.options.clientID else {
fatalError("Firebase clientID not found. Ensure GoogleService-Info.plist is properly configured and added to the project.")
}
let config = GIDConfiguration(clientID: clientID)
GIDSignIn.sharedInstance.configuration = config


Который у меня не сработал.
Нашел, что я не единственный столкнулся с этой проблемой: https://github.com/firebase/firebase-ios-sdk/issues/15151

Помимо того, что в файле GoogleService-Info.plist CLIENT_ID, это же значение нужно прописать в Info.plist в поле GIDClientID

В документации https://firebase.google.com/docs/auth/ios/google-signin про это ни слова…

🔴 Ну и в третьих, это линковка аккаунтов (тут телеграм сходит с ума и рисует красный кружок 😁)

Если залогинился под одним провайдером, потом под другим, их можно слинковать как одни и те же. Но похоже только 2… Для большинства проектов это совсем не проблема. Но штука не очевидная 🥵 (а тут супер-эмодзи совсем перестали работать)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Ну что друзья, время порадоваться!

Наконец приложение выпущено, конечно, сырое, но уже получившее пару апдейтов:

https://apps.apple.com/de/app/grocemelier/id6745146245

Основная цель, по которой я заводил этот канал, в какой-то степени достигнута, и даже года не прошло 😅

Но это не конец пути, а скорее начало. В частности, это и начало обратного пути, к Kotlin.

За это время я узнал очень много, плюсом оно совпало с бумом AI, и от этого стало только увлекательнее.

Раздумываю сейчас над созданием версии для 👩‍💻 и заодно реализацией некоторых важных фич (трудоемких, но все же нужных), от которых приложение должно стать на 999,99% удобнее и полезнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1