Mobiele applicaties hebben een back-end-server nodig om taken uit te voeren zoals het verifiëren van gebruikers en het synchroniseren van gebruikersgegevens op meerdere apparaten. Het creëren van een dergelijke server vereist echter een vaardigheden die de meeste onafhankelijke app-ontwikkelaars missen. Gelukkig zijn er verschillende back-ends als serviceplatforms, vaak BaaS genoemd, die u vandaag kunt gebruiken. Google's Firebase is zo'n platform.
Firebase biedt essentiële services zoals analyses, crashrapportage, gebruikersverificatie en cloudberichten zonder kosten. De freemium-services omvatten een real-time NoSQL-database, bestandshosting en statische webhosting.
In deze zelfstudie laat ik u zien hoe u gebruikersauthenticatie, analyses en opslag van externe gegevens kunt toevoegen aan uw Android-app met behulp van Firebase.
Om mee te gaan, heb je nodig:
Firebase Analytics is een van de meest populaire analyse-oplossingen voor mobiele apps die momenteel beschikbaar zijn. Door het te gebruiken, kunt u precies begrijpen wie uw gebruikers zijn en hoe zij uw app gebruiken.
De nieuwste canary-builds van Android Studio hebben ingebouwde ondersteuning voor Firebase Analytics. Dat betekent dat u Firebase Analytics aan uw project kunt toevoegen zonder ooit Android Studio te hoeven verlaten.
Om Firebase Analytics te integreren met uw project, klikt u op Hulpmiddelen> Firebase. U krijgt het volgende te zien Assistent venster:
Klik op Analytics en dan Log een Analytics-evenement.
U moet nu uw Android Studio-project koppelen aan een Firebase-project. Klik daarom op de Maak verbinding met Firebase knop.
In het dialoogvenster dat verschijnt, kunt u al uw bestaande Firebase-projecten bekijken. Je kunt er een kiezen of een nieuw project maken. Voor nu, stel ik voor dat je de Maak een nieuw Firebase-project optie en geef een unieke naam aan het project.
Zodra u op de Maak verbinding met Firebase knop die in het dialoogvenster staat, zal Android Studio automatisch alle vereiste configuratiewijzigingen doorvoeren, zoals het genereren van een google-services.json bestand en uploaden van een SHA1-vingerafdruk.
U kunt nu op de Voeg Analytics toe aan uw app om de Firebase-plug-in en de Firebase Core-afhankelijkheid aan uw project toe te voegen. Android Studio laat u de exacte wijzigingen zien die worden aangebracht in de build.gradle bestanden.
druk op Wijzigingen accepteren om de configuratie te voltooien.
Nadat u Firebase Analytics voor uw app hebt geconfigureerd, hoeft u geen aanvullende code te schrijven als u tevreden bent met alleen de automatisch gegenereerde analyse-evenementen, zoals de gebruiker die uw app voor de eerste keer opent en deze gebruikt voor meer dan 10 seconden, een in-app-aankoop doen of de app verwijderen. Daarom kunt u uw app nu uitvoeren - op een emulator of een echt apparaat - en binnen de komende 24 uur kunt u analyselogboeken in de Firebase-console bekijken.
Als u het gedrag van uw gebruikers nauwkeuriger wilt analyseren, kunt u handmatig aangepaste Analytics-gebeurtenissen genereren met behulp van de LogEvent ()
methode van de FirebaseAnalytics
klasse. De methode verwacht twee parameters: een tekenreeks met de naam van de aangepaste gebeurtenis en een Bundel
met details over het evenement in de vorm van sleutel / waarde-paren.
Als u bijvoorbeeld een geroepen gebeurtenis wilt genereren my_custom_event elke keer dat een gebruiker op een specifieke knop klikt, moet u de volgende code toevoegen aan de klikhandler van de knop:
// Maak een instantie van FirebaseAnalytics FirebaseAnalytics fa = FirebaseAnalytics.getInstance (this); // Maak een bundel met informatie over // the analytics event Bundle eventDetails = new Bundle (); eventDetails.putString ("my_message", "Klikte op die speciale knop"); // Log de gebeurtenis fa.logEvent ("my_custom_event", eventDetails);
Over het algemeen zijn aangepaste gebeurtenissen niet te onderscheiden van de automatisch verzamelde gebeurtenissen in de Firebase-console.
Merk op dat gebeurtenisnamen hoofdlettergevoelig zijn. Daarom is het een goed idee om al uw evenementnamen als constante tekenreeksen te definiëren. U kunt ook voorgedefinieerde gebeurtenisnaamconstanten gebruiken die beschikbaar zijn in de FirebaseAnalytics.Event
klasse.
Gebruikersverificatie is tegenwoordig een belangrijke vereiste voor de meeste Android-apps. Door uw gebruikers veilig te kunnen verifiëren - en ze dus op unieke wijze te identificeren - kunt u hen een aangepaste ervaring bieden op basis van hun interesses en voorkeuren. U kunt er ook voor zorgen dat ze geen problemen hebben om toegang te krijgen tot hun privégegevens tijdens het gebruik van uw app vanaf meerdere apparaten.
Met Firebase Auth kunt u uw gebruikers verifiëren met behulp van verschillende aanmeldingsmechanismen. In deze zelfstudie laat ik u zien hoe u uw gebruikers toestaat in te loggen op uw app met hun e-mailadressen en wachtwoorden.
Als u Firebase Auth in uw Android Studio-project wilt gebruiken, moet u het volgende toevoegen compileren
afhankelijkheid van de app
module build.gradle het dossier.
compileer 'com.google.firebase: firebase-auth: 9.4.0'
Firebase staat standaard geen gebruikersverificatie toe. Daarom moet u wachtwoordgestuurde gebruikersauthenticatie handmatig inschakelen in de Firebase-console. Ga hiervoor naar Auth sectie en druk op de Inlogmethode instellen knop. U ziet nu een lijst met alle aanmeldingsaanbieders die beschikbaar zijn.
Kiezen Email Wachtwoord, schakel het in en druk op Opslaan.
Met op wachtwoord gebaseerde authenticatie moeten nieuwe gebruikers zich registreren door een uniek e-mailadres en een wachtwoord te verstrekken. Als u deze functionaliteit aan uw app wilt toevoegen, kunt u de createUserWithEmailAndPassword ()
methode van de FirebaseAuth
klasse. Zoals de naam doet vermoeden, verwacht de methode een e-mailadres en een wachtwoord als zijn argumenten.
Om het resultaat van de te bepalen createUserWithEmailAndPassword ()
methode, moet u een toevoegen OnCompleteListener
ernaar met behulp van de addOnCompleteListener ()
methode. In het volgende codefragment ziet u hoe u een nieuwe gebruiker registreert en geeft u ook aan of het registratieproces met succes is voltooid:
FirebaseAuth.getInstance () .createUserWithEmailAndPassword (emailAddress, password) .addOnCompleteListener (new OnCompleteListener() @Override public void onComplete (@NonNull Task taak) if (task.isSuccessful ()) // Gebruiker geregistreerd met succes);
Merk op dat het uw verantwoordelijkheid is om e-mailadressen te valideren en ervoor te zorgen dat de gebruikers sterke wachtwoorden gebruiken.
U kunt de e-mailadressen bekijken van alle succesvol geregistreerde gebruikers in de gebruikers tabblad van Firebase-consoles Auth sectie.
Na een succesvolle registratie wordt de gebruiker automatisch ingelogd. De gebruiker blijft ingelogd blijven, zelfs als uw app opnieuw wordt opgestart. Niettemin moet uw app code bevatten waarmee gebruikers zich handmatig kunnen aanmelden met behulp van het e-mailadres en wachtwoord dat zij hebben opgegeven tijdens het registratieproces.
Om een gebruiker handmatig te ondertekenen, moet u de. Gebruiken signInWithEmailAndPassword ()
methode van de FirebaseAuth
klasse. De methode verwacht een e-mailadres en wachtwoord als enige argumenten en geeft a Taak
voorwerp. Door een toe te voegen OnCompleteListener
erop kunt u controleren of het aanmelden met succes is voltooid.
Om te voorkomen dat u zich aanmeldt bij een gebruiker die al is ingelogd, moet u het signInWithEmailAndPassword ()
methode alleen als de huidige FirebaseUser
is nul
.
In het volgende codefragment ziet u hoe een gebruiker te ondertekenen in:
FirebaseAuth auth = FirebaseAuth.getInstance (); if (auth.getCurrentUser ()! = null) // Al aangemeld // nietsdoen else auth.signInWithEmailAndPassword (emailAddress, password) .addOnCompleteListener (new OnCompleteListener() @Override public void onComplete (@NonNull Task taak) if (task.isSuccessful ()) // Gebruiker met succes aangemeld);
Om een gebruiker te tekenen, kunt u eenvoudig de afmelden()
methode van de FirebaseAuth
klasse.
. FirebaseAuth.getInstance () signOut ();
Een van de krachtigste functies van het Firebase-platform is de real-time database, en dit is om een goede reden genoemd: alle schrijfbewerkingen die erop worden uitgevoerd, zijn direct beschikbaar voor alle clients die deze observeren. Met een dergelijke database kunt u applicaties maken waarmee gebruikers naadloos van het ene naar het andere apparaat kunnen overschakelen en meteen kunnen samenwerken met andere gebruikers.
Voordat u de real-time database gebruikt, moet u het volgende toevoegen compileren
afhankelijkheid van uw app
module build.gradle het dossier:
compileer 'com.google.firebase: firebase-database: 9.4.0'
U kunt de real-time database als een JSON-object beschouwen. Dat betekent dat u er sleutel / waarde-paren aan kunt toevoegen, waarbij de sleutels altijd strings zijn en de waarden ofwel primitives, arrays of andere JSON-objecten zijn.
Voordat u naar de real-time database schrijft, moet u er een verwijzing naar krijgen met behulp van de getInstance ()
methode van de FirebaseDatabase
klasse. U kunt dan een verwijzing naar elk pad in de database krijgen met behulp van de getReference ()
methode. Het pad kan een enkele sleutel bevatten of verschillende hiërarchisch bewerkte toetsen.
Als je eenmaal een hebt DatabaseReference
naar een pad, kunt u de waarde ervan instellen met behulp van de setValue ()
methode.
In het volgende codefragment ziet u hoe u een eenvoudig sleutel / waarde-paar toevoegt aan de database:
FirebaseDatabase db = FirebaseDatabase.getInstance (); DatabaseReference ref = db.getReference ("message"); // Key ref.setValue ("Dit is een testbericht"); // Waarde
Door naar de Database sectie van de Firebase-console kunt u alle gegevens bekijken die zich in de real-time database bevinden.
Als u een waarde uit de real-time database wilt lezen, moet u een asynchrone observator koppelen aan de bijbehorende sleutel of het bijbehorende pad. Om precies te zijn, moet je een ValueEventListener
naar een DatabaseReference
object met behulp van de addValueEventListener ()
methode.
De onDataChange ()
methode van de ValueEventListener
geeft je toegang tot een DataSnapshot
object, waarvan getValue ()
methode kan worden gebruikt om de laatste waarde van de sleutel op te halen.
Hier ziet u bijvoorbeeld hoe u de waarde kunt ophalen die we in de vorige stap hebben ingesteld:
FirebaseDatabase db = FirebaseDatabase.getInstance (); DatabaseReference ref = db.getReference ("message"); // Key // Attach listener ref.addValueEventListener (new ValueEventListener () @Override public void onDataChange (DataSnapshot dataSnapshot) // Laatste waarde ophalen String-bericht = dataSnapshot.getValue (String.class); @Overige openbare inhoud ongeldig maken ( DatabaseError-databaseError) // Foutafhandeling);
Merk op dat zodra een ValueEventListener
is toegevoegd, het is onDataChange ()
methode wordt geactiveerd elke keer dat de waarde die het waarneemt, verandert.
Het Firebase-platform maakt het gebruik van een back-end-server overbodig en stelt u in staat u te concentreren op het bouwen van betere apps. In deze zelfstudie hebt u geleerd hoe u deze kunt gebruiken om analyses, gebruikersverificatie en real-time cloudgegevensopslag toe te voegen aan uw Android-app.
Voor meer informatie over Firebase kunt u de officiële documentatie raadplegen. U kunt ook onze tutorial over het gebruik van Firebase-crashreports in Android bekijken: