Skip to content

Tomson01560/xcodeMessenger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

MessagerApp

Opis projektu

MessageApp to natywna aplikacja na system iOS stworzona przy użyciu frameworka SwiftUI. Służy do wymiany wiadomości tekstowych w czasie rzeczywistym między użytkownikami. Projekt posiada pełną integrację z usługami Firebase, zapewniając bezpieczną autoryzację, przechowywanie danych oraz ich synchronizację na żywo.

Funkcjonalności

  • Rejestracja i logowanie użytkowników z walidacją danych.
  • Czat tekstowy w czasie rzeczywistym z podziałem na wiadomości wysłane i odebrane.
  • Lista aktywnych rozmów wyświetlająca ostatnią wiadomość oraz zdjęcie rozmówcy.
  • Wskaźnik nieprzeczytanych wiadomości dla poszczególnych konwersacji.
  • Możliwość edycji profilu oraz zmiany zdjęcia profilowego (integracja z systemową galerią iOS).
  • Przechowywanie zdjęć profilowych w bazie danych jako tekst w formacie Base64 (optymalizacja eliminująca potrzebę korzystania z płatnych planów Firebase Storage).
  • Edycja lokalnej nazwy konwersacji widocznej na liście czatów.
  • Usuwanie czatów wraz z całą historią wiadomości (bezpieczne usuwanie masowe przy użyciu WriteBatch).
  • Odświeżanie listy rozmów i pobieranie najnowszych danych profilowych znajomych za pomocą gestu "Pull to Refresh".

Jak to działa

Aplikacja opiera się na architekturze MVVM (Model-View-ViewModel), co pozwala na wyraźne oddzielenie logiki biznesowej od warstwy wizualnej.

Gdy użytkownik tworzy nowe konto, jego dane uwierzytelniające są zapisywane w usłudze Firebase Authentication, a jednocześnie aplikacja tworzy odpowiedni dokument w kolekcji użytkowników w bazie Firestore. Główny widok aplikacji nasłuchuje zmian w kolekcji czatów. Jeśli zalogowany użytkownik jest uczestnikiem danej rozmowy, pojawia się ona na jego liście.

Każda konwersacja posiada własną podkolekcję z wiadomościami. Podczas wysyłania nowej wiadomości, aplikacja zapisuje ją do podkolekcji oraz aktualizuje główny dokument czatu. Status czatu u odbiorcy zmienia się na "nieprzeczytany", co skutkuje wyświetleniem powiadomienia wizualnego na jego liście. Wszystkie operacje, w tym aktualizacja zdjęć profilowych kodowanych do formatu Base64, są natychmiast odzwierciedlane w interfejsie użytkownika dzięki wykorzystaniu mechanizmu Snapshot Listeners dostarczanego przez SDK Firebase.

Wykorzystane technologie

  • Swift: Główny język programowania aplikacji.
  • SwiftUI: Framework do budowy interfejsu użytkownika w sposób deklaratywny i reaktywny.
  • UIKit: Wykorzystany jako wsparcie dla komponentów niedostępnych natywnie w SwiftUI (UIImagePickerController do wyboru zdjęć z galerii oraz UIBezierPath do zaawansowanego rysowania asymetrycznych dymków czatu).
  • Firebase Authentication: Do zarządzania sesją użytkownika, logowania oraz rejestracji.
  • Firebase Firestore: Baza danych NoSQL wykorzystana do przechowywania informacji o użytkownikach, listach konwersacji oraz historii czatu (wykorzystanie grupowych operacji zapisu i usuwania - Batches).
  • Swift Package Manager (SPM): Narzędzie użyte do zarządzania zależnościami zewnętrznymi (pakiety Firebase).

Konfiguracja i uruchomienie

  1. Sklonuj repozytorium projektu na swój komputer lokalny.
  2. Otwórz projekt w środowisku Xcode.
  3. Utwórz nowy projekt w konsoli Firebase w przeglądarce.
  4. Zarejestruj nową aplikację iOS w panelu Firebase i pobierz wygenerowany plik GoogleService-Info.plist.
  5. Przeciągnij plik GoogleService-Info.plist do głównego katalogu projektu w strukturze plików Xcode.
  6. W konsoli Firebase włącz usługę Authentication (metoda Sign-in: Email/Password) oraz utwórz bazę danych Cloud Firestore.
  7. Zbuduj i uruchom aplikację na symulatorze lub fizycznym urządzeniu (skrót Cmd + B, następnie Cmd + R).

About

xcode messenger using firebase

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages