- Ejemplo practico de una aplicacón de chat
El proyecto contiene:
- SplashScreen (androidx)
- Arquitectura MVVM
- CleanCode
- Fragments
- Navigation Component
- FirebaseAuth(phone)
- Firebase Firestore
- Firebase Storage
- Dagger
- ViewModel
- Mock
- Robolectric
- Clona el repo
git clone https://github.com/srodevs/ChatApp
- Sincroniza 'ChatApp' a un proyecto en 'Firebase Console'
- Habilita 'Authentication(phone)', 'Cloud Firestore', 'Storage' en la consola de Firebase
- Asegurate de tener el archivo 'google-services.json' en (Android vista project):
- ChatApp/app/google-services.json
- Al codigo de telefono para auth 'opt', este codigo esta limitado por los servicion de google
- Agregar telefono y codigo para pruebas, desde la consola en:
- Firebase Console -> Authentication -> Metodos de acceso -> Números de teléfono para la prueba ( opcional)
- Agregar telefono y codigo para pruebas, desde la consola en:
- Para realizar pruebas puedes hacer un 'hardcode' en los archivos
- .../data/AuthFirebaseService.kt/
fun loginPhone(){ //comentar o descomentar de acuerdo el uso firebaseAuth.firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber("+52 9999999922", "222222") }
- .../ui/login/Login2Fragment
fun onCreate(){ //debido a que el numero se obtiene de los args ponemos el mismo aqui para asegurar el codigo de validación txtNumber = args.number //numero intruducido txtNumber = "+52 9999999922" //numero existente de prueba }
- .../ui/login/Login2ViewModel
fun loginPhone(){ val callback = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(p0: PhoneAuthCredential) { //en el callback descomentamos de acuerdo al caso onVerificationCodeComplete()//de prueba para hacer la validacion val res = authFirebaseService.completeRegisterCredential(p0)....// para comprobar codigos enviado y recibido }... }
- ../data/AuthFirebaseService.kt
fun getCurrentUid(){ //debido a que validamos si existe un usuario ponemos el 'uuid' de los numero en la lista de Auth de firebase return firebaseAuth.uid //registro return "cfv..." //registro existente de prueba }
- .../data/AuthFirebaseService.kt/
