Costruire un'app di social networking con Flutter e Back4App
Creare un'app di social networking può essere un compito complesso, ma con Flutter e Back4App, puoi semplificare il processo di sviluppo. Questo tutorial ti guiderà nella creazione di un'app di social networking completa che include autenticazione degli utenti, gestione dei profili, feed di notizie, connessioni tra amici, messaggistica e notifiche.
Alla fine di questo tutorial, avrai un'app di social networking funzionale con le seguenti caratteristiche:
- Autenticazione Utente: Processi di registrazione e accesso sicuri.
- Profili Utente: Profili modificabili con informazioni sugli utenti.
- Feed di Notizie: Visualizzazione dei post degli amici e dell'utente.
- Connessioni tra Amici: Possibilità di inviare e accettare richieste di amicizia.
- Messaggistica: Chat in tempo reale tra gli utenti.
- Notifiche: Notifiche push per richieste di amicizia, messaggi e interazioni con i post.
Per seguire questo tutorial, avrai bisogno di:
- Flutter SDK installato sul tuo computer. Segui la guida ufficiale all'installazione di Flutter per il tuo sistema operativo.
- Conoscenze di base di Flutter e Dart. Se sei nuovo a Flutter, rivedi la documentazione di Flutter per familiarizzare con le basi.
- Un IDE o editor di testo come Visual Studio Code o Android Studio.
- Parse Server SDK per Flutter aggiunto al tuo progetto. Scopri come configurarlo seguendo la Guida al SDK Flutter di Back4App.
Apri il tuo terminale e esegui:
Naviga nella directory del progetto:
Apri pubspec.yaml e aggiungi le seguenti dipendenze:
Esegui flutter pub get per installare i pacchetti.
Nota: Stiamo usando:
- parse_server_sdk_flutter per l'integrazione con Back4App.
- provider per la gestione dello stato.
- image_picker per selezionare immagini del profilo e dei post.
- cached_network_image per un caricamento efficiente delle immagini.
- firebase_messaging per le notifiche push.
- uuid per generare ID unici.
- Clicca su "Crea nuova App".
- Inserisci un nome per la tua applicazione, ad esempio, "SocialApp", e clicca "Crea".
Dovremo creare diverse classi in Back4App:
- Utente: Classe integrata per l'autenticazione degli utenti.
- Profilo: Memorizza le informazioni del profilo utente.
- Post: Memorizza i post degli utenti.
- RichiestaAmicizia: Gestisce le richieste di amicizia tra gli utenti.
- Messaggio: Memorizza i messaggi tra gli utenti.
- Naviga nella "Database" sezione.
- Clicca su "Crea una classe".
- Nella finestra modale:
- Seleziona "Personalizzato".
- Inserisci "Profilo" come nome della classe.
- Clicca "Crea classe".
Aggiungi le seguenti colonne:
- utente: Digita Puntatore<_Utente>
- nomeUtente: Digita Stringa
- nomeCompleto: Digita Stringa
- bio: Digita Stringa
- immagineProfilo: Digita File
Crea un "Post" classe con le seguenti colonne:
- utente: Tipo Pointer<_User>
- contenuto: Tipo String
- immagine: Tipo File
- createdAt: Tipo Date
Crea un "FriendRequest" classe con le seguenti colonne:
- daUtente: Tipo Pointer<_User>
- aUtente: Tipo Pointer<_User>
- stato: Tipo String (Valori: "in attesa", "accettato", "rifiutato")
Crea un "Message" classe con le seguenti colonne:
- daUtente: Tipo Pointer<_User>
- aUtente: Tipo Pointer<_User>
- contenuto: Tipo String
- createdAt: Tipo Date
- Naviga a Impostazioni App > Sicurezza e Chiavi.
- Annota il tuo ID Applicazione e Chiave Client.
Apri lib/main.dart e modificalo come segue:
- Sostituisci 'YOUR_APPLICATION_ID' e 'YOUR_CLIENT_KEY' con le tue credenziali Back4App.
- Stiamo usando ChangeNotifierProvider per gestire lo stato di autenticazione.
Crea una nuova directory chiamata services sotto lib e aggiungi un file chiamato auth_service.dart:
Crea una directory chiamata screens sotto lib e aggiungi login_screen.dart e signup_screen.dart.
Aggiungi un file chiamato profile_service.dart sotto lib/services/:
Aggiungi un file chiamato profile.dart sotto lib/models/:
Aggiungi un file chiamato profile_screen.dart sotto lib/screens/:
Aggiungi un file chiamato post_service.dart sotto lib/services/:
Aggiungi un file chiamato post.dart sotto lib/models/:
Modifica home_screen.dart sotto lib/screens/:
In questo passaggio, implementeremo le connessioni tra amici tra gli utenti. Gli utenti possono inviare richieste di amicizia, accettarle o rifiutarle e visualizzare la loro lista di amici. Modificheremo i modelli di dati, creeremo servizi e aggiorneremo l'interfaccia utente per supportare questa funzionalità.
Abbiamo già creato la FriendRequest classe in Back4App con le seguenti colonne:
- fromUser: Puntatore a _User
- toUser: Puntatore a _User
- status: Stringa (Valori: "in attesa", "accettato", "rifiutato")
Inoltre, dobbiamo tenere traccia dell'elenco degli amici di un utente. Possiamo farlo aggiungendo una friends relazione nella classe _User.
- In Back4App, vai alla classe User.
- Clicca sul pulsante "+" per aggiungere una nuova colonna.
- Nomina la colonna "friends" e imposta il tipo su Relation <_User>.
Crea un file chiamato friend_service.dart sotto lib/services/:
Crea un file chiamato search_users_screen.dart sotto lib/screens/:
Crea un file chiamato friend_requests_screen.dart sotto lib/screens/:
In home_screen.dart, aggiungi navigazione alle schermate di ricerca utenti e richieste di amicizia:
Modifica il getPosts metodo in post_service.dart per recuperare i post dall'utente e dai suoi amici.
In questo passaggio, aggiungeremo la messaggistica in tempo reale tra gli utenti utilizzando le Live Queries.
- Nel tuo cruscotto dell'app Back4App, vai a Impostazioni App > Impostazioni Server.
- Sotto URL del Server, annota il tuo URL del server (ad es., https://YOUR_APP_NAME.back4app.io).
- Le Live Queries sono abilitate per impostazione predefinita su Back4App.
Il parse_server_sdk_flutter pacchetto include il supporto per le Live Query.
Crea un file chiamato message_service.dart sotto lib/services/:
Aggiungi un file chiamato message.dart sotto lib/models/:
Aggiungi un file chiamato chat_screen.dart sotto lib/screens/:
Puoi avviare la chat dalla lista amici o dalla schermata di ricerca utenti.
Nella lista amici, quando si visualizzano gli amici, aggiungi un pulsante per avviare una chat:
Implementare le notifiche push implica configurare Firebase Cloud Messaging (FCM) e integrarlo con Back4App.
- Aggiungi un'app Android e/o iOS al tuo progetto.
- Per Android, hai bisogno del nome del pacchetto (applicationId).
- Per iOS, hai bisogno del Bundle Identifier.
- Per Android: Scarica google-services.json e posizionalo in android/app/.
- Per iOS: Scarica GoogleService-Info.plist e aggiungilo al tuo progetto Xcode sotto Runner.
Modifica main.dart:
Crea un file chiamato push_notification_service.dart sotto lib/services/:
In main.dart, dopo aver inizializzato Parse, inizializza il PushNotificationService:
Puoi inviare notifiche push utilizzando il Cloud Code o direttamente dal tuo server.
Quando un utente invia una richiesta di amicizia, puoi inviare una notifica push al destinatario.
In friend_service.dart, modifica il sendFriendRequest metodo:
Nota: Assicurati di aver associato l'installazione con l'utente.
Quando un utente accede, associa la sua installazione con il suo account utente.
In auth_service.dart, dopo un accesso riuscito:
Nota: Le notifiche push richiedono una configurazione aggiuntiva sia sul lato client che su quello server. È necessario gestire diversi scenari, come le notifiche in background e i permessi degli utenti, che vanno oltre l'ambito di questo tutorial.
Congratulazioni! Hai costruito le basi di un'app di social networking utilizzando Flutter e Back4App. Questa app include autenticazione degli utenti, gestione del profilo e una funzionalità di feed di notizie. Sebbene l'implementazione di connessioni complete tra amici, messaggistica e notifiche vada oltre l'ambito di questo tutorial, ora hai la struttura necessaria per continuare ad espandere la tua app.
- Connessioni tra Amici: Implementa le funzionalità di richiesta di amicizia.
- Messaggistica: Aggiungi funzionalità di chat in tempo reale utilizzando Live Queries.
- Notifiche: Integra notifiche push per il coinvolgimento degli utenti.
- Miglioramenti UI: Migliora l'interfaccia utente e l'esperienza utente.
- Sicurezza: Assicurati della sicurezza dei dati e della privacy impostando ACL appropriate in Back4App.
Buon Codice!