Quickstarters
Feature Overview
Wie man ein Backend für SwiftUI erstellt?
42 min
einführung in diesem tutorial lernen sie, wie sie ein vollständiges backend für eine swiftui ios app mit back4app erstellen wir zeigen ihnen, wie sie das parse swift sdk in ihr swiftui projekt integrieren und die wichtigsten funktionen von back4app nutzen können – wie datenbankverwaltung, cloud code funktionen, rest und graphql apis, benutzerauthentifizierung und echtzeitanfragen – um ein sicheres, skalierbares backend zu erstellen dieser ansatz hilft ihnen, daten sicher zu speichern, serverseitige operationen durchzuführen, ohne ihre eigene infrastruktur einzurichten, und ihre ios app oder web app nach bedarf einfach zu skalieren sie werden auch sehen, wie die schnelle einrichtung und die intuitive umgebung von back4app die zeit und den aufwand im vergleich zur manuellen konfiguration ihres eigenen servers und ihrer datenbank drastisch reduzieren können am ende werden sie verstehen, wie man ein backend für swiftui erstellt, das auf eine produktionsumgebung erweitert oder mit benutzerdefinierter logik und apis integriert werden kann lassen sie uns mit der erstellung eines robusten, skalierbaren backends mit minimalem aufwand beginnen! voraussetzungen ein back4app konto und ein neues back4app projekt erste schritte mit back4app https //www back4app com/docs/get started/new parse app wenn sie kein konto haben, können sie eines kostenlos erstellen befolgen sie die obige anleitung, um ihr projekt vorzubereiten grundlegende swiftui entwicklungsumgebung sie benötigen xcode auf ihrem computer installiert und ein grundlegendes swiftui oder ios app projekt eingerichtet swift package manager oder cocoapods um das parse swift sdk hinzuzufügen dokumentation des parse swift sdk https //github com/netreconlab/parse swift vertrautheit mit swift und swiftui wenn sie neu in swiftui sind, überprüfen sie apples swiftui dokumentation https //developer apple com/documentation/swiftui bevor sie beginnen stellen sie sicher, dass alles bereit ist, bevor sie beginnen ihr back4app projekt einzurichten und ihre lokale swiftui umgebung vorzubereiten, wird ihnen helfen, leichter folgen zu können schritt 1 – einrichten des back4app projekts ein neues projekt erstellen der erste schritt beim erstellen ihres swiftui backends auf back4app besteht darin, ein neues projekt zu erstellen wenn sie noch keines erstellt haben, folgen sie diesen schritten melden sie sich bei ihrem back4app konto an klicken sie auf die schaltfläche „neue app“ in ihrem back4app dashboard geben sie ihrer app einen namen (z b „swiftui backend tutorial“) sobald das projekt erstellt ist, wird es in ihrem back4app dashboard aufgeführt dieses projekt wird die grundlage für alle backend konfigurationen sein, die in diesem tutorial besprochen werden verbinden sie das parse swift sdk back4app basiert auf der parse plattform, um ihre daten zu verwalten, echtzeitfunktionen bereitzustellen, die benutzerauthentifizierung zu handhaben und mehr die verbindung ihrer swiftui anwendung mit back4app umfasst die installation des parse swift sdk und die initialisierung mit den anmeldeinformationen aus ihrem back4app dashboard rufen sie ihre parse schlüssel ab gehen sie in ihrem back4app dashboard zu den „app einstellungen“ oder zum abschnitt „sicherheit & schlüssel“, um ihre anwendungs id und client schlüssel (oder javascript schlüssel) zu finden sie finden auch die parse server url (oft im format https //parseapi back4app com ) installieren sie das parse swift sdk wenn sie swift package manager , öffnen sie ihr projekt in xcode , und dann datei → pakete hinzufügen → geben sie die url ein https //github com/netreconlab/parse swift git wählen sie „bis zur nächsten hauptversion“ aus den versionsregeln und bestätigen sie wenn sie cocoapods pod 'parseswiftog' initialisieren sie parse in ihrer app zum beispiel in ihrer app struktur @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() } } } durch das abschließen dieses schrittes haben sie eine sichere verbindung zwischen ihrem swiftui frontend und dem back4app backend hergestellt alle anfragen und datenübertragungen werden vom parse swift sdk verarbeitet, was die komplexität manueller rest oder graphql aufrufe verringert (obwohl sie diese bei bedarf weiterhin verwenden können) schritt 2 – datenbank einrichten daten speichern und abfragen mit ihrem back4app projekt, das eingerichtet und das parse swift sdk integriert ist, können sie nun beginnen, daten zu speichern und abzurufen unten finden sie ein einfaches parseobject beispiel angenommen, wir haben eine todo struktur 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? } ein neues todo speichern 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)") } } alle todos abfragen func fetchtodos() async { do { let todos = try await todo query() find() print("fetched todos \\(todos)") } catch { print("error fetching todos \\(error)") } } alternativ können sie back4app’s rest api endpunkte oder 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 } } } die möglichkeit, mehrere optionen (parse swift sdk, rest, graphql) zu haben, ermöglicht es ihnen, den ansatz zu wählen, der am besten zu ihrem arbeitsablauf passt schema design und datentypen standardmäßig erlaubt parse schemaerstellung on the fly , aber sie können auch ihre klassen im back4app dashboard definieren, um mehr kontrolle zu haben navigieren sie zum abschnitt „datenbank“ in ihrem back4app dashboard erstellen sie eine neue klasse (z b „todo“) und fügen sie relevante spalten hinzu, wie title (string) und iscompleted (boolean) back4app unterstützt verschiedene datentypen string , zahl , boolean , objekt , datum , datei , zeiger , array , relation , geopoint , und polygon sie können den geeigneten typ für jedes feld auswählen back4app bietet auch einen ai agenten an, der ihnen helfen kann, ihr datenmodell zu entwerfen öffnen sie den ai agenten von ihrem app dashboard beschreiben sie ihr datenmodell in einfacher sprache (z b „bitte erstellen sie ein neues todo klassenschema “) lassen sie den ai agenten das schema für sie generieren relationale daten wenn sie relationale daten haben—sagen wir, ein kategorie objekt, das auf mehrere todo elemente verweist—können sie zeiger oder beziehungen in parse verwenden zum beispiel 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)") } } das ist ein beispiel für die verwendung von zeigern und beziehungen in parse beim abfragen können sie auch include zeigerdaten einbeziehen let query = todo query() include("category") do { let todoswithcategory = try await query find() print("todos with category \\(todoswithcategory)") } catch { print("error fetching todos \\(error)") } echtzeitabfragen für echtzeit updates bietet back4app live queries in ihrer swiftui app können sie änderungen in einer bestimmten klasse abonnieren aktivieren sie live queries in ihrem back4app dashboard unter servereinstellungen abonnieren im code // 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 } } } immer wenn ein todo auf dem server erstellt, aktualisiert oder gelöscht wird, wird ihre app in echtzeit benachrichtigt diese funktion ist sehr nützlich für kollaborative oder dynamische apps, die eine sofortige datensynchronisierung erfordern schritt 3 – anwendung von sicherheit mit acls und clps back4app sicherheitsmechanismus back4app bietet zugriffskontrolllisten (acls) und klassenebene berechtigungen (clps) für robuste datensicherheit diese ermöglichen es ihnen, einzuschränken, wer daten auf objekt oder klassenbasis lesen oder schreiben kann, und stellen sicher, dass nur autorisierte benutzer ihre daten ändern können zugriffskontrolllisten (acls) eine acl wird auf einzelne objekte angewendet zum beispiel, um sicherzustellen, dass nur ein bestimmter benutzer ein todo lesen/schreiben kann 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)") } } klassenebene berechtigungen (clps) clps regeln die standardwerte einer gesamten klasse, wie z b ob die klasse öffentlich lesbar oder schreibbar ist oder ob nur bestimmte rollen darauf zugreifen können gehen sie zum back4app dashboard und wählen sie ihre app aus öffnen sie den datenbank abschnitt, wählen sie eine klasse (z b todo ) öffnen sie die klassenebene berechtigungen registerkarte konfigurieren sie standardwerte wie „erfordert authentifizierung“ oder „kein zugriff “ diese berechtigungen setzen eine breite basis, während acls ihnen ermöglichen, die sicherheit auf objektebene fein abzustimmen die kombination beider sorgt für ein starkes sicherheitsmodell für weitere details siehe app sicherheitsrichtlinien https //www back4app com/docs/security/parse security schritt 4 – schreiben und bereitstellen von cloud funktionen cloud code ermöglicht es ihnen, benutzerdefinierten serverseitigen swift (oder javascript) code auszuführen, ohne server verwalten zu müssen es ist ideal, um geschäftslogik, datenvalidierungen, trigger oder backend integrationen hinzuzufügen, die nicht vom client aus ausgeführt werden sollten wie es funktioniert schreiben sie ihren cloud code in einer datei wie main js (javascript) oder nutzen sie die auf swift basierende cloud code umgebung bereitstellen in ihrem back4app projekt der code wird in der umgebung des parse servers ausgeführt, sodass sie keinen eigenen server warten müssen aufrufen sie ihren cloud code vom client aus über das swift sdk, rest oder graphql typische anwendungsfälle geschäftslogik komplexe datenvalidierungen, feldberechnungen oder externe integrationen daten trigger logik ausführen, wenn ein objekt gespeichert, aktualisiert oder gelöscht wird sicherheit schützen sie sensible operationen vom client, indem sie sie serverseitig ausführen beispiel funktion unten ist ein beispiel javascript cloud code (da cloud code hauptsächlich js auf back4app verwendet), der die textlänge berechnet main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); bereitstellung über die cli installieren sie die back4app cli https //www back4app com/docs/local development/parse cli konfigurieren sie ihren kontoschlüssel b4a configure accountkey bereitstellen cloud code b4a deploy aufrufen ihrer funktion von 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 schritt 5 – benutzer authentifizierung konfigurieren benutzer authentifizierung in back4app back4app verwendet die parseuser klasse zur sicheren authentifizierung passwort hashing, sitzungstoken und daten werden automatisch verarbeitet, sodass sie sich auf die logik der app konzentrieren können einrichten der benutzer authentifizierung registrieren sie einen neuen benutzer 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)") } } melden sie sich als bestehender benutzer an 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)") } } sitzungstoken werden automatisch von parse verwaltet sie können sich abmelden func logout() async { do { try await user logout() print("user logged out ") } catch { print("error logging out \\(error)") } } integration von sozialem login integrationen mit google , apple , facebook , usw sind mit zusätzlicher einrichtung möglich überprüfen sie die dokumentation zum sozialen login https //www back4app com/docs/platform/sign in with apple für weitere details e mail verifizierung und passwortzurücksetzung aktivieren sie die e mail verifizierung in ihrem back4app dashboard und konfigurieren sie e mails zur passwortzurücksetzung, damit benutzer ihre konten sicher wiederherstellen können für passwortzurücksetzungen try await user passwordreset(email "user\@example com") schritt 6 – umgang mit dateispeicher hochladen und abrufen von dateien parse enthält parsefile zum umgang mit datei uploads 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)") } } fügen sie es zu einem 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)") } } dateisicherheit standardmäßig sind dateien über eine öffentliche url zugänglich sie können die dateisicherheit mit parse server einstellungen https //www back4app com/docs/platform/file storage für strengere datei kontrollen stellen sie sicher, dass nur authentifizierte benutzer oder bestimmte rollen dateien hochladen oder abrufen können schritt 7 – aufgaben mit cloud jobs planen cloud jobs ermöglichen es ihnen, wiederkehrende aufgaben wie das bereinigen von daten oder das versenden von e mails zu planen und auszuführen // 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); } }); nach der bereitstellung, planen sie es über das back4app dashboard unter servereinstellungen > hintergrundjobs schritt 8 – webhooks integrieren webhooks ermöglichen es ihrer back4app app, http anfragen an externe dienste (wie stripe) zu senden, wann immer bestimmte ereignisse auftreten dies ist hilfreich, um in drittanbieter tools oder andere serverseitige integrationen einzuhaken gehen sie zu webhooks in ihrem back4app dashboard > mehr > webhooks fügen sie einen endpunkt hinzu (z b https //your service com/webhook ) konfigurieren sie welche ereignisse (z b neuer datensatz in der todo klasse) den webhook auslösen zum beispiel könnten sie eine slack nachricht senden, wann immer ein benutzer eine neue aufgabe erstellt dies hilft ihnen, externe dienste mit ihren back4app daten synchron zu halten schritt 9 – erkundung des back4app admin panels die back4app admin app ist eine webbasierte verwaltungsoberfläche für nicht technische benutzer, um crud operationen an ihren daten durchzuführen sie bietet eine benutzerfreundliche benutzeroberfläche, die vom parse dashboard getrennt ist, was die verwaltung von daten in der produktion erleichtert aktivierung der admin app gehen sie zu ihrem app dashboard > mehr > admin app und klicken sie auf „admin app aktivieren “ erstellen sie einen admin benutzer , der automatisch eine admin rolle und zugehörige klassen generiert wählen sie eine subdomain für die admin oberfläche und melden sie sich dann an, um ihre daten über eine einfache point and click benutzeroberfläche zu verwalten fazit indem sie diesem umfassenden leitfaden folgen, haben sie gelernt wie man ein backend für swiftui mit back4app und dem parse swift sdk erstellt wie man daten sicher mit benutzerdefinierten klassenschemas und beziehungen speichert wie man echtzeitanfragen (live queries) für sofortige datenaktualisierungen integriert wie man sicherheitsmaßnahmen mit acls und clps anwendet, um den datenzugriff zu schützen und zu verwalten wie man geschäftslogik über cloud code ausführt wie man die dateispeicherung , authentifizierung und planung von hintergrundaufgaben mit cloud jobs verwaltet wie man ihre app mit externen diensten über webhooks integriert mit diesen fähigkeiten können sie eine ios app oder eine web app erstellen, die einfach zu verwalten, sicher und bereit zum skalieren ist erkunden sie weitere fortgeschrittene funktionen – wie rollenbasierte berechtigungen, push benachrichtigungen oder fortgeschrittenes caching sie können auch andere apis integrieren oder ihren cloud code anpassen, um spezielle anwendungsfälle zu erfüllen viel spaß beim programmieren , und genieße den aufbau großartiger apps auf back4app! nächste schritte produktionsbereite swiftui app erweitere dieses backend, um komplexere datenmodelle, caching und leistungsverbesserungen zu handhaben erweiterte funktionen tauche tiefer in spezialisierte authentifizierung, rollenbasierte zugriffe oder integrationen von drittanbieter apis (wie stripe) ein erkunde die offiziellen dokumente von back4app für tiefere einblicke in server seitige sicherheit, protokollanalyse und erweiterte datenbankoptimierung überprüfe zusätzliche tutorials echtzeit chat, standortbasierte dienste oder multi tenant anwendungen – kombiniere die hier gelernten methoden mit externen apis, um anspruchsvolle, reale lösungen zu schaffen