In diesem Beitrag wird ein Überblick über die Programmiersprache Swift gegeben und welchen Fortschritt ich bisher mit dieser gemacht habe, um meine Webseite Teipin.de als iOS-App anzubieten. Viel Spaß :)
Swift [1] ist eine Programmiersprache von Apple. Sie wurde 2014 bei der Entwicklerkonferenz Worldwide Developers Conference (WWDC) vorgestellt und seit dem immer wieder verfeinert und verbessert. Zu diesen Verbesserungen gehören folgende:
Version | Datum | Änderungen |
---|---|---|
Swift 1 | September 2014 | Initiale Verteilung der Programmiersprache Swift. |
Swift 2 | Juni 2015 | throw , try & catch sind eigeführt worden. Später wurde die freie Verwendung von Swift für kommerzielle Projekte unter der Lizenz Apache-2.0 ermöglicht. |
Swift 3 | Juni 2016 | Beim Wechsel von der Swift Version 2 auf 3 sind enorm viele Änderungen (über 100) vorgenommen worden, die in dem Migrationsleitfaden von Apple wiederzufinden sind. Der wahrscheinliche bisher größte Sprung in der Weiterentwicklung von Swift. |
Swift 4 | September 2017 | Einfacherer Umgang mit Strings und die Einführung von Collection Typen |
Zu Anfang stellte sich mir die Frage: Was ist den so toll an Swift? In den letzten 9 Jahren habe ich eine Menge an Programmiersprachen gelernt (kleiner Auszug: C#, Python, Java, PHP, VB, ...) und auch in Projekten verwendet. Aber tatsächlich sticht Swift mit seiner Eigenart irgendwie aus der Masse hervor. Es ist echt einfach in die Syntax des Quellcodes einzusteigen und es gibt inzwischen viele Tutorials und Anleitungen im Internet.
Für den Einstieg in die Programmiersprache Swift, bietet Apple ein kostenloses E-Book im iBook-Store an (Link). Wenn du interessiert bist, dann schau einfach mal da rein ;)
Ich habe glücklicherweise den YouTube Kanal codingenieur [3] gefunden, der sowohl einen guten Einstieg in Swift als solches bietet aber auch kleinere Tutorials (Tasdchenrechner, ToDo-Liste). Wer also an dieser Stelle immer noch ernsthaft überlegt sich mal daran zu versuchen, der sollte dort vorbei schauen.
Ja, bzw. Jain. Um Swift programmieren zu können, braucht man XCode. Dies ist eine Integrierte Entwicklungsumgebung (IDE) von Apple, die hauptsächlich für die Entwicklung von Apps ausgelegt ist (Ja man kann auch noch andere Sachen damit machen). XCode ist allerdings nur unter MacOS installierbar. Das heißt man braucht ein MacBook oder ein Mac (Die Untergruppen der Produkte lasse ich jetzt mal außen vor). Wer jetzt aber keine Lust hat sich einen neuen Laptop oder Computer von Apple zu kaufen, der hat noch eine andere Option: Hackintosh [4] . Wenn ihr ein Windows-Gerät besitzt, dann könnt ihr MacOS als virtuelle Maschine (VM) nebenbei laufen lassen, oder mit sehr viel Aufwand MacOS auf eurem Nicht-Apple-Gerät installieren. Die VM ist meiner Erfahrung nach die einfachere und entspanntere Lösung ;)
Von meiner Bowling-Webseite Teipin.de habe ich bereits in den folgenden Beiträgen erzählt und auch wie man seine Webseite zu einer Webapp umbauen kann:
Jetzt geht es aber um die native Lösung: Teipin.de als eigenständige iOS-App! Die Oberfläche ist bisher noch recht rudimentär.
Natürlich soll die iOS-App auf die selben Daten zugreifen können, wie man auch über die Webseite zu sehen bekommt. Das setzt eine bestehende Internetverbindung voraus. Dafür habe ich mir dieses kleine Script gebaut:
//
// Reachability.swift
// Teipin-App
//
// Created by CuBy on 01.02.18.
// Copyright © 2018 CuBy. All rights reserved.
//
import Foundation
import SystemConfiguration
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
}
}
var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}
let isReachable = flags == .reachable
let needsConnection = flags == .connectionRequired
return isReachable && !needsConnection
}
}
Der Aufruf funktioniert direkt über die gerade gezeigte Klasse. Dazu wird die Funktion isConnectedToNetwork() aufgrufen:
if Reachability.isConnectedToNetwork(){
// Internet da
} else {
// Internet weg
}
Da die Oberfläche noch nicht ganz so viel Liebe erfahren durfte, hier nur 4 Screenshots, die die eigentliche Funktionalität der App ganz gut widerspiegeln:
Der Login funktioniert bereits. Wenn eine bestehende Internetverbindung existiert werden die Email und das Password in die API von Teipin.de geschickt und diese meldet zurück, ob der Login erfolgreich war, oder nicht ;)
Wenn man sich erfolgreich eingeloggt hat, dann kann man auf der nächsten Ansicht seine Spiele begutachten und in die Detailansicht gehen. Ändern lässt sich allerdings noch nichts :( Kommt aber in naher Zukunft!
Die Spiele können in Spielbereiche eingeteilt werden. D.h. das diese auch in der Detailansicht zu sehen sein müssen. Weiterhin soll die Manipulation von Spielen und Spielbereichen sowie deren Erstellung und Löschung möglich sein. Natürlich wird die Oberfläche noch hübsch und bunt gemacht. Soll ja Spaß machen das zu bedienen ;)
Und wenn dann erstmal alles fertig ist, dann kommt die App nicht in den AppStore. Was?! Warum?!
Um in den AppStore von Apple seine selbst gebauten Apps einstellen zu dürfen, muss man jährlich einen Betrag von 99$ bezahlen [5]. Zum aktuellen Zeitpunkt bin ich noch nicht bereit dazu so viel Geld auszugeben, um den Benutzern meiner Webseite mehr Komfort zu bieten (z.B. Push-Notifications). Mal schauen ob ich meine Meinung dazu in Zukunft noch ändern werde :)
An sich ist Swift eine echt geile Programmiersprache mit dem ein oder anderen bitteren Beigeschmack. Man braucht entweder einen Apple-Computer oder viel Geduld, um sich einen Hackintosh zu bauen. Man zahlt jährlich 99$, auch wenn man nur eine kostenlose App bereitstellen möchte. Naja. Ich bleib erstmal dran Teipin.de als native iOS-App umzusetzen und halte euch in Zukunft auf dem laufendem ;)
Danke fürs Lesen
CuBy
PS: Fehler bei der Rechtschreibung und Grammatik sind stilistische Mittel und vom Autor bewusst platziert worden. :-D
[1] Wikipedia - Swift (Programmiersprache)
[2] The Swift Programming Language (Swift 4.0.3 Edition) Cover
[3] YouTube Kanal - codeingeneur
[4] Hackintosh Webseite
[5] Apple Developer Program - How the Program Works
[6] Pixabay.com - geralt - USA Dollar Objekt Arbeit