Quickstarters
Feature Overview
How to build a backend for SwiftUI?
41 mnt
pendahuluan dalam tutorial ini, anda akan belajar bagaimana membangun backend lengkap untuk sebuah swiftui aplikasi ios menggunakan back4app kami akan menunjukkan kepada anda bagaimana mengintegrasikan parse swift sdk ke dalam proyek swiftui anda dan memanfaatkan fitur fitur utama back4app—seperti manajemen database, fungsi cloud code, rest dan graphql api, otentikasi pengguna, dan kueri waktu nyata—untuk membuat backend yang aman dan dapat diskalakan pendekatan ini membantu anda menyimpan data dengan aman, menjalankan operasi sisi server tanpa mengatur infrastruktur anda sendiri, dan dengan mudah menskalakan aplikasi ios atau aplikasi web sesuai kebutuhan anda juga akan melihat bagaimana pengaturan cepat back4app dan lingkungan yang intuitif dapat secara drastis mengurangi waktu dan usaha dibandingkan dengan mengonfigurasi server dan database anda sendiri secara manual pada akhir, anda akan memahami cara membangun backend untuk swiftui yang dapat diperluas ke pengaturan produksi atau diintegrasikan dengan logika dan api kustom mari kita mulai membuat backend yang kuat, dapat diskalakan dengan overhead minimal! prasyarat akun back4app dan proyek back4app baru memulai dengan back4app https //www back4app com/docs/get started/new parse app jika anda tidak memiliki akun, anda dapat membuat satu secara gratis ikuti panduan di atas untuk menyiapkan proyek anda lingkungan pengembangan swiftui dasar anda akan memerlukan xcode yang terinstal di mesin anda dan proyek aplikasi swiftui atau ios dasar yang sudah disiapkan swift package manager atau cocoapods untuk menambahkan parse swift sdk dokumentasi parse swift sdk https //github com/netreconlab/parse swift keterampilan dengan swift dan swiftui jika anda baru mengenal swiftui, tinjau dokumentasi swiftui apple https //developer apple com/documentation/swiftui sebelum memulai pastikan semua ini sudah siap sebelum anda mulai memiliki proyek back4app anda yang sudah disiapkan dan lingkungan swiftui lokal anda siap akan membantu anda mengikuti dengan lebih mudah langkah 1 – menyiapkan proyek back4app buat proyek baru langkah pertama dalam membangun backend swiftui anda di back4app adalah membuat proyek baru jika anda belum membuat satu, ikuti langkah langkah ini masuk ke akun back4app anda klik tombol “aplikasi baru” di dasbor back4app anda beri nama aplikasi anda (misalnya, “swiftui backend tutorial”) setelah proyek dibuat, anda akan melihatnya terdaftar di dasbor back4app anda proyek ini akan menjadi dasar untuk semua konfigurasi backend yang dibahas dalam tutorial ini sambungkan parse swift sdk back4app bergantung pada platform parse untuk mengelola data anda, menyediakan fitur real time, menangani otentikasi pengguna, dan banyak lagi menghubungkan aplikasi swiftui anda ke back4app melibatkan pemasangan parse swift sdk dan menginisialisasinya dengan kredensial dari dasbor back4app anda ambil kunci parse anda di dasbor back4app anda, navigasikan ke “pengaturan aplikasi” atau bagian “keamanan & kunci” untuk menemukan id aplikasi dan kunci klien (atau kunci javascript) anda juga akan menemukan url server parse (sering dalam format https //parseapi back4app com ) instal sdk parse swift jika menggunakan swift package manager , buka proyek anda di xcode dan kemudian file → tambahkan paket → masukkan url https //github com/netreconlab/parse swift git pilih “hingga versi utama berikutnya” dari aturan versi dan konfirmasi jika menggunakan cocoapods pod 'parseswiftog' inisialisasi parse di aplikasi anda misalnya, di struktur aplikasi @main struct myapp app { init() { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } var body some scene { windowgroup { contentview() } } } dengan menyelesaikan langkah ini, anda telah membangun koneksi yang aman antara front end swiftui anda dan backend back4app semua permintaan dan transaksi data ditangani oleh parse swift sdk, mengurangi kompleksitas panggilan rest atau graphql manual (meskipun anda masih dapat menggunakannya jika diperlukan) langkah 2 – menyiapkan database menyimpan dan mengambil data dengan proyek back4app anda yang sudah disiapkan dan parse swift sdk yang terintegrasi, anda sekarang dapat mulai menyimpan dan mengambil data di bawah ini adalah contoh parseobject sederhana misalkan kita memiliki sebuah todo struct import parseswift struct todo parseobject { // parseobject conformance var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } menyimpan todo baru func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { let savedtodo = try await todo save() print("todo saved successfully \\(savedtodo)") } catch { print("error saving todo \\(error)") } } mengambil semua todos func fetchtodos() async { do { let todos = try await todo query() find() print("fetched todos \\(todos)") } catch { print("error fetching todos \\(error)") } } sebagai alternatif, anda dapat menggunakan back4app’s rest api endpoints, atau graphql curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo graphql mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } memiliki beberapa opsi (parse swift sdk, rest, graphql) memungkinkan anda memilih pendekatan yang paling sesuai untuk alur kerja anda desain skema dan tipe data secara default, parse memungkinkan pembuatan skema secara langsung , tetapi anda juga dapat mendefinisikan kelas anda di dasbor back4app untuk kontrol lebih navigasikan ke bagian “database” di dasbor back4app anda buat kelas baru (misalnya, “todo”) dan tambahkan kolom yang relevan, seperti title (string) dan iscompleted (boolean) back4app mendukung berbagai jenis data string , number , boolean , object , date , file , pointer , array , relation , geopoint , dan polygon anda dapat memilih jenis yang sesuai untuk setiap field back4app juga menyediakan ai agent yang dapat membantu anda merancang model data anda buka ai agent dari dasbor aplikasi anda deskripsikan model data anda dalam bahasa sederhana (misalnya, “tolong buat skema kelas todo baru ”) biarkan ai agent menghasilkan skema untuk anda data relasional jika anda memiliki data relasional—katakanlah, sebuah kategori objek yang menunjuk ke beberapa todo item—anda dapat menggunakan penunjuk atau hubungan di parse misalnya struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var name string? } struct todo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var title string? var category pointer\<category>? } func createtodowithcategory(categoryid string, title string) async { var todo = todo() todo title = title // construct pointer let categorypointer = pointer\<category>(objectid categoryid) todo category = categorypointer do { try await todo save() } catch { print("error creating todo with category relationship \\(error)") } } saat melakukan kueri, anda juga bisa menyertakan data pointer let query = todo query() include("category") do { let todoswithcategory = try await query find() print("todos with category \\(todoswithcategory)") } catch { print("error fetching todos \\(error)") } kueri langsung untuk pembaruan waktu nyata, back4app menyediakan kueri langsung dalam aplikasi swiftui anda, anda dapat berlangganan untuk perubahan dalam kelas tertentu aktifkan kueri langsung di dasbor back4app anda di bawah pengaturan server berlangganan dalam kode // example snippet using the parse swift subscription system task { let subscription = try todo query() subscribecallback() // react to events for await event in subscription { switch event { case entered(let todo) print("new todo entered \\(todo)") case updated(let todo) print("todo updated \\(todo)") case left(let todo) print("todo deleted or left subscription \\(todo)") default break } } } setiap kali sebuah todo dibuat, diperbarui, atau dihapus di server, aplikasi anda akan diberi tahu secara waktu nyata fitur ini sangat berguna untuk aplikasi kolaboratif atau dinamis yang memerlukan sinkronisasi data segera langkah 3 – menerapkan keamanan dengan acl dan clp mekanisme keamanan back4app back4app menyediakan access control lists (acls) dan class level permissions (clps) untuk keamanan data yang kuat ini memungkinkan anda membatasi siapa yang dapat membaca atau menulis data berdasarkan objek atau kelas, memastikan hanya pengguna yang berwenang yang dapat memodifikasi data anda access control lists (acls) sebuah acl diterapkan pada objek individu misalnya, untuk memastikan hanya pengguna tertentu yang dapat membaca/menulis todo func createprivatetodo(title string, user user) async { var todo = todo() todo title = title var acl = parseacl() // grant read/write to the owner only acl setreadaccess(true, for user) acl setwriteaccess(true, for user) todo acl = acl do { let saved = try await todo save() print("private todo saved \\(saved)") } catch { print("error saving private todo \\(error)") } } class level permissions (clps) clps mengatur default seluruh kelas, seperti apakah kelas tersebut dapat dibaca atau ditulis secara publik, atau jika hanya peran tertentu yang dapat mengaksesnya pergi ke dashboard back4app dan pilih aplikasi anda buka bagian database , pilih sebuah kelas (misalnya, todo ) buka tab class level permissions konfigurasi default seperti “memerlukan autentikasi” atau “tidak ada akses ” izin ini menetapkan dasar yang luas, sementara acl memungkinkan anda menyesuaikan keamanan di tingkat objek menggabungkan keduanya memastikan model keamanan yang kuat untuk detail lebih lanjut, lihat pedoman keamanan aplikasi https //www back4app com/docs/security/parse security langkah 4 – menulis dan menerapkan fungsi cloud cloud code memungkinkan anda menjalankan kode swift (atau javascript) sisi server kustom tanpa mengelola server ini ideal untuk menambahkan logika bisnis, validasi data, pemicu, atau integrasi backend yang tidak boleh dijalankan dari klien cara kerjanya tulis cloud code anda dalam file seperti main js (javascript) atau manfaatkan lingkungan cloud code berbasis swift terapkan ke proyek back4app anda kode dijalankan di lingkungan parse server, jadi anda tidak perlu memelihara server anda sendiri panggil cloud code anda dari klien melalui sdk swift, rest, atau graphql kasus penggunaan umum logika bisnis validasi data yang kompleks, perhitungan bidang, atau integrasi eksternal pemicu data eksekusi logika saat objek disimpan, diperbarui, atau dihapus keamanan lindungi operasi sensitif dari klien dengan menjalankannya di sisi server contoh fungsi di bawah ini adalah contoh javascript cloud code (karena cloud code terutama menggunakan js di back4app) yang menghitung panjang teks main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); mengdeploy melalui cli instal back4app cli https //www back4app com/docs/local development/parse cli konfigurasi kunci akun anda b4a configure accountkey deploy cloud code b4a deploy memanggil fungsi anda dari swift struct cloudfunction { static func calculatetextlength(text string) async throws > int { do { if let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) as? \[string any], let length = result\["length"] as? int { return length } } catch { throw error } return 0 } } task { do { let len = try await cloudfunction calculatetextlength(text "hello back4app") print("text length \\(len)") } catch { print("error calling cloud function \\(error)") } } via rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength langkah 5 – mengonfigurasi autentikasi pengguna autentikasi pengguna di back4app back4app menggunakan parseuser kelas untuk menangani autentikasi yang aman hashing kata sandi, token sesi, dan data ditangani secara otomatis, memungkinkan anda fokus pada logika aplikasi mengatur autentikasi pengguna daftar pengguna baru struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // required fields var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupuser(username string, password string, email string) async { var newuser = user() newuser username = username newuser password = password newuser email = email do { try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } masuk pengguna yang ada func loginuser(username string, password string) async { do { let user = try await user login(username username, password password) print("user logged in \\(user)") } catch { print("error logging in user \\(error)") } } token sesi ditangani secara otomatis oleh parse anda dapat keluar func logout() async { do { try await user logout() print("user logged out ") } catch { print("error logging out \\(error)") } } integrasi login sosial integrasi dengan google , apple , facebook , dll , dimungkinkan dengan pengaturan tambahan periksa dokumentasi login sosial https //www back4app com/docs/platform/sign in with apple untuk detail lebih lanjut verifikasi email dan reset kata sandi aktifkan verifikasi email di dasbor back4app anda, dan konfigurasikan email reset kata sandi sehingga pengguna dapat memulihkan akun mereka dengan aman untuk reset kata sandi try await user passwordreset(email "user\@example com") langkah 6 – menangani penyimpanan file mengunggah dan mengambil file parse menyertakan parsefile untuk menangani unggahan file func uploadimage(filedata data) async { let parsefile = parsefile(name "photo jpg", data filedata) do { let savedfile = try await parsefile save() print("file saved at \\(savedfile url ?? "no url")") } catch { print("error uploading file \\(error)") } } lampirkan ke parseobject struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(filedata data) async { var photo = photo() photo imagefile = parsefile(name "image jpg", data filedata) do { = try await photo save() } catch { print("error saving photo object \\(error)") } } keamanan file secara default, file dapat diakses melalui url publik anda dapat mengonfigurasi keamanan file menggunakan pengaturan parse server https //www back4app com/docs/platform/file storage untuk kontrol file yang lebih ketat, pastikan hanya pengguna yang terautentikasi atau peran tertentu yang dapat mengunggah atau mengambil file langkah 7 – menjadwalkan tugas dengan cloud jobs cloud jobs memungkinkan anda untuk menjadwalkan dan menjalankan tugas berulang seperti membersihkan data atau mengirim email // main js (javascript cloud code) parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); setelah penerapan, jadwalkan itu melalui dasbor back4app di bawah pengaturan server > pekerjaan latar belakang langkah 8 – mengintegrasikan webhooks webhooks memungkinkan aplikasi back4app anda mengirim permintaan http ke layanan eksternal (seperti stripe) setiap kali peristiwa tertentu terjadi ini berguna untuk menghubungkan ke alat pihak ketiga atau integrasi sisi server lainnya pergi ke webhooks di dasbor back4app anda > lainnya > webhooks tambahkan endpoint (misalnya, https //your service com/webhook ) konfigurasi peristiwa mana (misalnya, catatan baru di kelas todo) yang akan memicu webhook sebagai contoh, anda dapat mengirim pesan slack setiap kali pengguna membuat todo baru ini membantu anda menjaga layanan eksternal tetap sinkron dengan data back4app anda langkah 9 – menjelajahi panel admin back4app aplikasi admin back4app adalah antarmuka manajemen berbasis web untuk pengguna non teknis untuk melakukan operasi crud pada data anda ini menyediakan ui yang ramah pengguna yang terpisah dari dasbor parse, sehingga lebih mudah untuk mengelola data dalam produksi mengaktifkan aplikasi admin pergi ke dasbor aplikasi > lainnya > aplikasi admin dan klik “aktifkan aplikasi admin ” buat pengguna admin , yang secara otomatis menghasilkan peran admin dan kelas terkait pilih subdomain untuk antarmuka admin, lalu masuk untuk mengelola data anda melalui ui yang sederhana dengan klik dan pilih kesimpulan dengan mengikuti panduan komprehensif ini, anda telah belajar cara membangun backend untuk swiftui menggunakan back4app dan parse swift sdk cara menyimpan data dengan aman menggunakan skema kelas kustom dan hubungan cara mengintegrasikan kueri waktu nyata (kueri langsung) untuk pembaruan data segera cara menerapkan langkah langkah keamanan menggunakan acl dan clp untuk melindungi dan mengelola akses data cara menjalankan logika bisnis melalui cloud code cara menangani penyimpanan file , otentikasi, dan penjadwalan tugas latar belakang dengan cloud jobs cara mengintegrasikan aplikasi anda dengan layanan eksternal menggunakan webhook dengan keterampilan ini, anda dapat membangun sebuah aplikasi ios atau aplikasi web yang mudah dikelola, aman, dan siap untuk skala jelajahi fitur fitur yang lebih canggih—seperti izin berbasis peran, notifikasi push, atau caching yang lebih canggih anda juga dapat mengintegrasikan api lain atau menyesuaikan cloud code anda untuk memenuhi kasus penggunaan khusus selamat coding , dan nikmati membangun aplikasi hebat di back4app! langkah selanjutnya aplikasi swiftui siap produksi perluas backend ini untuk menangani model data yang lebih kompleks, caching, dan peningkatan kinerja fitur lanjutan selami lebih dalam ke dalam otentikasi khusus, akses berbasis peran, atau integrasi api pihak ketiga (seperti stripe) jelajahi dokumen resmi back4app untuk penjelasan lebih dalam tentang keamanan sisi server , analisis log, dan penyetelan database yang lebih lanjut periksa tutorial tambahan obrolan waktu nyata, layanan berbasis lokasi, atau aplikasi multi tenant—gabungkan metode yang dipelajari di sini dengan api eksternal untuk menciptakan solusi canggih di dunia nyata