Swift 3 wirft seine Schatten voraus
Seit Swift ein Open-Source-Projekt ist, verläuft die Entwicklung transparent. Mit der Keynote auf der WWDC wurde auch Swift 3 in Xcode 8 aufgenommen. Mitglieder des Apple Developer Programs können bereits jetzt zusammen mit der Xcode-8-Beta ihren Code auf Swift 3 optimieren.
Es muß jedem Entwickler bewusst sein, dass ständige Änderungen in Swift für all jene, die schon produktiv mit Swift arbeiten, mühsam sind. Apple hat sich zum Ziel gesetzt, möglichst viele Strukturen so weit wie möglich zu fixieren. Änderungen an der Syntax werden aber auch weiterhin passieren, die Sprache ist im Vergleich zu Objective-C immer noch sehr jung.
Xcode 8 unterstützt Entwickler mit einem Konverter von Swift 2.x zu Swift 3. Dieser hilft, mit einigen manueller Nacharbeit, den eigenen Code umzustellen. Der Konverter ist nicht nur bei den vielen bereits implementierten Swift-Syntaxänderungen hilfreich, sondern passt auch die Namen von Methoden und Parameter diverser Bibliotheken an.
Beachten Sie, dass eine Umstellung auf Swift 3 kann nur komplett erfolgen kann. Verwenden Sie Bibliotheken mit Swift 2.x Code, müssen diese ebenfalls migrieren werden. Verwenden Sie eine Bibliothek mit Swift 3 Code, muß Ihr komplettes Projekts in Swift 3 vorliegen.
- Swift für iOS
So meldet sich Xcode beim Start. - Swift für iOS
Diese Templates bietet Xcode an, wir wählen "Single View Applikation aus". - Swift für iOS
Hier stellt man Optionen zum Projekt ein, beispielsweise die Programmiersprache "Swift". - Swift für iOS
Als Speicherort für das Projekt bietet sich der Dokumente-Ordner an. - Swift für iOS
In der Liste links tauchen alle Quelltexte auf. Die Warnung in der Mitte kann man erst einmal ignorieren. - Swift für iOS
In der rechten Liste klickt man auf den Kreis mit dem kleinen Quadrat darin. Dann erscheint die Liste aller verfügbaren Objekte. Interessant für uns sind "Label" und "Button". - Swift für iOS
Das Text-Label ziehen wir in die Mitte des ViewControllers. - Swift für iOS
Der Knopf kommt in einigem Abstand direkt darüber. - Swift für iOS
Damit das Label stets horizontal zentriert erscheint, erzeugen wir ein passendes "Constrain". - Swift für iOS
Damit man Verknüpfungen zwischen den Interface-Elementen und dem Code herstellen kann, muss man beide Editoren auf dem Bildschirm haben. - Swift für iOS
Die Verknüpfung für das Label erzeugt man grafisch mit der Maus. Im Kontextmenü stellt man die Parameter ein und vergibt einen Namen für das Objekt. - Swift für iOS
Beim Button geht man ähnlich vor, muss aber die Connection auf "Action" umschalten. - Swift für iOS
Dies ist die einzige Zeile Code, die man manuell eintippen muss. Hier wird der Text des Labels geändert. - Swift für iOS
So erscheint die App im Simulator. Funktioniert!
Validieren und Vertrauen von Apps
Enterprise- oder Inhouse-Apps haben einige besondere Eigenschaften im Vergleich zu AppStore-Apps. Die Verteilung einer App erfolgt immer über einen Inhouse-AppStore. Dieser AppStore ist dabei immer ein Webserver, der die IPA-Datei (= File mit der App) samt PLIST File vorhält. Hierzu waren Signierungen der App- und Provisions-Profile notwendig. Hier hat Apple einen weiteren Schmerz der Entwicklergemeinde adressiert. Mit Xcode 8 werden die Code-Signierung samt Provisions Profile automatisch erzeugt.
Damit eine solche App auf dem Zielgerät ausgeführt werden darf, bedarf es einer Bestätigung des Vertrauensverhältnisses zu dem Entwickler. Enterprise-Apps, die über MDM installiert werden, vertraut das Gerät (genauer gesagt dem "Developer") automatisch. Enterprise-Apps, die nicht über MDM installiert werden, muss der Anwender explizit vertrauen, sofern dies für den jeweiligen Developer noch nicht erfolgte.
Neben diesem anwendergetriebenen Vertrauensverhältnisses gibt es auch eine Prüfung bei Apple selbst. Hierzu muß bei der Installation einer Enterprise App das Zielgerät in allen Fällen eine Verbindung zu Apple Servern herstellen können, um die Gültigkeit des Profiles überprüfen zu können.
Diese Prüfung wird in regelmäßigen Abständen wiederholt. Bisher konnte dieser Zeitpunkt weder durch die App, den Anwender oder das MDM vorgegeben werden. Dies hatte zur Folge, dass es theoretisch passieren kann, dass eine App beispielsweise im tiefsten Schwarzwald - ohne Internet-Verbindung - die Validierung vollziehen will und fehlschlägt.
Damit dies nicht passiert, hat Apple ein MDM-Kommando in iOS 10 aufgenommen, um die Validierungsprüfung asap zu erzwingen. (mb)