Quickstarters
Feature Overview
Wie man ein Backend für MacOS erstellt?
45 min
einführung in diesem tutorial lernen sie wie man ein backend für macos mit back4app und dem parse swift sdk erstellt wir werden die integration wesentlicher back4app funktionen durchgehen – wie datenbankverwaltung, cloud code funktionen, rest und graphql apis, benutzerauthentifizierung und echtzeitanfragen (live queries) – um ein sicheres, skalierbares und robustes backend zu erstellen, das nahtlos mit ihrer macos anwendung kommuniziert sie werden auch sehen, wie die schnelle einrichtung und die intuitive umgebung von back4app die zeit und den aufwand im vergleich zur manuellen konfiguration von servern und datenbanken drastisch reduzieren können unterwegs werden sie praktische erfahrungen mit wichtigen funktionen sammeln, einschließlich fortschrittlicher sicherheitsfunktionen, der planung von aufgaben mit cloud jobs und der einrichtung von webhooks für externe integrationen am ende dieses tutorials sind sie gut vorbereitet, um dieses grundlegende setup in eine produktionsbereite macos anwendung zu erweitern oder bei bedarf benutzerdefinierte logik und drittanbieter apis einfach zu integrieren diese methode zu meistern wird ihnen ermöglichen, ihre arbeitsabläufe zu optimieren und zu lernen, wie man schnell und effizient ein backend für macos erstellt voraussetzungen um dieses tutorial abzuschließen, benötigen sie 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 folgen sie der obigen anleitung, um ihr projekt vorzubereiten eine macos entwicklungsumgebung (xcode) sie können xcode aus dem mac app store https //apps apple com/us/app/xcode/id497799835 installieren swift package manager oder cocoapods zum installieren des parse swift sdk parse swift dokumentation https //github com/netreconlab/parse swift grundkenntnisse in swift und der entwicklung von macos anwendungen offizielle dokumentation von apple https //developer apple com/documentation/swift vertrautheit mit swiftui oder appkit ist hilfreich stellen sie sicher, dass sie alle diese voraussetzungen erfüllt haben, bevor sie beginnen ihr back4app projekt eingerichtet und ihre lokale macos entwicklungsumgebung bereit zu haben, wird ihnen helfen, leichter folgen zu können schritt 1 – einrichten des back4app projekts ein neues projekt erstellen der erste schritt beim erstellen ihres macos 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 „macos 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 macos anwendung mit back4app umfasst die installation des parse swift sdk und die initialisierung mit den anmeldeinformationen aus ihrem back4app dashboard holen sie sich ihre parse schlüssel navigieren sie in ihrem back4app dashboard zu den „app einstellungen“ oder dem abschnitt „sicherheit & schlüssel“, um ihre anwendungs id und client schlüssel (oder clientkey ) zu finden sie finden auch die parse server url (häufig im format https //parseapi back4app com ) installieren sie das parse swift sdk in ihrem macos projekt wenn sie swift package manager dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] wenn sie cocoapods , fügen sie dies zu ihrer podfile pod 'parseswiftog' initialisieren sie parse in ihrer macos anwendung (zum beispiel in appdelegate swift wenn sie appkit verwenden, oder in einer swiftui @main struktur, wenn sie eine swiftui app erstellen) import parseswift import swiftui @main struct mymacosapp app { init() { task { do { try await parseswift initialize( applicationid "your application 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 macos frontend (ui) und dem back4app backend hergestellt alle anfragen und datenübertragungen werden sicher über dieses sdk geleitet, wodurch die komplexität manueller rest oder graphql aufrufe verringert wird (obwohl sie diese bei bedarf weiterhin verwenden können) schritt 2 – einrichten der datenbank speichern und abfragen von daten mit ihrem back4app projekt, das eingerichtet und das parse swift sdk in ihre macos app integriert ist, können sie nun mit dem speichern und abrufen von daten beginnen der einfachste weg, ein objekt zu erstellen, besteht darin, eine struktur zu definieren, die parseobject konform ist, und dann save() aufzurufen struct todo parseobject { // parseobject required properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { try await todo save() print("todo saved successfully ") } catch { print("error saving todo \\(error)") } } func fetchtodos() async > \[todo] { let query = todo query() do { return try await query find() } catch { print("error fetching todos \\(error)") return \[] } } alternativ können sie die rest oder graphql api von back4app verwenden 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 back4app bietet auch eine graphql schnittstelle mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } diese vielfältigen optionen ermöglichen es ihnen, datenoperationen auf die weise zu integrieren, die am besten zu ihrem entwicklungsprozess passt – sei es über das parse swift sdk, rest oder graphql schema design und datentypen standardmäßig erlaubt parse schemaerstellung on the fly , aber sie können auch ihre klassen und datentypen 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 titel (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 oder parse automatisch diese spalten erstellen lassen, wenn sie zum ersten mal ein objekt aus ihrer macos app speichern back4app bietet einen ai agenten an, der ihnen helfen kann, ihr datenmodell zu entwerfen öffnen sie den ai agenten von ihrem app dashboard oder im menü beschreiben sie ihr datenmodell in einfacher sprache (z b „bitte erstellen sie eine neue todo app bei back4app mit einem vollständigen klassenschema “) lassen sie den ai agenten das schema für sie erstellen 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 swift verwenden struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom fields 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 createtaskforcategory(categoryobjectid string, title string) async { let pointer = pointer\<category>(objectid categoryobjectid) var todo = todo() todo title = title todo category = pointer do { try await todo save() print("todo linked to category") } catch { print("error creating task with category relationship \\(error)") } } func fetchtodoswithcategory() async { let query = todo query() include("category") do { let todos = try await query find() print("fetched todo items with category \\(todos)") } catch { print("error fetching todos \\(error)") } } live abfragen für echtzeit updates bietet back4app live abfragen durch aktivieren von live abfragen in ihrem back4app dashboard können sie änderungen in einer bestimmten klasse von ihrer macos app aus abonnieren aktivieren sie live abfragen in ihrem back4app dashboard unter den servereinstellungen ihrer app initialisieren sie live abfragen im code (der swift live query client ist noch in der entwicklung, aber sie können community gesteuerte ansätze verwenden oder auf offizielle parse swift updates warten) src/parseconfig swift // example (subject to support in parse swift) // live query’s subdomain // parseswift configuration livequeryserverurl = url(string "wss\ //your subdomain here b4a io")! sobald sie abonniert sind, erhalten sie benachrichtigungen, wann immer ein neues todo erstellt, aktualisiert oder gelöscht wird dies ist besonders wertvoll für kollaborative oder hochinteraktive desktop apps, bei denen mehrere benutzer oder prozesse die neuesten daten sofort sehen müssen schritt 3 – anwendung von sicherheit mit acls und clps back4app sicherheitsmechanismus back4app nimmt sicherheit ernst, indem es zugriffskontrolllisten (acls) und klassenebene berechtigungen (clps) diese funktionen 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, um zu bestimmen, welche benutzer, rollen oder die öffentlichkeit lese /schreiboperationen durchführen können zum beispiel, wenn ihre macos app ein konzept von „privaten aufgaben“ für den aktuell angemeldeten benutzer hat import parseswift func createprivatetodo(title string) async { guard let currentuser = user current else { return } var todo = todo() todo title = title // create an acl granting read/write access only to the owner var acl = parseacl() acl setreadaccess(currentuser, value true) acl setwriteaccess(currentuser, value true) todo acl = acl do { try await todo save() print("private todo saved") } catch { print("error saving private todo \\(error)") } } wenn sie das objekt speichern, hat es eine acl, die verhindert, dass jemand außer dem angegebenen benutzer es lesen oder ändern kann klassenebene berechtigungen (clps) clps regeln die standardberechtigungen einer gesamten klasse, wie ob die klasse öffentlich lesbar oder schreibbar ist oder ob nur bestimmte rollen darauf zugreifen können gehe zu deinem back4app dashboard , wähle deine app aus und öffne den datenbank bereich wähle eine klasse (z b „todo“) öffne die klassenberechtigungen registerkarte konfiguriere deine standardeinstellungen, wie „benötigt authentifizierung“ für lesen oder schreiben oder „kein zugriff“ für die öffentlichkeit schritt 4 – schreiben und bereitstellen von cloud funktionen cloud code ist eine funktion der parse server umgebung, die es dir ermöglicht, benutzerdefinierten javascript code auf der serverseite auszuführen – ohne dass du deine eigenen server oder infrastruktur verwalten musst durch das schreiben von cloud code kannst du dein back4app backend mit zusätzlicher geschäftslogik, validierungen, triggern und integrationen erweitern, die sicher und effizient auf dem parse server ausgeführt werden wie es funktioniert wenn du cloud code schreibst, platzierst du typischerweise deine javascript funktionen, trigger und alle erforderlichen npm module in einer main js datei du stellst diese datei dann in deinem back4app projekt bereit, und sie wird in der parse server umgebung ausgeführt dies ermöglicht es dir, sensible logik serverseitig zu halten typische anwendungsfälle geschäftslogik berechnungen oder transformationen vor dem speichern von daten datenvalidierungen sicherstellen, dass bestimmte felder kriterien erfüllen trigger aktionen ausführen, wenn sich daten ändern integrationen verbindung mit externen apis (z b zahlungen, benachrichtigungen) beispiel funktion // 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 back4app cli installieren sie die cli curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash konfigurieren sie ihren kontoschlüssel b4a configure accountkey bereitstellen sie ihren cloud code b4a deploy aufrufen ihrer funktion von macos aus mit swift import parseswift func gettextlength(text string) async { do { let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) if let resultdict = result as? \[string any], let length = resultdict\["length"] as? int { print("text length \\(length)") } } catch { print("error calling cloud function \\(error)") } } sie können es auch über rest oder graphql aufrufen, genau wie in anderen frameworks schritt 5 – konfigurieren der benutzerauthentifizierung benutzerauthentifizierung in back4app back4app nutzt die parseuser klasse als grundlage für die authentifizierung standardmäßig kümmert sich parse um die passwort hashing, sitzungstoken und sichere speicherung, sodass sie keine komplexen sicherheitsabläufe manuell einrichten müssen einrichten der benutzerauthentifizierung in einer macos anwendung können sie einen neuen benutzer mit folgendem erstellen struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // default properties 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 { newuser = try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } 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)") } } über rest könnte ein login so aussehen curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login sitzungsverwaltung nach einem erfolgreichen login erstellt parse ein sitzungstoken sie können auf den aktuell angemeldeten benutzer zugreifen if let currentuser = user current { print("currently logged in user \\(currentuser username ?? "no username")") } else { print("no user is logged in") } abmelden do { try await user logout() } catch { print("error logging out \\(error)") } integration von sozialem login sie können beliebte anbieter wie google, apple oder facebook integrieren, indem sie authdata detaillierte anweisungen variieren, daher beziehen sie sich auf dokumentation zum sozialen login https //www back4app com/docs/platform/sign in with apple e mail verifizierung und passwortzurücksetzung um die e mail verifizierung und das zurücksetzen des passworts zu aktivieren navigieren sie zu den e mail einstellungen in ihrem back4app dashboard aktivieren sie die e mail verifizierung konfigurieren sie die absenderadresse , e mail vorlagen und ihre benutzerdefinierte domain, falls gewünscht dies verbessert die kontosicherheit, indem benutzer e mails validiert und eine methode zur passwortwiederherstellung bereitgestellt wird schritt 6 – umgang mit dateispeicher hochladen und abrufen von dateien parse enthält die parsefile klasse zum verarbeiten von datei uploads, die back4app sicher speichert func uploadfile(data data) async > parsefile? { let file = parsefile(name "doc txt", data data) do { let savedfile = try await file save() print("file saved ", savedfile url ?? "no url") return savedfile } catch { print("error uploading file ", error) return nil } } fügen sie es einem objekt hinzu struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(file parsefile) async { var photo = photo() photo imagefile = file do { try await photo save() print("photo object saved!") } catch { print("error saving photo ", error) } } dateisicherheit sie können die sicherheit des datei uploads in den einstellungen ihres parse servers konfigurieren zum beispiel, welche benutzer dateien hochladen oder löschen können bedenken sie, dass, wenn sie die url der datei teilen, jeder mit dieser url darauf zugreifen kann, es sei denn, sie haben strengere serverseitige regeln festgelegt schritt 7 – e mail verifizierung und passwortzurücksetzung übersicht e mail verifizierung und passwortzurücksetzungen sind entscheidend für eine sichere benutzerverwaltung wir haben bereits in schritt 5 , darauf hingewiesen, aber zur erinnerung aktivieren sie diese funktionen im back4app dashboard (e mail einstellungen) konfigurieren sie die e mail vorlagen „e mail verifizierung aktivieren“ und „passwort zurücksetzen“ testen sie den ablauf von ihrer macos app schritt 8 – aufgaben mit cloud jobs planen cloud jobs cloud jobs ermöglichen es ihnen, routinemäßige aufgaben in ihrem backend zu planen und auszuführen, wie das senden von regelmäßigen e mails oder das bereinigen von daten zum beispiel // main js 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); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); stellen sie ihren cloud code bereit mit dem neuen job gehen sie zum back4app dashboard > app einstellungen > servereinstellungen > hintergrundjobs planen sie den job (z b täglich) schritt 9 – integration von webhooks webhooks ermöglichen es ihrer back4app app, http anfragen an einen externen dienst zu senden, wann immer bestimmte ereignisse auftreten dies ist leistungsstark für die integration mit drittanbietersystemen wie zahlungs gateways, e mail marketing tools oder analyseplattformen navigieren sie zur webhook konfiguration in ihrem back4app dashboard > mehr > webhooks richten sie einen endpunkt ein (z b https //your external service com/webhook endpoint ) konfigurieren sie trigger um festzulegen, welche ereignisse in ihren back4app klassen oder cloud code funktionen den webhook auslösen wenn sie beispielsweise slack benachrichtigen möchten, wann immer ein neues todo erstellt wird erstellen sie eine slack app, die eingehende webhooks akzeptiert kopieren sie die slack webhook url setzen sie in ihrem back4app dashboard den endpunkt auf diese slack url für das ereignis „neuer datensatz in der todo klasse “ schritt 10 – erkundung des back4app admin panels die back4app admin app ist eine webbasierte verwaltungsoberfläche, die für nicht technische benutzer entwickelt wurde, um crud operationen durchzuführen und routinemäßige datenaufgaben ohne programmierung zu erledigen sie bietet eine modellzentrierte , benutzerfreundliche oberfläche, die die datenbankverwaltung, das benutzerdefinierte datenmanagement und betriebsweite operationen optimiert aktivierung der admin app aktivieren sie es, indem sie zu app dashboard > mehr > admin app gehen und auf „admin app aktivieren“ klicken erstellen sie einen ersten admin benutzer , der automatisch eine neue rolle ( b4aadminuser ) und relevante klassen im schema ihrer app generiert wählen sie eine subdomain für den zugriff auf die admin oberfläche und schließen sie die einrichtung ab melden sie sich an mit den admin anmeldeinformationen, die sie erstellt haben, um auf ihr neues admin app dashboard zuzugreifen sobald aktiviert, ermöglicht die back4app admin app eine einfache ansicht, bearbeitung oder entfernung von datensätzen aus ihrer datenbank – ohne direkte nutzung des parse dashboards oder backend codes fazit durch das befolgen dieses umfassenden tutorials haben sie ein sicheres backend für eine macos app auf back4app erstellt eine datenbank konfiguriert mit klassenschemas, datentypen und beziehungen echtzeitabfragen integriert (live queries) für sofortige datenaktualisierungen sicherheitsmaßnahmen angewendet unter verwendung von acls und clps, um den datenzugriff zu schützen und zu verwalten cloud code funktionen implementiert, um benutzerdefinierte geschäftslogik auf der serverseite auszuführen benutzerauthentifizierung eingerichtet mit unterstützung für e mail bestätigung und passwortzurücksetzungen datei uploads verwaltet und abrufe, mit optionalen datei sicherheitskontrollen cloud jobs geplant für automatisierte hintergrundaufgaben webhooks verwendet um mit externen diensten zu integrieren das back4app admin panel erkundet für die datenverwaltung mit einem soliden macos frontend und einem robusten back4app backend sind sie nun gut gerüstet, um funktionsreiche, skalierbare und sichere desktop anwendungen zu entwickeln setzen sie ihre erkundung fort, integrieren sie ihre geschäftslogik und nutzen sie die leistungsfähigkeit von back4app, um ihnen unzählige stunden in der server und datenbankadministration zu sparen nächste schritte erstellen sie eine produktionsbereite macos app indem sie dieses backend erweitern, um komplexere datenmodelle, caching strategien und leistungsoptimierungen zu handhaben integrieren sie erweiterte funktionen wie spezialisierte authentifizierungsabläufe, rollenbasierte zugriffskontrolle oder externe apis (wie zahlungs gateways) überprüfen sie die offizielle dokumentation von back4app für tiefere einblicke in erweiterte sicherheit, leistungsoptimierung und protokollanalyse erforschen sie andere tutorials zu echtzeitkommunikation, iot dashboards oder standortbasierten diensten kombinieren sie die hier erlernten techniken mit drittanbieter apis, um komplexe, reale anwendungen zu erstellen