(musik tekno ceria)
- Halo semuanya, dan selamat datang. Nama saya Ryan.
Saya adalah Software Engineer di tim Firebase
yang mengerjakan SDK Apple di kantor kami di Waterloo, Kanada.
- Saya Chen.
Saya adalah Software Engineer di tim Firebase,
juga mengerjakan SDK Apple. Saya berbasis di kantor Sunnyvale, California.
- Misi Firebase adalah membantu keberhasilan developer
dengan mempermudah pembuatan dan pengoperasian aplikasi.
- Kami tahu Firebase adalah toolkit developer seluler lintas platform,
mendukung iOS bersama dengan Android, Web, CIMA+, dan Unity.
Namun, kami tahu kenapa Anda ada di sini.
Jika Anda semangat seperti saya, Anda mungkin tahu ekosistem Apple
telah mempermudah pengembangan aplikasi multiplatform.
Tidak hanya untuk iOS dan iPadOS, tapi macOS, WatchOS, tvOS, dan Catalyst.
Wah, itu daftar yang panjang.
Di Firebase, kami sedang mempelajari beberapa kasus penggunaan
dan menyediakannya di seluruh platform Apple.
SDK Firebase untuk platform Apple memberi Anda fleksibilitas untuk membuka kunci
beberapa alur pengembangan iOS,
dan akan terus berbuat lebih banyak di masa depan.
- Menagih dan menjalankan aplikasi iOS dan platform Apple lainnya
telah berubah beberapa tahun terakhir ini.
Swift telah menjadi bahasa de facto untuk membuat aplikasi.
Kita akan bahas fitur dan framework bahasa Swift yang rapi di sesi ini.
SwiftUI, misalnya, memungkinkan kita membuat antarmuka yang indah
menggunakan sintaks yang sederhana dan ringkas.
Swift Package Manager jadi lebih mudah
untuk menyertakan SDK Firebase dalam proyek.
Async/wait dan Combine
adalah cara baru kita bernalar tentang pemrograman Asinkron.
Di Firebase, kami mengamati perubahan ini dengan cermat
dan kami akan tunjukkan pendekatan kami terhadap perubahan dalam ekosistem ini.
Namun, pertama-tama, Chen, apa yang terjadi di repo GitHub?
- Biar saya beri tahu, Ryan,
sejak Firebase mengambil langkah pertama open source pustaka klien kami di 2017
sebagian besar SDK Firebase untuk platform Apple
tersedia hari ini di GitHub.
Kami baru saja membuka sumber Firebase performance SDK
pada akhir tahun 2020. Jadi, jika Anda belum melihatnya
periksalah dan beri tahu kami pendapat Anda.
Kami terus menunjukkan komitmen atas transparansi yang lebih besar
dan membangun komunitas developer yang lebih kuat.
Hingga hari ini, kami menutup lebih dari 2.000 masalah dan munculkan
lebih dari 5.000 permintaan pull.
Tim Firebase kami menyukai interaksi dengan Anda di GitHub.
Kami mendorong Anda memberikan masukan,
tidak peduli permintaan fitur atau masalah bug,
karena Anda dapat berbicara lamgsung dengan teknisi kami
yang membuat SDK, termasuk Ryan dan saya.
Ini juga memudahkan percakapan teknis.
Kami beruntung memiliki komunitas kontributor yang luar biasa.
Saat ini ada 139 dari Anda
yang berkontribusi di SDK Firebase untuk platform Apple.
Kami melihat kolaborasi open source yang aktif
antara anggota komunitas dan Firebasers
yang bekerja sama dalam dukungan gabungan.
Terima kasih banyak untuk Anda semua yang memperbaiki SDK kami.
Menjadi open source telah memungkinkan banyak hal.
Mampu melangkah melalui kode
menghemat berjam-jam berburu bug.
Ini juga mengaktifkan fitur seperti dukungan komunitas
untuk tvOS, macOS, Catalyst, dan WatchOS.
Kami baru menambahkan dukungan komunitas WatchOS
untuk database real time dan remote config.
Sekarang Anda bisa coba di aplikasi jam Anda
dan gunakan diskusi GitHub untuk mengajukan pertanyaan.
Banyak yang sudah mulai menggunakan Swift Package Manager
untuk mengelola dependensi.
Saat ini, Firebase secara resmi mendukung Swift Package Manager.
Jadi, selain (tak terdengar), gunakan Swift Package Manager sekarang
untuk menambahkan pustaka Firebase ke aplikasi.
Saya akan menunjukkan caranya dengan cepat karena ini sangat mudah.
Pertama, Anda harus mendapatkan URL dari halaman laporan SDK iOS Firebase.
Salin-tempel URL dari halaman.
Harusnya bisa untuk kebanyakan pustaka
yang di-host atau didistribusikan via GutHub.
Sekarang, buka aplikasi Anda dalam kode X, klik pada tab File,
dan pilih Swift Package. Lalu klik Add Package Dependency,
tempel URL, dan klik Next.
Pilih versi atau cabang yang ingin Anda targetkan.
Sebaiknya dapatkan versi terbaru SDK kami
tidak hanya untuk fitur baru,
tetapi yang lebih penting untuk perbaikan bug atau peningkatan.
Tak lama kemudian, Anda dapat memilih produk yang ingin Anda gunakan.
Di sini kita akan menggunakan Analytics Auth,
dan kami ingin mencoba API ekstensi SwiftUI yang baru.
Satu hal yang perlu diketahui, jika ingin menambahkannya ke target lain,
contoh, target jam tangan independen,
dan hanya ingin menginstal fitur pesan di aplikasi jam tangan,
Anda dapat memilih target di sisi kanan.
Setelah selesai, klik dan selesaikan, maka Anda akan dapat melihat paketnya
jika Anda mengklik Project dan memilih Swift Package di sini.
Jika ingin menambahkan SDK Firebase lagi nanti,
Anda bisa buka target yang ingin Anda edit, klik General,
dan di bawah Framework, Library dan Embedded Content.
SDK Firebase bisa ditambah secara manual, atau dihapus jika tidak dibutuhkan.
Kita telah membuat proyek baru dengan Swift Package Manager,
mari dengarkan Ryan yang membahas lebih lanjut tentang Swift dan SwiftUI.
- Terima kasih, Chen.
Meskipun SDK kami sebagian besar ditulis di Objective C,
kami mengevaluasi setiap API untuk melihat bagaimana API itu diimpor ke Swift
dan mencoba membuat pengalaman hebat.
Namun, bagaimana dengan hal seperti jenis hasil, dukungan yang dapat dikodekan,
parameter default, atau enum dan tipe terkait?
Kami dapat memanfaatkan fitur Swift yang hebat itu
saat menulis Objective C. Terkadang kita hanya perlu menulis kode Swift.
Itu kenapa kami mulai mengirim ekstensi Swift opsional ke SDK yang berbeda.
Sebagian adalah kontribusi dari komunitas.
Mari kita bahas beberapa sorotan. Kita akan melihat banyak kode.
Berikut cuplikan saat kami mendownload gambar dari penyimpanan Firebase
menggunakan blok pengendali penyelesaian tradisional.
Data dan error bersifat opsional
dan menghasilkan kode aneh,
sehingga kita harus membungkus paksa error tersebut.
Tidak perlu dilakukan jika kita menghindarinya.
Error harus selalu diisi ketika data nihil,
dan data harus selalu nihil jika ada error.
Namun, kita tidak bisa memaksakannya di compiler dengan kode yang ada.
Dengan beralih menggunakan fungsi yang disediakan oleh ekstensi Swift baru,
kita bisa singkirkan state aneh itu dan membuka paksa.
Dengan pernyataan switch, kita mendapat compiler yang aman
hanya dengan dua perwakilan state. Kita bisa mendapat data atau error.
Tidak ada lagi state antara.
Mari beralih ke Firestore dan mengurai data.
Cuplikan kode singkat menampilkan penguraian data dari awalan cepat
Firestore versi sebelumnya. Setelah mendapatkan data dari Firestore,
kami ingin mengubahnya menjadi jenis lokal dari kamus yang disediakan,
dalam hal ini, restoran. Apakah kode semacam ini tampak familier bagi Anda?
Saya jadi sedih setiap membaca menu.
Membuka error pada kunci string,
tidak memanfaatkan fitur keamanan jenis Swift.
Rentan, sulit dibaca, dan mudah membuat kesalahan saat menulisnya.
Gantinya, mari tambah codeable conformance ke jenis restoran kita.
Dengan mengonfirmasi protokol codeable,
kita mendapatkan banyak penguraian kode manual secara gratis
seperti yang dihasilkan compiler, dan pembaruan tetap konsisten di semua jenis.
Membaca data Firestore itu
sekarang semudah memanggil data sebagai fungsi
pada dokumen, snapshot, dan penguraian di jenis restoran.
Tidak perlu mengurai objek secara manual. Codeable melakukan semua pekerjaan.
Mengatur data di Firestore semudah
meneruskan instance secara langsung, bukan representasi kamus darinya.
Kami juga baru menerbitkan API serupa untuk database Firebase,
berkat seorang kontributor eksternal.
Selanjutnya, SwiftUI yang baru dan menarik. Yang ini favorit saya.
Saya senang memberitahukan kami baru saja mengirimkan beberapa API
khusus SwiftUI yang akan hadir lebih banyak.
Di WWDC 2020, kami diperkenalkan dengan siklus proses aplikasi SwiftUI yang baru
yang dibagikan di seluruh platform.
Sebelumnya, kami sarankan Anda meletakkan FirebaseApp.configure
di atas aplikasi yang selesai meluncurkan panggilan di delegasi aplikasi.
Nah, kemana perginya ia jika tidak ada delegasi aplikasi?
Kita cukup ganti fungsi init yang dipanggil saat aplikasi dimulai
dan panggil FirebaseApp.configure di sana.
Ini tetap benar meskipun perlu
menggunakan aplikasi UI yang didelegasi setelahnya
untuk menangani notifikasi push,
yang akan kita lihat nanti di demo dari Chen.
Saya ingin tunjukkan API pertama baru
untuk mencatat peristiwa tampilan layar manual
di Google Analytics untuk Firebase. API mereka yang sudah ada
otomatis merekam tampilan layar dan kelas layar untuk kit UI,
tetapi karena fakta SwiftUI
tidak memiliki pengontrol tampilan UI sesuai yang dapat kita manfaatkan,
ia tidak berfungsi saat menggunakan SwiftUI.
Untung, tahun lalu kami tambahkan peristiwa tampilan layar manual
sehingga Anda dapat mengontrol dengan cermat kapan peristiwa ini dicatat.
Itu cocok saat menulis kit UI. Mengintegrasikan ini ke viewDid/Appear,
ia hampir selalu berada di luar.
Mari lihat seperti apa tampilannya di SwiftUI.
Kita bisa memanggil API logging manual
setiap kali tampilan muncul menggunakan pengubah saat muncul.
Ini berfungsi, tetapi cukup bertele-tele dan dapat mengacaukan kode
dan menghilangkan struktur tampilan Anda.
Daripada membatasi pada apa yang bisa ditawarkan dari sisi API di objective C,
kita bisa lebih baik di Swift.
Ini adalah peluang bagus untuk pengubah tampilan kustom,
dan itulah yang kami buat.
Kami dapat menandai tampilan apa pun
dengan pengubah tampilan layar analytics yang disediakan
untuk mendeklarasikan nama tampilan, class, atau dalam hal ini, struct,,
tetapi kami mencocokkan penamaan analytics di sini
dan parameter tambahan yang ingin Anda catat
saat tampilan ini muncul di layar.
Berkat argumen default Swift, Anda hanya dapat memberikan namanya
dan sisanya opsional. Seperti dalam kasus ini,
kami meninggalkan argumen parameter tambahan.
Kami senang dengan cara baru ini
untuk menandai tampilan dan merekam peristiwa tampilan layar.
Peningkatan SwiftUI lainnya
ialah membuat tampilan pesan dalam aplikasi sendiri.
Di contoh ini, kami menggunakan pengubah modalInAppMessage.
Penutupnya ialah pembuat tampilan
dan argumennya adalah pesan yang berisi data
yang dikonfigurasi di konsol,
ditambah delegasi untuk memberi tahu SDK messaging dalam aplikasi
dari interaksi, seperti saat pesan diketuk atau ditutup
untuk mencatat metrik dan tayangan.
Ada API yang mencakup setiap jenis pesan yang menyediakan antarmuka khusus
dari pesan dalam aplikasi, lebih mudah sekarang.
Beri tahu kami di diskusi GitHub jika Anda punya ide
untuk pembantu SwiftUI lain yang ingin dilihat.
Komunitas menyukai Combined dan tidak bisa kami salahkan.
Kami juga. Kami telah menerima beberapa kontribusi luar biasa
dari orang di komunitas
dan kami sedang mengerjakan beberapa perubahan.
Masih ada pekerjaan untuk dilakukan,
tapi inilah sekilas tentang apa yang dapat Anda harapkan.
Ini penayang yang kami tulis untuk login Auth menggunakan email dan sandi.
Ia mengembalikan masa depan gabungan
dari hasil data Auth atau error terkait.
Ini sedikit disederhanakan, tetapi di pipeline ini,
kami mengekstrak pengguna, mengganti kesalahan dengan nihil,
dan menetapkannya ke properti pengguna login kami
yang direpresentasikan di UI.
Kami memiliki banyak penayang di STK yang berbeda
guna membantu aliran data Async Anda.
Anda dapat memantau kemajuan dalam API gabungan kami
dengan proyek GitHub yang kami siapkan. Kemajuan Combine yang menarik tak hanya
dengan kode pengendali Async. Kami dekat untuk melihat Async/await
dalam versi rilis dari rantai alat Swift.
Mari kita lihat lagi proses login dengan email dan sandi,
membandingkan pengendali penyelesaian dengan Async/await.
Kita gunakan pengendali penyelesaian untuk menangani aliran kontrol.
Di pengendali penyelesaian, kita mungkin ingin memanggil lebih banyak asinkron
yang dapat mengarah pada piramida malapetaka klasik.
Bagaimana Async/await mengubah panggilan ini?
Alih-alih mengelola status sepenuhnya di blok pengendali penyelesaian,
ini terlihat lebih seperti kode sinkron dan lebih mudah untuk dinalar.
Hal sama dapat dilakukan untuk panggilan Async lainnya
dan akan lebih sederhana untuk mempertahankan state
dan memastikan kesalahan ditangani dengan tepat.
Sekarang saya kembalikan ke Chen untuk demo yang menarik.
Terima kasih, Ryan.
Mari bahas cara membuat aplikasi smartwatch independen dengan Firebase.
Misalnya ingin melacak asupan kopi harian di jam tangan Anda.
Hal keren tentang aplikasi smartwatch independen adalah dapat digunakan tanpa
menyinkronkan ke ponsel.
Firebase berupaya mengembangkan aplikasi smartwatch lebih mudah
dengan menghubungkan jam langsung ke layanan Firebase Cloud.
Kami memiliki beberapa produk dengan dukungan komunitas untuk WatchOS
sehingga Anda dapat, misalnya, mengirim notifikasi push
dari konsol Firebase langsung ke aplikasi smartwatch Anda.
Sinkronkan progres asupan kopi Anda dengan database real-time kami
tanpa ponsel pendamping.
Atau download gambar dari penyimpanan cloud langsung ke jam Anda.
Yang perlu diketahui adalah aplikasi yang disiapkan di konsol
harus cocok satu per satu dengan aplikasi di Apple Store Connect.
Jika aplikasi mencakup beberapa platform, gunakan satu aplikasi berserat
dan plist info layanan Google untuk semua platform tempat aplikasi berjalan.
Ini juga berlaku untuk ekstensi aplikasi iOS.
Misal, jika aplikasi memiliki aplikasi iOS, aplikasi Mac, dan target widget,
cukup impor file plist info server aplikasi utama Google ke semua target.
Sekarang setelah Anda berhasil menyiapkan produk Firebase
lalu mengimpor file plist ke kode X, mari kembali ke cara mengirim
notifikasi push langsung ke aplikasi smartwatch.
Kita gunakan siklus proses SwiftUI terbaru.
Jadi, Anda akan melihat tidak ada delegasi ekstensi yang tersedia.
Ini karena siklus proses SwiftUI, secara default,
tidak menyertakan delegasi jenis aplikasi atau ekstensi.
Yang Anda lakukan di sini adalah menggunakan adaptor delegasi WKExtension
untuk memasukkan delegasi ke aplikasi tempat menambahkan kode
untuk meminta izin notifikasi push WatchOS
dan menangani semua API Firebase SDK yang butuh keberadaan delegasi aplikasi.
Untuk kasus ini, Anda perlu menyetel apnsToken ke messaging SDK.
Dulu, langkah ini ditangani secara otomatis oleh fitur pesan
saat swizzling diaktifkan.
Namun, saat swizzling menjadi lebih rapuh,
kami tidak lagi merekomendasikan pendekatan ini di WatchOS.
Sebagai gantinya, Anda perlu menerapkan akta terdaftar
untuk metode notifikasi jarak jauh dari delegasi WKExtension
untuk menyetel apnsToken ke fitur pesan secara manual.
Hal yang sama berlaku untuk aplikasi iOS jika menggunakan siklus proses SwiftUI.
Anda memerlukan adaptor yang didelegasikan aplikasi UI
untuk memasukkan delegasi aplikasi Anda dari kit UI.
Anda bisa terapkan kode yang perlu keberadaan delegasi aplikasi.
Izinkan saya menunjukkan cuplikan kode cara download gambar gemerlap lucu
langsung ke aplikasi smartwatch. Kami menggunakan penyimpanan Firebase.
Apakah Anda memperhatikan kode yang sama persis
juga dapat berjalan di aplikasi iOS?
Ya, karena penyimpanan Firebase
tidak memerlukan API kunci jam khusus seperti fitur pesan.
Anda dapat memiliki kode yang hampir identik
untuk aplikasi WatchOS, iOS, tvOS, macOS Anda.
Kami membuka beberapa dukungan ekstensi aplikasi
karena mereka sangat membantu mempermudah
pengguna mengakses aplikasi dan melakukan banyak hal menyenangkan.
Ambil widget sebagai contoh.
Ekstensi widget adalah cara terbaik menyajikan informasi aplikasi
dan membuatnya lebih menarik untuk diklik.
Berikut cuplikan kode di mana Anda dapat menarik gambar
menggunakan penyimpanan untuk ekstensi widget Anda.
Dengan itu, Anda mendapat yang gemerlap di kit widget Anda.
Ini cara bagus menampilkan beberapa info penting aplikasi kepada pengguna
alih-alih ikon dasar, yang cukup keren.
Selesai sudah.
Kami harap Anda senang membuat aplikasi Apple bersama kami.
Lihat repo GitHub kami.
Ada banyak info berguna yang bisa Anda temukan di sana.
Cobalah, carilah bug, dan mulai diskusi GitHub.
Kami tidak sabar melihat apa yang Anda buat dengan Firebase.
(musik tekno ceria)