Sto cercando di trovare un modo per integrare l'accesso di Google e Facebook per un'applicazione Android utilizzando l'architettura pulita.
La mia applicazione ha 3 moduli Android Studio:
- presentation : contiene il layer Interface Interface di Clean Architecture (Presenters), insieme a tutta la mia UI (Activity, Fragment, Custom Views) (parte del livello Framework e Driver)
- dominio : questo è il layer Use Case di Clean Architecture. Contiene i modelli di business, i casi d'uso e le interfacce del repository
- dati : contiene tutte le classi Driver e Framework, le librerie (retrofit, database, ecc.) e le implementazioni del repository
Vorrei isolare gli SDK specifici di accesso nel mio livello dati (che è un modulo separato in Android Studio).
Il problema che ho per questo particolare caso d'uso (login di Google per esempio) è che l'SDK deve parlare direttamente al mio livello Attività ( presentazione ). Una volta creato un oggetto specifico, devo chiamare startActivityForResult da un'attività, e ricevo una richiamata nel metodo onActivityResult della mia attività di avvio, contenente le informazioni di accesso.
Queste 2 cose hanno l'obbligo di:
- o mantengono le dipendenze dell'SDK di Google / Facebook nel livello della presentazione . MA questo viola il principio dell'architettura pulita, vorrei mantenere queste dipendenze nel mio livello dati
- o aggiungi una chiamata che passerà attraverso tutti i miei livelli (presentazione, dominio e dati) per restituire le informazioni di accesso dal metodo onActivityResult . MA Ciò significa che modificherei il mio contratto di dominio a causa di un particolare SDK di accesso
Nessuna di queste sembra OK. Conosci un modo corretto per gestire questo caso d'uso?