Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Firebase
Code

Začíname s Firebase Storage pre iOS

by
Difficulty:IntermediateLength:LongLanguages:

Slovak (Slovenčina) translation by Ryan (you can also view the original English article)

Úvod

Okrem toho, že iOS vývojári môžu ukladať dáta do cloudu alebo že môžu autorizovať používateľov pomocou ich SDK, Firebase taktiež ponúka pohodlné úložiskové riešenie pre médiá. Firebase Storage umožňuje vývojárom ukladať a sťahovať zvukové, obrazové a video súbory z cloudu. To znamená, že Firebase Storage vystavuje vývojárom sadu SDK, pomocou ktorého môžu spravovať používateľmi vytvorený obsah spolu s ďalším produktom, Firebase Realtime Database, ktorý ukladá textový obsah.

Avšak Firebase Storage je viac ako úložisko pre interaktívny obsah. Ponúka vývojárom offline synchronizáciu, že v prípade, keď používateľ bude bez siete, obrázky a videá budú uložené do fronty a keď sa znova pripojí, budú odovzdané. Funguje podobne ako Firebase Realtime Database spravuje synchronizáciu dát na server.

Firebase Storage logo

Tento návod nadväzuje na náš predchadzajúci návod Začíname s Firebase Authentication pre iOS, kde sme sa pozreli na to, ako spravovať, ukladať a pracovať s používateľmi v platforme Firebase.

Ciele tohto návodu

Tento návod vás vystaví k SDK Firebase Storage, ktorý pomáha spravovať obsah vašej aplikácie—ako sú obrázky, zvukové alebo video súbory—ukladať ich do cloudu a sťahovať ho pomocou vašej aplikácie. V tomto návode sa naučíte ako:

  • nastaviť Firebase Storage pre vašu aplikáciu
  • vytvárať a pracovať s úložiskovými referenciami
  • odovzdávať médiá do Firebase Storage
  • sťahovať médiá z Firebase Storage

Predpokladané vedomosti

Tento návod predpokladá, že ste sa oboznámili s Firebase, a že máte nejaké znalosti s jazykom Swift a prostredím Xcode. Je taktiež dôležité, že ste si najprv prečítali návod Začíname s Firebase Authentication pre iOS, pretože v tomto návode bude potrebné autorizovať používateľov predtým, než začneme používať Firebase Storage.

Čo je Firebase Storage?

Ako vývojár môžete používať Firebase Realtime Database pre prístup a interakciu s vaším úložiskom Firebase Storage bez toho, aby ste museli vytvárať a starať sa o vaše vlastné servery. Firebase Storage využíva miestnu vyrovnávaciu pamäť pre ukladanie médií a keď sa používateľ pripojí na internet, dáta sa automaticky zosynchronizujú.

Vývojári už sa nemusia starať o synchronizáciu dát pomocou štandardných knižníc a taktiež sa nemusia starať o nekonečno variánt, ktoré môžu spôsobiť prerušenie prenosu.

V skutočnosti produkty Firebase vedia, že mobilní používatelia čelia prerušeným alebo slabým signálom. Mať možnosť synchronizovať dáta pre neskorší prenos umožňuje lepší používateľský zážitok, zatiaľčo uľahčuje prácu mnohým vývojárom.

Bezpečnosť je prvoradá pre Firebase Storage, ako aj pre zvyšok produktov Firebase. To znamená, že vývojári vedia znemožniť prístup k položkám autorizovaním používateľov pomocou Firebase Authentication, ktorý je postavený na imperatívnom modeli bezpečnosti, ktorý umožňuje ovládať prístup k cestám, súborom, alebo metadátam na základe postavení.

Nakoniec, aplikácie, ktoré bežia na Firebase Storage bežia na infraštruktúre od Googlu, ktorý sa škáluje na základe používateľskej základne. Neskôr v tomto návode si niektoré z týchto konceptov ukážeme, ale najprv si nastavíme našu aplikáciu, aby fungovala s Firebase. Potom sa pozrieme na úložiskové referencie.

Nastavenie projektu

Ak ste predtým pracovali s Firebase, veľa z toho vám už bude povedomé. Inak si musíe vytvoriť účet v platforme Firebase a nasledovať inštrukcie v sekcii Nastavenie projektu v článku Začíname s Firebase Authentication pre iOS.

Môžete si stiahnuť celý zdrojový kód tohto projektu napísaním tohto príkazu do príkazového riadku:

Potom musíme pridať Firebase/Storage do nášho súbora Podfile, ako je to ukázané nižšie:

Uložte ho a potom napíšte tento príkaz to príkazového riadku:

V AppDelegate metóde application:didFinishLaunchingWithOptions: by mal byť tento riadok:

Uistite sa, že ste správne nastavili projekt pomocou Firebase Console, ako je to vysvetlené v sekcii Nastavenie projektu v článku Začíname s Firebase Authentication pre iOS.

Keď je vaše prostredie pripravené, môžeme pokračovať v oboznámení sa s úložiskovými referenciami, začínajúc s vytváraním ukazovateľom referencie.

Vytváranie a pracovanie s úložiskovými referenciami

Pomocou Firebase Storage môžete pracovať s vlastným úložiskovým priestorom, ktoré reprezentuje súborový systém vašich uložených obrázkov a videí. Používate úložiskovú referenciu na určitú cestu alebo súbor vo vnútri cesty, ktorý je vo vnútri súborového systému ku ktorému má vaša aplikácia prístup.

Ukazovateľ na cestu alebo súbor vám povoľuje odovzdávať, sťahovať, aktualizovať alebo odstraňovať určitú cestu. Pre vytvorenie ukazovateľa stačí vytvoriť inštanciu Storage.storage():

Teraz máte referenciu na koreň vašej hierarchie súborového systému a teraz môžete nastaviť štruktúru vášho priestoru akú len chcete, napríklad vytváraním priečinkovej štruktúry.

Pre prístup k súborom a cestám vo vašom priestore si stačí zavolať metódu child():

Referencie sú skraktou pre celú cestu k vášmu súboru pomocou vášho priestoru namiesto vypisovania celej URL cesty. Okrem metódy child() môžete sa navigovať cez vašu hierarchiu pomocou metód root() a parent() a taktiež môžete metódy pripínať:

Ako vidíte, pomocou userProfilesRef sa dostaneme k rovnakým výsledkom ako v predošlom bloku kódu. Referencie sú dosť ľahké, takže ich môžete mať v inštancii vašej aplikácie koľko len chcete, bez toho, aby ste ovplyvnili výkon vašej aplikácie.

Teraz, keď rozumiete základnom pracovania s referenciami Firebase Storage, teraz sa posuňme k odovzdávaniu a sťahovaniu súborov z vášho priestoru.

Odovzdávanie médií do Firebase Storage

Najjednoduchšou cestou k odovzdávaniu súbora je podať NSData reprezentáciu obsahu:

Taktiež môžete spravovať vaše odovzdávania ovládaním kedy začať, pozastaviť, pokračovať, alebo aj ukončiť odovzdávanie. Taktiež môžete počúvať niektoré udalosti, ako sú:

  • pause (pozastavenie)
  • resume (pokračovanie)
  • cancel (zastavenie)

Pomocou uploadUserProfileTask, ktorý sme vytvorili predtým môžete ovládať odovzdávania pomocou týchto metód:

Taktiež môžete sledovať aktívny prenos nastavením pozorovateľa do inštancie objektu úlohy:

Pozrime sa, ako sa dajú stiahnúť obrázky alebo videá z úložiskového priestoru.

Sťahovanie médií z Firebase Storage

Aby ste vedeli sťahovať a zobrazovať vaše obrázky, začnite rovnako ako ste začali s odovzdávaním a definujte ukazovateľ na vašu vybranú cestu. Potom začnite sťahovanie pomocou funkcie dataWithMaxSize:completion::

Ak používate FirebaseUI, môžete prenechať starosti so sťahovaním, ukladaním do vyrovnávacej pamäte a zobrazovaním obrázkov knižnici FirebaseUI:

Pre viac informácií o implementácii FirebaseUI sa pozrite na dokumentáciu FirebaseUI.

Spravovanie sťahovaní funguje podobne ako spravovanie odovzdávaní. Tu je príklad:

Taktiež môžete pridať pozorovateľa rovnako ako sme to robili s odovzdávaním, aby ste mohli sledovať stav prenosu:

Teraz, keď viete pracovať s referenciami, odovzdávaním a sťahovaním obsahu z vášho priestoru, ste pripravený implementovať Firebase Storage na náš príkladový projekt: FirebaseDo.

Príkladový projekt FirebaseDo

Teraz by ste mali mať stiahnutý projekt FirebaseDo, takže je čas vybudovať a spustiť projekt. Uvidíte, že ten projekt iba dokáže prihlasovať používateľov pomocou telefónu alebo e-mailu:

App screen with sign in options by phone or email

Našim cieľom je postupne vylepšiť funkcionalitu aplikácie, takže keď sa pouźívatelia úspešne prihlásia, budú mať možnosť odovzdať profilový obrázok. Väčšinou budeme pracovať v HomeViewController a jeho priradeným Storyboard súborom. Najprv sa pozrime na súbor HomeViewController.

HomeViewController

Predtým, než sa pustíme do metód tohto ovládača, najprv musíme pridať protokol UIImagePickerControllerDelegate do našej triedy. Taktiež musíme pridať inštanciu pre vybranie obrázka, aby naši používatelia si mohli vybrať obrázok z ich knižnice.

Pridajte tento kód na koniec metódy viewDidLoad():

Teraz ideme implementovať metódu refreshProfileImage(), ktorá bude zavolaná vždy, keď chceme stiahnuť obrázok, ktorý bude zobrazený v našom ovladači ViewController. Predtým, než vytvoríme referenciu na získanie obrázka z cesty /images/user_id/profile_photo.jpg najprv musíme skontrolovať, či je používateľ prihlásený. Nakoniec zaktualizujeme zobrazovateľ obrázka so získaným obrázkom.

Potom vytvoríme metódu s @IBAction pre tlačidlo na zobrazenie knižnice, na ktorú neskôr pripojíme z nášho storyboardu:

A teraz pridáme dva metódy na náš UIImagePickerController, jeden, ktorý sa spustí, keď používateľ zruší UIImagePicker, a druhý na ovládanie vybraného obrázka:

Keď si používateľ vyberie obrázok, stále budeme mať referenciu na ten obrázok. Vytvoríme inštanciu StorageMetadata() takže môžeme povedať Firebase, že budeme odovzdávať obrázok vo formáte JPEG.

Podobne, ako sme to robili v metóde refreshProfileImage(), najprv skontrolujeme, či je používateľ prihlásený, a potom vytvoríme referenciu na obrázky, kde budeme ukladať profil nášho používateľa. Použitím metódy putData(), potom asynchrónne odovzdáme obrázok na určené miesto, až potom nastavíme náš ukazovateľ obrázka na novo vybraný obrázok.

Predtým, než vybudujeme a spustíme našu aplikáciu musíme pridať ovládacie prvky do nášho storyboardu.

Storyboard

Do nášho hlavného storyboardu pridajte zobrazovateľ obrázka so zástupným obrázkom reprezentujúci používateľov profil a potom položte obrázok, ktorý bude prepojený do ukazovateľa, ktorý je definovaný ako @IBOutlet v našej triede HomeViewController. Potom pridajte panel nástrojov s tlačidlom, ktorý použijete ako @IBAction pre zavolanie metódy libraryAction(), ktorú sme vytvorili v HomeViewController.

Váš Storyboard by mal vyzerať podobne tomuto:

Storyboard view with placeholder profile image

Teraz môžete znova vybudovať a spusiť vašu aplikáciu a prihlásiť sa buď vytvorením nového účtu alebo použitím existujúceho.

Potom uvidíte HomeViewController kde stlačíte na tlačidlo + pre pridanie obrázka z fotoknižnice vášho zariadenia alebo simulátora. Keď ste si vybrali fotku, fotka bude odovzdaná do úložiskového priestoru. Môžete sa uistiť, že bola úspešne odovzdaná navštívením karty Storage vo Firebase Console:

The Storage tab of your Firebase Console

Ak zastavíte a znova spustíte aplikáciu v Xcode, mali by ste uvidieť obrázok, ktorý ste odovzdali predtým, potvrdzujúci, že obrázok bol úspešne odovzdaný a stiahnutý pomocou Firebase Storage.

Záver

Tento návod dokázal, aké jednoduché je pridať asynchrónne úložisko a spravovanie do existujúcej Firebase aplikácie iba s pár riadkami kódu. Pomocou Firebase Storage môžete pohodlne spravovať obrázky vašej aplikácie, zatiaľčo Firebase elegantne a pohodlne spravuje synchronizáciu offline.

Firebase Storage je očividnou voľbou pre iOS vývojárov, ktorí pracujú s ekosystémom Firebase. Ponúka vývojárom bezpečnosť imperatívneho modelu poskytnutú službou Firebase Authentication, ako aj schopnosti poskytnuté službou Firebase Realtime Database.

Zatiaľ čo ste na tu, pozrite sa aj na niektoré z našich príspevkov ohľadov vývoja aplikácií pre iOS!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.