Backend Lösung für online Stundenplan (iOS/Xcode)?

2 Antworten

Deine Anforderungen dürften sich mit dem Google Kalender erfüllen lassen.

Du kannst die API von Google nutzen, um mit diesem zu kommunizieren. Eine Client-Bibliothek für Objective-C existiert ebenso (Client Library for REST). Beispiele für den Gebrauch findest du hier, ansonsten hilft sicherlich dieser Blogartikel: How to use the Google Calendar API on iOS.

Da es kein explizites Google Calendar Widget für Apple Apps gibt, müsstest du die Oberfläche selbst bauen oder zumindest ein entsprechendes Widget integrieren. Auf cocoacontrols.com (Suchbegriff: calendar) findest du eine Auswahl.

Ein anderer Lösungsansatz der mir einfallen würde, wäre der Gebrauch eines (Headless) CMS (wie z.B. Strapi). CMS haben in der Regel schon ein System integriert, um zwischen verschiedenen Nutzerrechten zu unterscheiden und sie können als Webanwendung betrieben werden. Editoren könnte man bestimmte Templates / Vorgaben zur Verfügung stellen, damit sie Events, zeitliche Aufteilungen und Weiteres bestimmen können.

Die grafische Oberfläche müsstest du allerdings selbst implementieren und auch die Backendlogik (Datenspeicherung, -strukturierung, -validation) müsstest du selbst übernehmen.

Ich hab mal ein Bisschen Richtung Firebase/ Firestore geschaut (...)

Das sind soweit nur Dienste, um Daten speichern zu können. Die Situation ist also ähnlich wie bei meinem zweiten Lösungsvorschlag (nur mit noch weniger Hilfe): Den wesentlichen Teil (Backend, Frontend) müsstest du selbst bauen.

FelgenGeflickt 
Fragesteller
 17.07.2021, 02:24

Vielen dank für deine schnelle Antwort, ich hab mich jetzt ein bisschen rein gelesen. Ich werde mal versuchen mit der google API was brauchbares auf die beine zu stellen, eigne backendlogik scheint mir doch ein bisschen sehr ambitioniert.
Dank dir :)

0

Im Rahmen meiner Ausbildung (Fachinformatiker - Anwendungsentwicklung) habe ich ein Einblick in Java und Spring/SpringBoot bekommen. Damit lässt sich sehr einfach ein Backend erstellen.

Das Backend wäre dann z.B. eine RESTful API mit MySQL/MariaDB Datenbank.

Für die API im Web sind die @RestController sehr gut geeignet. Man kann Datenklassen anlegen, welche dann als Input und Output dienen. Die Klassen werden automatisch von/zu JSON (de-)serialisiert.

Hier gibt es eine gute Anleitung, wie ich es auch benutze.

Mit SwaggerUI kannst du deine REST API auch Visualisieren lassen. Damit hast du eine automatisch erstellte Webseite, wo du deine REST API siehst und auch testen kannst.

Hier z.B. eine Anleitung.

Mit Spring Security kannst du deine Abfragen leicht mit einem Login absichern. So kannst du z.B. Rolle "Gruppe1" und "Gruppe2" anlegen. Diese haben dann unterschiedliche Zugriffsrechte.

Ein Beispiel.

Mit @Entity Klassen und z.B. CrudRepository Interfaces kann man sich leicht Datenbank Tabellen anlegen lassen und auch die Daten in der Datenbank verwalten. Hier sind verschiedene Datenbanken möglich. In der Datenbank können da die User mit Login Daten oder der Stundenplan gespeichert sein.

Ein Teil Tutorial.

Am Ende hast du dann am besten ein Java Projekt mit Maven. Da es Java ist, läuft es eigentlich auf allen Systemen (Windows, Mac, Linux) und auch Architekturen (x86, ARM). Der Server ist dann eben ein RESTful API, welche von der iOS App angesprochen werden kann. iOS Apps sollten hoffentlich mit HTTP Request und JSON String umgehen können.

Ich kann dir sonst noch Lombok als Plugin empfehlen. Damit kannst du die Setter, Getter oder auch Konstruktoren automatisch erzeugen lassen. So sieht alles aufgeräumter aus und lässt sich schneller entwickeln.

Ein Beispiel.

Als IDE würde ich dir die IntelliJ IDE empfehlen. Sie gibt es auch für MacOS und ist sogar schon an den M1 angepasst, falls du so ein Mac hast. Die Community Edition ist kostenlos und bietet in diesem Anwendungsfall eigentlich keine Nachteile.

Keine Ahnung ob es noch einfachere Variaten für ein Backend gibt, aber ich habe damit gute Erfahrungen gemacht. Die Basics wurde mir auch erklärt und ich könnte es an einem bestehenden Projekt testen und erkunden. Ich hoffe, dass die Beispiel dabei helfen.