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:ObservableObjectbridging KMP to SwiftUI (async/await,@Publishedstate).
- 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.plisttoiOSApp. - Enable Email/Password Auth & configure Firestore rules.
- Build:
pod installin theiosAppdirectory.- Open
.xcworkspacein Xcode and run.