7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Android SDK

Firebase Untuk Android: Penyimpanan File

Read Time: 8 mins

Indonesian (Bahasa Indonesia) translation by Yanti Baddolo (you can also view the original English article)

Selama konferensi Google I / O 2016, Firebase diperkenalkan kembali ke komunitas pengembang sebagai alat utama untuk menyediakan dukungan back-end cepat untuk halaman web dan aplikasi mobile.  Tutorial ini akan memperkenalkan Anda ke fungsi penyimpanan dan pengambilan file yang tersedia untuk aplikasi Android Anda.

Untuk belajar lebih banyak mengenai database waktu nyata dari Firebase, Analisis, autentifikasi dan pelaporan kecelakaan, silahkan mengunjungi beberapa Tutorial Lainnya di Envato Tuts+.

Setup Otentikasi

Singkatnya, kami akan melewatkan proses penyiapan umum untuk Firebase di aplikasi Android dan konsol Firebase Anda.  Jika ini adalah pertama kalinya Anda mencoba Firebase di aplikasi, sebaiknya periksa dulu artikel Memulai Firebase untuk Android dari Ashraff Hathi belagal.  

Sebelum Anda dapat mulai menggunakan Penyimpanan Firebase, Anda harus memastikan pengguna Anda diautentikasi, atau mengubah persyaratan persyaratan otentikasi di Konsol Firebase untuk mengizinkan pengguna yang tidak berkepentingan untuk mengakses dan mengunggah file.  Untuk menjaga hal-hal sederhana, kita akan melakukan yang terakhir.  Mari kita mulai dengan pergi ke bagian Penyimpanan Firebase dengan memilih   Penyimpanan   di kolom navigasi sebelah kiri.  

Firebase storage section navigationFirebase storage section navigationFirebase storage section navigation

Selanjutnya, Anda akan menyadari bahwa terdapat dua tab pada bagian atas layar penyimpanan: file dan Aturan.

Rules tab in Firebase storageRules tab in Firebase storageRules tab in Firebase storage

Pilih tab Rules tab, lalu pada baris allow read, write: if request.auth != null;, ubahlah != ke == dan klik tombol PUBLISH.  

Authentication rules for Firebase storage accessAuthentication rules for Firebase storage accessAuthentication rules for Firebase storage access

Sekarang setiap pengguna aplikasi Anda harus dapat mengunggah atau mendownload file dari back-end Firebase Anda.  Meskipun hal ini tidak ideal untuk lingkungan produksi, ini akan membuat pembelajaran tentang Penyimpanan Firebase jauh lebih mudah tanpa harus menggali kode otentikasi.

Upload file secara manual

Sementara bisa mengunggah file dari sebuah aplikasi sangatlah hebat, terkadang Anda hanya ingin menyimpan file di suatu tempat yang mudah diakses dan ditarik ke aplikasi Anda.  Di sinilah Anda bisa mengunggah file dari Konsentra Firebase secara manual.  Di bawah tab File, Anda akan melihat tombol biru berjudul Upload File.

Button for manually uploading files to Firebase storageButton for manually uploading files to Firebase storageButton for manually uploading files to Firebase storage

Klik itu dan pilih file yang ingin Anda upload, dan akan muncul di Penyimpanan Firebase Anda..

An uploaded fileAn uploaded fileAn uploaded file

Memilih file di konsol akan memunculkan tampilan detail, memungkinkan Anda memeriksa file yang sebelumnya telah diunggah.

An uploaded file detailsAn uploaded file detailsAn uploaded file details

Mengunduh File dari Aplikasi Android

Sekarang setelah Anda memiliki file yang tersimpan di Firebase,  mari maju dan tariklah kedalam aplikasi.  Kita akan menggunakan layout sederhana di MainActivity kita yang berisi ImageView dengan id.

Untuk mengakses file Storage Firebase Anda, Anda harus terlebih dahulu mendapatkan referensi ke file objek FirebaseStorage, lalu membuat StorageReference  ke URL proyek dan file yang ingin Anda download.  Anda dapat menemukan URL proyek Anda di bagian atas File dari Penyimpanan di Konsol Firebase.

Selanjutnya, Anda bisa membuat objek  File dan mencoba untuk memuat file yang Anda inginkan dengan menelepon getFile pada StorageReference  Anda dengan objek File yang baru sebagai parameter.  Karena operasi ini terjadi secara asinkron, Anda bisa menambahkan  OnSuccessListener   dan   OnFailureListener  pada panggilan Anda untuk menangani kontingensi.

Pada onSuccess() dari OnSuccessListener, Anda dapat mengambil objek FileDownloadTask.TaskSnapshot dan mengambil file, yang akan kita atur gambarnya kedalam ImageView.

Image downloaded from Firebase storage displayed in appImage downloaded from Firebase storage displayed in appImage downloaded from Firebase storage displayed in app

Mengunduh File sebagai Byte Array

Jika Anda hanya perlu mengunduh file sebagai byte[] dan tidak membutuhkannya sebagai file, yang merupakan kasus yang lebih mungkin terjadi saat memuat gambar menjadi ImageView, maka anda dapat mengambil byte dengan cara yang sama.

Mendapatkan URL File

Mungkin ada situasi di mana Anda tidak memerlukan data aktual untuk file tersimpan, namun menginginkan URL tersebut.  Anda bisa melakukan ini dengan cara yang sama seperti dua contoh terakhir dengan menggunakan metode getDownloadUrl () di  StorageReference blog anda, yang akan memberi Anda Uri yang menunjuk ke lokasi file.

Metode di atas akan mencetak URL untuk gambar yang kami unggah secara manual sebelumnya di Android Monitor.

Mengunggah Dari Apl Android

Sekarang setelah Anda tahu cara mendownload file dari Firebase, saatnya untuk mengerjakan unggahan.  Seperti yang Anda lihat, saat mendownload dari Penyimpanan Firebase, proses untuk setiap bentuk data Anda cukup mirip.  Mengunggah tidak berbeda, jadi kami hanya bisa masuk ke bagaimana Anda bisa memindahkan file dari aplikasi Anda ke dalam Penyimpanan Firebase.

Mengunggah Array Byte

Seperti mengunduh, Anda perlu referensi ke objek FirebaseStorage dan membuat referensi ke lokasi penyimpanan file baru Anda sebagai StorageReference.  Untuk contoh ini, kami akan menunjukkan ic_launcher.png di ImageView , lalu kita mengunggahnya seperti array byte.

Selanjutnya kita akan mendapatkan byte array dari gambar yang tersimpan di memori melalui ImageView.  Ini dilakukan dengan memanggilnya sebagai sebuah Bitmap, menekannya menjadi ByteArrayOutputStream, dan mengubahnya kedalam byte[].

Akhirnya, Anda dapat membuat UploadTask dengan memanggil putBytes(byte[]) untuk mengunggah gambar Anda ke Firebase.   UploadTask juga bisa mendapatkan OnSuccessListener dan OnFailureListener yang diasosiasikan dengannya.

Ketika Anda mengecek halaman penyimpanan konsol Firebase, Anda seharusnya dapat melihat ic_launcher.png di daftar file Anda.

Details from a programmatically uploaded imageDetails from a programmatically uploaded imageDetails from a programmatically uploaded image

Mengunggah dari InputStream atau File

Sekarang setelah Anda tahu cara mengunggah array byte, dua jenis unggahan lainnya harus cukup intuitif.  Katakanlah kita memiliki sebuah file teks bernama test.txt di folder sumber mentah.  Kita bisa membaca ini menjadi sebuah InputStream dan kemudian mengunggahnya dengan menggunakan metode putStream (InputStream) dari StorageReference .

List of uploaded images including text file from InputStreamList of uploaded images including text file from InputStreamList of uploaded images including text file from InputStream

Mengunggah file yang sudah ada sebenarnya mude: cukup dapatkan referensi file dan panggil putFile(Uri) denganURI yang menunjuk ke file Anda.  Untuk contoh ini, kita akan membuat file sementara dalam kode kita.  

Raw file upload shown in Firebase storageRaw file upload shown in Firebase storageRaw file upload shown in Firebase storage

Mengontrol Unggahan dan Menggunakan Callbacks

Selama file yang sudah kita unggah  sejauh ini masih tergolong kecil, pasti ada saatnya dimana Anda memiliki file lebih besar untuk diunggah yang membutuhkan lebih banyak waktu.  Firebase menyediakan beberapa metode dengan UploadTask yang mengijinkan Anda mengontrol arus unggahan dan mendengarkan kemajuan dan perubahan keadaan.  Metode ini termasuk pause()resume(), dan cancel()pause() dan resume() akan membiarkan Anda berhenti sebentar dan melanjutkan UploadTask, sementara cancel() akan benar-benar menghentikannya.  Selain itu, Anda dapat menggunakan OnPauseListener dan OnProgressListener untuk melacak kemajuan unggahan dan keadaan jeda.

Kode diatas akan mengijinkan Anda mengontrol proses mengunggah untuk gambar yang cukup besar (1MB, misalnya) dan melihat perubahan keadaannya di Log Android ketika tombol pause dan resume ditekan.  

Menangani Siklus Hidup Aktivitas Android

Seperti yang dapat diketahui oleh pengembang Android, terkadang rangkaian aktivitas Android dapat menyebabkan masalah tak terduga.  Salah satu sumber masalah yang umum adalah pendengar yang bertahan lebih lama dari Aktivitas orang tua mereka, yang mungkin menjadi kasus pada keberhasilan / kegagalan pendengar yang melekat pada tugas penyimpanan Firebase.  

Jika Aktivitas hancur dan diciptakan kembali (seperti pada rotasi layar) saat sebuah tugas sedang terjadi, Anda mungkin akan berakhir dengan  NullPointerException saat tugas selesai.  Untuk menghindarinya, Anda pasti ingin menyimpan StorageReference Anda sebagai String dalam keadaan luar Bundle Anda dalam metode onSaveInstanceState (Bundle), dan kemudian mengambilnya dan menambahkan pendengar yang sukses ke masing masing FileDownloadTask atau  FileUploadTask  yang terkait dengan StorageReference .

Kesimpulan

Dalam tutorial ini Anda telah belajar banyak tentang Firebase dan pilihan yang tersedia untuk penyimpanan file.  Seharusnya Anda sekarang dapat mengunggah dan mengunduh file, mengontrol transfer data, dan menangani perubahan dalam siklus aktivitas aplikasi Anda saat terjadi transaksi.  

Meskipun kami baru saja menggaruk permukaan dari apa yang dapat Anda lakukan di Firebase, memahami alat ini semoga memungkinkan Anda untuk memperluas kemampuan aplikasi Anda sendiri dan memberikan pengalaman hebat bagi pengguna Anda.

Dan sementara itu, lihat beberapa artikel kami yang lain tentang pengembangan Android!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.