A sample iOS app using SwiftUI and a Kotlin Multiplatform (KMP) library for Firebase integration (Auth, Firestore, Analytics).
- Shared Logic: Firebase interactions (auth, data, analytics) in Kotlin.
- Native UI: SwiftUI for the iOS frontend.
- Testable: Mock Firebase implementations for KMP and SwiftUI Previews.
kotlin-library
: KMP module for Firebase logic and CocoaPods dependencies.- Interfaces:
FirebaseKMP
,MockFirebaseKMP
. - Implementations:
FirebaseKMPImpl
(real),MockFirebaseKMPImpl
(mock). - Models: Shared Kotlin data classes (e.g.,
FirebaseUser
).
- Interfaces:
iOSApp
: SwiftUI application.- Consumes
kotlin-library
. FirebaseService.swift
:ObservableObject
bridging KMP to SwiftUI (async/await
,@Published
state).
- Consumes
- Email/Password Authentication (Sign-up, Sign-in, Sign-out).
- Firestore for user profile storage and retrieval.
- Firebase Analytics for event logging.
- SwiftUI Previews with a mocked KMP backend.
- Prerequisites: Xcode, Intellij IDEA, CocoaPods.
- Firebase Project:
- Create a Firebase project.
- Register an iOS app and add
GoogleService-Info.plist
toiOSApp
. - Enable Email/Password Auth & configure Firestore rules.
- Build:
pod install
in theiosApp
directory.- Open
.xcworkspace
in Xcode and run.