Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Firebase
Code

Memulai dengan Firebase Storage untuk iOS

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Hasannudin Amin (you can also view the original English article)

Pengantar

Selain memungkinkan pengembang iOS untuk menyimpan data di cloud dengan mudah, serta mengautentikasi pengguna melalui SDK mereka yang kuat, Firebase juga menyediakan solusi penyimpanan yang mudah untuk media. Firebase Storage memungkinkan pengembang untuk menyimpan dan mengambil file audio, gambar, dan video di cloud. Artinya, Firebase Storage mengekspos satu set SDK untuk memberi pengembang kemampuan untuk mengelola aset konten buatan pengguna mereka di samping produk saudaranya, Firebase Realtime Database, yang menyimpan konten teks pengguna.

Namun, Firebase Storage lebih dari sekadar wadah penyimpanan untuk aset media. Ini membantu pengembang dengan menawarkan sinkronisasi offline untuk pengguna dan perangkat mereka, mengantrikan dan melanjutkan gambar dan video saat pengguna online kembali. Ini bekerja sama dengan bagaimana Firebase Realtime Database mengatur sinkronisasi data pengguna ke back-end.

Firebase Storage logo

Tutorial ini berlanjut dari tutorial sebelumnya tentang Memulai dengan Firebase Authentication untuk iOS, di mana kami melihat bagaimana mengelola, menyimpan dan bekerja dengan pengguna di Firebase.

Tujuan Tutorial Ini

Tutorial ini akan mengekspos Anda ke SDK Firebase Storage, untuk membantu Anda mengelola aset media aplikasi Anda - seperti file gambar, audio dan video - menyimpannya dari jarak jauh di cloud, dan membawanya kembali ke seluruh aplikasi Anda. Dalam tutorial ini, Anda akan belajar bagaimana untuk:

  • menyiapkan aplikasi Anda untuk Firebase Storage
  • membuat dan bekerja dengan referensi penyimpanan
  • upload media ke Firebase Storage
  • upload media ke Firebase Storage

Asumsi Pengetahuan

Tutorial ini mengasumsikan Anda memiliki beberapa paparan terhadap Firebase, dan latar belakang pengembangan dengan Swift dan Xcode. Hal ini juga penting bahwa Anda telah mempelajari tutorial Memulai dengan Firebase Authentication untuk iOS pertama karena Anda akan perlu untuk mengotentikasi pengguna Anda sebelum mengakses sebagian besar fungsionalitas Firebase Storage, termasuk aset path.

Apa itu Firebase Storage?

Sebagai pengembang, Anda dapat menggunakan Firebase Realtime Database untuk mengakses dan berinteraksi dengan bucket di Firebase Storage Anda dengan cara tanpa server, tanpa perlu membuat dan meng-host server Anda sendiri. Firebase Storage menggunakan caching on-device lokal untuk menyimpan aset saat offline dan melayani aset saat pengguna kembali online, dengan data lokal disinkronkan secara otomatis.

Pengembang tidak lagi harus berurusan dengan kerumitan sinkronisasi data dan konten melalui pustaka jaringan iOS Apple standar, dan harus menghadapi beberapa skenario yang dapat menyebabkan gangguan transfer.

Sebenarnya, produk Firebase mengenali bahwa pengguna ponsel dunia nyata menghadapi prospek gangguan atau situasi dengan sinyal rendah. Mampu menyinkronkan data on-device untuk transfer nanti membuat pengalaman pengguna jauh lebih baik, sekaligus menghemat banyak kerja pengembang.

Keamanan juga sangat penting dengan Firebase Storage, seperti halnya dengan rangkaian produk Firebase lainnya. Ini berarti pengembang dapat membatasi akses ke item penyimpanan dengan mengautentikasi pengguna menggunakan Firebase Authentication, yang dibangun di atas model keamanan wajib yang memungkinkan kontrol akses ke jalur, file, dan metadata berdasarkan peran per peran.

Akhirnya, aplikasi yang diinangi di Manfaat Penyimpanan Firebase dari infrastruktur Google yang berskala sebagai basis pengguna tumbuh. Kami akan mengeksplorasi beberapa konsep ini nanti di tutorial, tapi untuk memulai, mari kita mengatur aplikasi Anda untuk bekerja dengan Firebase. Kemudian kita akan melihat petunjuk Storage Reference.

Mengatur Proyek

Jika Anda pernah bekerja dengan Firebase sebelumnya, banyak hal ini harus Anda ketahui. Jika tidak, Anda perlu membuat akun di Firebase, dan ikuti petunjuk di bagian Menyiapkan Proyek dari artikel Memulai Dengan Firebase Authentication untuk iOS.

Anda bisa mendownload kode sumber lengkap untuk proyek ini dengan memasukkan yang berikut ini di terminal:

Untuk Penyimpanan, kita perlu menambahkan Firebase/Storage ke Podfile kita, seperti yang ditunjukkan di bawah ini:

Simpan lalu masukkan yang berikut di terminal Anda untuk membangun pods:

Dalam Metode AppDelegate application:didFinishLaunchingWithOptions:, baris berikut ini ada:

Pastikan Anda juga telah mengonfigurasi proyek Anda melalui Firebase Console dengan benar, seperti yang dijelaskan di bagian Set Up the Project dari Tutorial Memulai Firebase Authentication untuk iOS.

Setelah lingkungan Anda siap, kita dapat beralih untuk melihat referensi penyimpanan, dimulai dengan cara membuat reference pointer.

Membuat & Bekerja dengan Storage References

Dengan menggunakan Firebase Storage, Anda dapat berinteraksi dengan cloud bucket Anda sendiri, yang mewakili filesystem gambar dan video yang Anda simpan. Anda menggunakan apa yang disebut storage reference ke path atau file tertentu di dalam path, di dalam sistem berkas yang kemudian Anda beri akses ke aplikasi Anda, sehingga Anda dapat berinteraksi dengannya dengan mentransfer data.

Memiliki pointer ke path atau file di dalam path memungkinkan Anda mengunggah, mendownload, memperbarui, atau menghapus path itu. Untuk membuat referensi, Anda cukup membuat instance dari Storage.storage(), sebagai berikut:

Anda sekarang memiliki referensi ke akar hirarki filesystem Anda, dan Anda dapat mengatur struktur untuk bucket Anda sesuai keinginan, misalnya dengan membuat struktur folder.

Untuk mengakses file dan path di bucket Anda, hubungi metode child(), sebagai berikut:

Referensi adalah singkatan untuk path Firebase lengkap ke file Anda melalui bucket Anda, alih-alih memasukkan keseluruhan URL path dari bucket Firebase Anda. Selain metode child(), Anda juga bisa menavigasi hierarki menggunakan metode root() dan parent(), dan Anda bisa merantai metode ini, seperti yang akan Anda lihat di bawah ini:

Seperti yang Anda lihat, kita akan mendapatkan hasil yang sama untuk userProfilesRef seperti pada blok kode sebelumnya. Hal yang hebat tentang referensi adalah bahwa mereka sangat ringan, sehingga Anda dapat memiliki banyak referensi dalam contoh aplikasi Anda sesuai keinginan, tanpa mempengaruhi kinerja aplikasi Anda.

Sekarang setelah Anda memahami aspek mendasar dari bekerja dengan Firebase Storage Reference, mari beralih ke mengunggah dan mendownload file dari bucket Anda.

Mengunggah Media ke Firebase Storage

Cara termudah untuk mengupload file adalah dengan mengirimkan representasi NSData ke dalam memori:

Anda dapat mengelola upload yang sedang berlangsung, dengan mengontrol kapan harus memulai, menjeda, melanjutkan, dan membatalkan upload Anda. Anda juga dapat melakuka event berikutnya yang dipicu, yaitu:

  • pause
  • resume
  • cancel

Mengacu pada uploadUserProfileTask yang kita gunakan sebelumnya, Anda dapat mengontrol upload Anda menggunakan metode berikut:

Anda juga dapat memantau transfer yang sedang berlangsung dengan hanya menyetel pengamat ke objek contoh tugas:

Mari kita lihat bagaimana Anda akan men-download gambar atau video dari storage bucket.

Mengunduh Media Dari Penyimpanan Firebase

Untuk dapat mendownload dan menampilkan gambar Anda, Anda memulai seperti yang Anda lakukan dengan mengunggah, dan menyatakan pointer referensi ke jalur yang Anda tunjuk. Kemudian mulailah download menggunakan fungsi penutupan dataWithMaxSiz:completion::

Jika Anda menggunakan FirebaseUI, Anda cukup memiliki FirebaseUI mengelola download, caching, dan menampilkan gambar untuk Anda dengan cara yang lebih sederhana:

Untuk informasi tentang penerapan FirebaseUI, lihat dokumentasi FirebaseUI.

Mengelola unduhan bekerja dengan cara yang sama untuk mengelola dan mengendalikan upload. Inilah contohnya:

Anda juga dapat menunjuk pengamat seperti yang kita lakukan untuk upload, untuk melacak kemajuan transfer unduhan secara waktu nyata:

Berbekal gambaran bagaimana bekerja dengan referensi dan cara mengunggah dan mengunduh aset dari bucket Anda, kini Anda siap untuk melihat bagaimana menerapkan Firebase Sotrage untuk proyek sampel kita: FirebaseDo.

Proyek Sampel FirebaseDo

Anda seharusnya sudah mengkloning aplikasi FirebaseDo sekarang, jadi maju dan bangun dan jalankan proyek. Anda akan melihat bahwa semua yang dilakukannya adalah mengotentikasi pengguna, menggunakan telepon atau email:

App screen with sign in options by phone or email

Tujuan kita adalah untuk secara bertahap meningkatkan fungsionalitas aplikasi, sehingga setelah pengguna kita berhasil diautentikasi, mereka akan dapat mengunggah foto profil. Sebagian besar pekerjaan kita akan berada di HomeViewController dan Associated Storyboard-nya. Mari kita atasi file HomeViewController terlebih dahulu.

HomeViewController

Sebelum kita beralih ke metode pengontrol ini, kita perlu menambahkan protokol UIImagePickerControllerDelegate ke kelas kita sehingga kita dapat bekerja dengan metode delegasinya. Kita juga perlu menambahkan contoh pemetik sehingga pengguna kita dapat memilih foto dari perpustakaan mereka.

Tambahkan metode menjelang akhir metode viewDidLoad():

Kami akan menerapkan metode refreshProfileImage(), yang akan dipanggil untuk mendownload gambar yang telah kita tampilkan di ViewController kita. Kita pertama-tama akan menyatakan bahwa pengguna benar-benar diautentikasi, sebelum membuat referensi yang akan mengambil gambar profil pengguna dari path /images/user_id/profile_photo.jpg di dalam bucket kita. Akhirnya, kita akan memperbarui tampilan gambar kita dengan gambar yang diambil.

Selanjutnya, kita membuat metode @IBAction untuk tombol pustaka foto yang akan segera kita hubungkan dari storyboard kita:

Akhirnya, kita menambahkan dua metode delegasi untuk UIImagePickerController kita, untuk menangani saat pengguna membatalkan UIImagePicker, serta menangani gambar yang dipilih:

Begitu pengguna memilih gambar, kita mengabaikan picker tapi tetap merujuk ke gambar yang dipilih. Selanjutnya, kita membuat instance StorageMetadata() sehingga kita bisa memberi tahu Firebase bahwa kita akan mengupload file JPEG.

Seperti yang kita lakukan pada metode refreshProfileImage(), kita akan menyatakan bahwa pengguna diautentikasi, dan kemudian membuat referensi ke jalur gambar tempat kita ingin menyimpan profil pengguna kita. Dengan menggunakan metode putData(), kita kemudian secara asinkron mengunggah gambar kita ke lokasi bucket yang ditentukan, sebelum menyetel tampilan gambar kita ke gambar yang baru dipilih.

Sebelum kita dapat membangun dan menjalankan aplikasi kita, kita perlu menambahkan kontrol yang sesuai ke storyboard kita.

Storyboard

Di dalam storyboard utama kita, tambahkan tampilan gambar dengan gambar placeholder yang akan mewakili profil pengguna saat ini, lalu seret untuk mengaitkan tampilan gambar dengan yang telah kita nyatakan sebagai @IBOutlet di kelas HomeViewController kita. Selanjutnya, tambahkan toolbar dengan tombol yang akan Anda gunakan sebagai @IBAction untuk memanggil metode libraryAction() yang telah kita buat sebelumnya di HomeViewController.

Storyboard Anda sekarang harus menyerupai berikut ini:

Storyboard view with placeholder profile image

Tidak ada kesalahan, Anda dapat terus maju dan membangun dan menjalankan aplikasi Anda sekali lagi, dan mengotentikasi dengan membuat pengguna baru atau menggunakan kumpulan kredensial pengguna yang ada.

Anda kemudian akan disajikan dengan HomeViewController, di mana Anda akan memilih tombol + untuk menambahkan gambar dari perangkat Anda atau simulator perpustakaan foto. Setelah memilih foto, Anda akan mengunggahnya ke bucket Firebase. Anda dapat mengonfirmasi bahwa telah berhasil diunggah dengan membuka tab Penyimpanan Konsol Firebase Anda, seperti yang ditunjukkan di bawah ini:

The Storage tab of your Firebase Console

Jika Anda menghentikan dan menjalankan kembali aplikasi di Xcode, Anda juga harus melihat gambar yang terakhir diunggah muncul kembali, mengonfirmasi lebih lanjut bahwa kita telah berhasil mengunggah dan mendownloadnya menggunakan Firebase Storage.

Kesimpulan

Tutorial ini menunjukkan bagaimana mudahnya menambahkan penyimpanan dan pengelolaan aset asinkron ke aplikasi Firebase yang ada hanya dengan beberapa baris kode. Ini memberi Anda cara mudah untuk mengelola aset aplikasi Anda, sementara membiarkan Anda menangani sinkronisasi offline dengan elegan dan mudah.

Firebase Storage adalah pilihan yang jelas bagi pengembang iOS yang sudah berada dalam ekosistem Firebase. Ini memberi pengembang keamanan model keamanan penting yang disediakan oleh Firebase Authentication, serta kemampuan yang disediakan oleh Firebase Realtime Database.

Sementara Anda berada di sini, lihat beberapa posting kita yang lain mengenai pengembangan aplikasi 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.