Inleiding tot Firebase

We bevinden ons in een tijdperk van snelle prototyping. We kunnen goede ideeën krijgen, maar soms worden ze niet geïmplementeerd als ze te veel werk verzetten. Vaak is de back-end de beperkende factor - veel ideeën worden nooit geïmplementeerd vanwege gebrek aan kennis of tijd voor server-side codering.

Als een mobiele ontwikkelaar, kan het gebruik van een back-end as a service (BaaS) -platform u helpen uw ideeën snel uit te voeren.

Firebase heeft alle belangrijke functies die u nodig hebt voor snelle prototyping en het snel testen van uw ideeën. Met Firebase kunt u het maken van functies zoals authentificatie, database en objectopslag korter maken. Firebase biedt ook andere mogelijkheden die nuttig kunnen zijn voor het valideren van prototypen, zoals analyses, A / B-testen en pushmeldingen. 

Het beste van alles is dat Firebase gratis is voor kleine projecten!

Configureer een iOS-app om Firebase te gebruiken

Laten we een voorbeeld Xcode-project maken dat Firebase gebruikt. We zullen het een naam geven MyFirstFirebaseApp.

Maak een nieuw Xcode-project

Kies een Single View-app sjabloon voor uw project.

Nu het project is gemaakt, laten we beginnen met het configureren voor Firebase.

Maak een Podfile

CocoaPods is een afhankelijkheidsmanager voor Swift en Objective-C Cocoa-projecten. We moeten het in ons project initialiseren. Dit kan gedaan worden met de pod init commando.

$ cd your-project directory $ pod init

Voeg de Firebase-pods toe 

We willen de Firebase / Core pod voor ons project. Dit omvat de vereiste bibliotheken die nodig zijn om Firebase in gebruik te nemen. 

$ pod 'Firebase / Core'

Nu is dit hoe uw Podfile zal kijken:

Installeer de pods en open het project in Xcode

Na het opnemen van de pod details, laten we ze installeren met de pod installeren commando. Dan kunnen we het project in Xcode openen door de .xcworkspace het dossier.

$ pod install $ open uw-project.xcworkspace

Creëer en configureer uw Firebase-account

Maak een Firebase-account

Laten we nu instellen met een Firebase-account! Zoals we allemaal weten, is Firebase een Google-product, dus we kunnen een Firebase-consoleaccount maken met ons Gmail-account. 

Houd er echter rekening mee: Firebase is niet volledig gratis. We kunnen beginnen met een gratis versie voor de eerste prototyping, maar als u van plan bent om met Firebase in productie te gaan, moet u rekening houden met de prijsstructuur. 

Maak een nieuw project in de Firebase-console

Nu we met succes zijn ingelogd op ons Firebase-account, kunnen we een project maken. Klik op Voeg een project toe.

Nadat het project is gemaakt, kunnen de Firebase-database, gebruikersbeheer en Remote Config worden gedeeld met iOS, Android en internet.

Nadat het project is gemaakt, wordt u naar de Projectoverzicht scherm. Onder Begin, Klik op iOS om aan de slag te gaan met ons iOS-prototype.


Registreer de app voor iOS

Om onze app te registreren, moeten we een project-ID opgeven.

Klik nu Registreer app. U wordt gevraagd om een ​​te downloaden .plist bestand dat moet worden toegevoegd aan uw Xcode-project.

Deze GoogleService-Info.plist bevat basisinformatie zoals de klant-id, API-sleutel, database-URL en opslagbunker. Kijk en zie zodra je het hebt gedownload. U moet het vervolgens aan uw project toevoegen door het naar de onderstaande map in Xcode te slepen.

Voeg de initialisatiecode toe aan uw app

Nu kunt u de Firebase-initialisatiecode aan uw app toevoegen! Open AppDelegate, en importeer Firebase. Dan toevoegen FirebaseApp.configure () in didFinishLaunchingWithOptions. Uw code ziet er als volgt uit:

import UIKit import Firebase @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate var window: UIWindow? func application (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool FirebaseApp.configure () return true

Controleer of de Firebase in uw app werkt

De configuratie is eindelijk voltooid en u bent klaar om te testen of Firebase correct is geïnstalleerd in uw app. Wanneer u klikt volgende op de Voeg Firebase toe aan uw iOS-app pagina in de Firebase-console, ziet u dit:  

Laten we de app opschonen, bouwen en uitvoeren via Xcode - er mogen geen fouten zijn. U kunt ook enkele logboeken zien die gerelateerd zijn aan Firebase in uw console. Als alles goed werkt, laat de Firebase-console het weten.

Hoera! Nu hebben we Firebase voor onze app ingesteld. 

Firebase-gebruikersbeheer

Zoals eerder vermeld, kan Firebase worden gebruikt voor gebruikersbeheer, dus laten we onze app instellen voor verificatie en gebruikersbeheer. Laten we eerst naar het gedeelte Verificatie in het Firebase-dashboard gaan, zoals hieronder wordt weergegeven.

Klik op Inlogmethode instellen. Hier kunnen we een aantal mogelijkheden zien. U kunt er meerdere kiezen of als u liever niet inlogt, kunt u kiezen Anoniem

  • Email Wachtwoord: Hiermee kunnen gebruikers zich aanmelden met hun e-mailadres en wachtwoord. Firebase-SDK's bieden ook primitieven voor e-mailadresverificatie, wachtwoordherstel en het wijzigen van het e-mailadres.
  • Telefoon: Gebruikers toestaan ​​zich aan te melden met een mobiel nummer met Firebase SDK-telefoonverificatie en gebruikersverificatietools. Onder Firebase's gratis Spark-plan krijg je 10.000 telefooninloggen per maand, maar daarna moet je betalen. Bekijk het prijsgedeelte voordat u hiervoor kiest. 
  • Google: Google-aanmelding wordt automatisch geconfigureerd op uw verbonden iOS- en web-apps. Als u Google-aanmelding voor uw Android-apps wilt instellen, moet u een SHA1-vingerafdruk toevoegen voor elke app in uw projectinstellingen.
  • Spellen spelen: Client-ID en Client-geheim configureren.
  • Facebook: Om Facebook te gebruiken voor verificatie, moet u een OAuth-omleidings-URI toevoegen aan uw Facebook-app-configuratie.
  • tjilpen: Om Twitter te gebruiken voor authenticatie, voegt u een callback-URL toe aan uw Twitter-app-configuratie.
  • GitHub: Als u authenticatie met GitHub wilt instellen, voegt u een autorisatie-callback-URL toe aan uw GitHub-app-configuratie.
  • Anoniem: Selecteer deze optie om anonieme gastaccounts in uw toepassing in te schakelen, waarmee u gebruikersspecifieke beveiliging en Firebase-regels kunt afdwingen zonder dat uw gebruikers inloggegevens hoeven in te voeren.

Configureer telefoonverificatie

Laten we eens kijken hoe we een telefoon kunnen gebruiken als inlogmethode.

Ga eerst naar Aanmeldmethode, Klik op Telefoon, en schakel het in. Je ziet een scherm als dit:

U moet ook het Firebase / Auth pod in uw Podfile.

 pod 'Firebase / Auth'

Nadat u de bovenstaande regel in uw Podfile hebt toegevoegd, gaat u naar de projectmap en voert u de pod installeren commando.

Vervolgens moet u pushmeldingen inschakelen in uw Xcode-project.

Om deze instelling te vinden, selecteert u uw app in de targets paneel en klik op de mogelijkheden tab. Vanaf daar kunt u inschakelen Push-meldingen.

reCAPTCHA-verificatie 

Laten we nu reCAPTCHA-verificatie configureren. reCAPTCHA wordt gebruikt in het geval dat het verzenden of ontvangen van een stille push-melding niet mogelijk is, bijvoorbeeld wanneer de gebruiker de achtergrondvernieuwing voor uw app heeft uitgeschakeld of wanneer u uw app test op een iOS-simulator. In dit geval gebruikt Firebase-verificatie reCAPTCHA-verificatie om de aanmeldingsprocedure voor telefoons te voltooien.

Klik op GoogleService-Info.plist in het linkerpaneel van Xcode om de plist te openen. Kopieer nu de waarde van REVERSED_CLIENT_ID naar Teksteditor of een ander Kladblok. 

Ga vervolgens naar targets > uw app> info > URL-typen. Klik op de knop "+" en kopieer de REVERSED_CLIENT_ID waarde in URL-schema's, zoals hieronder getoond.

Configureer Firebase Cloud Messaging

Laten we nu Firebase Cloud Messaging configureren met de APN's van onze app.

Open de Firebase-console en klik op de knop instellingen knop die u ziet Project instellingen en Gebruikers en machtigingen. Klik op Project instellingen en dan de Cloud Messaging tab. Op dit scherm vindt u de sectie iOS-app-configuratie. 

Om Firebase Cloud Messaging in te schakelen, zullen we onze APN's en onze authenticatiesleutel voor APN's naar dit dialoogvenster uploaden.

U moet een APN-verificatiesleutel en een APN-certificaatsleutel maken.

Stappen om een ​​APNs-verificatiesleutel te maken 

  • Ga in uw ontwikkelaarsaccount naar Certificaten, identificaties en profielen, en onder Keys, kiezen Allemaal
  • Klik op de knop toevoegen (+) in de rechterbovenhoek. 
  • Voer een beschrijving in voor de auth-sleutel van de APN's.
  • Onder Key Services, selecteer de APN selectievakje en klik op Doorgaan met.
  • Klik Bevestigen en dan Download. Bewaar uw sleutel op een veilige plaats! Dit is een eenmalige download en de sleutel kan later niet worden opgehaald.

Stappen om een ​​APNs-certificaatsleutel te maken

  • Creëer een App-ID van uw Apple-ontwikkelaarsaccount en inschakelen Push notificatie tijdens het maken. Een app-ID is een ID die op unieke wijze een app identificeert. Als een conventie wordt dit weergegeven door een omgekeerd domein met uw bedrijfsnaam en de app-naam (bijv. com.mysoft.myfirstfirebaseApp).
  • Maak een Voorzieningenprofiel voor de bovenstaande app-ID. 

En dat is het! Nu zijn we klaar met alle configuraties en kunnen we beginnen met het implementeren van de registratie- en inlogstroom.

Een gebruiker registreren bij telefoonverificatie

Laten we teruggaan naar Xcode en het maken RegistrationViewController.swiftRegistrationViewController.storyboard, en RegistrationService.swift bestanden.

Voor het storyboard heb ik een UITextField en UIButton toegevoegd, zoals hieronder getoond. Deze moeten worden gekoppeld RegistrationViewController.swift.

Dit is hoe mijn RegistrationViewController.swift zal kijken: 

import Stichting import UIKit class RegistrationViewController: UIViewController, UITextFieldDelegate @IBOutlet weak var phoneNumber: UITextField! override func viewDidLoad () super.viewDidLoad () @IBAction func requestOTPTapped (_ sender: Any) 

Aangezien onze focus ligt op Firebase, zullen we UITextFieldDelegates niet implementeren. In plaats daarvan houden we de tekst vast bij klikken op de knop om de dingen eenvoudig te houden. 

Laten we nu de volgende code toevoegen RegistrationService.swift.

import FirebaseAuth class RegistrationService func getVerificationId (telefoonnummer: String, completionHandler: @escaping (String ?, Error?) -> Void) PhoneAuthProvider.provider (). verifyPhoneNumber (phoneNumber, uiDelegate: nil) (verificationID, error) in if let error = error completionHandler (nul, fout) if let id = verificationID completionHandler (id, nil) 

In deze code, PhoneAuthProvider.provider (). VerifyPhoneNumber neemt een telefoonnummer als invoer en stuurt ons de verificationID. Dit activeert ook een eenmalig wachtwoord (OTP) bericht naar het telefoonnummer dat werd verstrekt in het tekstveld. De gebruiker ontvangt de OTP op zijn telefoon en voert deze terug in een waarschuwingsvenster in de app.

Opmerking: zorg er tijdens het invoeren van het telefoonnummer voor dat de landcode ook wordt ingevoerd.

Merk ook op dat we ons dat moeten herinneren importeer FirebaseAuth aan de bovenkant van het bestand.

Laten we nu teruggaan naar RegistrationViewController.swift en bel getVerificationId, zoals hieronder getoond. Hier druk ik de ID af naar de console om te controleren of verificationId werd gegenereerd.

import Stichting import UIKit class RegistrationViewController: UIViewController, UITextFieldDelegate @IBOutlet weak var phoneNumber: UITextField! override func viewDidLoad () super.viewDidLoad () @IBAction func requestOTPTapped (_ sender: Any) if let phoneNumber = phoneNumber.text RegistrationService (). getVerificationId (phoneNumber: phoneNumber) (id, error) in if error ! = nihil return indien id id = id print (id)

De aanmeldmethode

Laten we nu een inlogmethode schrijven in RegistrationService. Hier maken we een Firebase-referenties object met verificatieId en OTP. Dit is hoe de code eruit zal zien:

 func signIn (verificationId: String, verificationCode: String, completionHandler: @escaping (String ?, Error?) -> Void) let credential = PhoneAuthProvider.provider (). credential (withVerificationID: verificationId, verificationCode: verificationCode) Auth.auth ( ) .signIn (met: referentie) (gebruiker, fout) in als laat fout = fout completionHandler ("Fout", fout) completionHandler ("Succes", nul)

Zodra we de id hebben ontvangen, tonen we een waarschuwingsweergave voor de gebruiker om de OTP vast te leggen en de. Te bellen aanmelden methode in RegistrationService. Hier is wat de RegistrationViewController zal er na deze veranderingen uitzien: 

import Stichting import UIKit class RegistrationViewController: UIViewController, UITextFieldDelegate @IBOutlet weak var phoneNumber: UITextField! override func viewDidLoad () super.viewDidLoad () @IBAction func requestOTPTapped (_ sender: Any) if let phoneNumber = phoneNumber.text RegistrationService (). getVerificationId (phoneNumber: phoneNumber) (id, error) in if error ! = nil return if let id = id self.displayAlert (id: id) func displayAlert (id: String) let alertController = UIAlertController (title: "OTP?", bericht: "", preferredStyle : .alert) laat cancelAction = UIAlertAction (titel: "Annuleren", stijl: .default, handler: (actie: UIAlertAction!) -> Void in) laat saveAction = UIAlertAction (titel: "Opslaan", style: .default , handler: alert -> Void in let otpText = alertController.textFields! [0] als UITextField if let otp = otpText.text print (otp) RegistrationService (). signIn (verificationId: id, verificationCode: otp) (status , error) in if error! = nil return print ("SignIn status", status ?? "Unknown")) alertController.addTextField (textField: UITextField!) -> Void in textField.placeholder = "OTP "  alertController.addAction (cancelAction) alertController.addAction (saveAction) self.present (alertController, geanimeerd: true, completion: nil)

Nu kunt u uw app gebruiken om het uit te proberen, dit is wat u ziet wanneer u klikt Verzoek OTP.

Nu wordt de inlogstatus als afgedrukt Succes. We kunnen in Firebase Console controleren of een gebruiker is gemaakt. 

Conclusie

In deze zelfstudie hebben we een eenvoudige app gebouwd met Xcode en Firebase. Hopelijk heb je een aantal nieuwe vaardigheden opgedaan die je in de praktijk kunt brengen in je aankomende projecten. 

Als je vragen hebt, laat het me weten in de reacties hieronder.