Was ist eigentlich Swift? Teipin.de als iOS-App

in #neulingschallenge7 years ago (edited)

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-teipin-app.jpg

1. Swift

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:

VersionDatumÄnderungen
Swift 1September 2014Initiale Verteilung der Programmiersprache Swift.
Swift 2Juni 2015throw, 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 3Juni 2016Beim 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 4September 2017Einfacherer Umgang mit Strings und die Einführung von Collection Typen

1.1 Aus der Sicht eines Entwicklers

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.


1200x630bb.jpg

Apples Einstieghilfe für Swift [2]


1.2 Wie steige ich am besten in Swift ein?

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.

1.3 Die Nachteile

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 ;)

2. Teipin.de auf dem iPhone? Geil!

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.

2.1 Internetverbindung vorhanden?

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
}

2.2 Die spartanische Oberfläche der App

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:

Simulator Screen Shot - iPhone 8 Plus - 2018-02-03 at 11.15.49.png Simulator Screen Shot - iPhone 8 Plus - 2018-02-03 at 11.16.15.png

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 ;)

Simulator Screen Shot - iPhone 8 Plus - 2018-02-03 at 11.16.36.png Simulator Screen Shot - iPhone 8 Plus - 2018-02-03 at 11.17.04.png

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!

2.3 Was kommt als nächstes?

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?!

2.4 Apple Entwickler Lizenz

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 :)

usa-1935746_640.jpg

Macht Apple die freien Entwickler zu bettlern? [6]

3. Fazit

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

Quellen

[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

Sort:  

Upvote with 20% by @steembeamer

Hey cuby, Ich habe großen Respekt vor allen Leuten, die so viele Programmiersprachen beherrschen! Ich würde das auch gerne beherrschen.
Auße HTML (was ja nicht als Programmiersprache gilt) habe ich mich bisher nur ein wenig mit Javascript und PHP auseinandergesetzt.
Denke mir oft, wenn ich mit Daten hantiere, dass Programmierkenntnisse sehr von Vorteil wären, um effizienter zu arbeiten und Dinge automatisieren zu können.
Naja, hoffe man sieht sich auf Steemit und alles Gute,
Chris aka smallstepschange

Danke für deinen Kommentar. Im Prinzip ist es so, dass man in den meisten Fällen nur eine Programmiersprache richtig gut können muss, um schnell andere Programmiersprachen zu können. Quasi die Grundstruktur kapieren und dann Vokabeln lernen :-D

Stimmt! Das Gute ist, dass man die Vokabeln auch jederzeit nachschauen kann. Man muss nur Ideen haben, was alles möglich ist, und wie man am besten danach sucht. Und im Internet gibt es ja auch viele Supportmöglichkeiten.
Trotzdem: Chapeau!
CU,
Chris aka smallstepschange

Warning! This is a new scam account, that want to copy us. The original you will find here: https://steemit.com/steemit/@resteem.bot/7yazyw-steemit-resteem-bot-faq

Please help us to flag him down.

@resteem.bot