WWDC 2018 Tagebuch eines iOS-Entwicklers

Veröffentlicht: 2022-03-10
Kurz zusammengefasst ↬ Seit 1987 findet jährlich die Apple Worldwide Developers Conference (WWDC) statt und hält iOS-Entwickler auf Trab. Lou Franco hat sich die diesjährige Veranstaltung angesehen und teilt seine Notizen und Referenzen, falls Sie es verpasst haben.

Die traditionellen Grenzen des Sommers in den USA sind Memorial und Labor Day, aber iOS-Entwickler markieren den Sommer durch die WWDC und die iPhone-Veröffentlichung. Obwohl das Wetter diese Woche in NYC kühl und regnerisch ist, bin ich in Sommerstimmung und freue mich auf die Erneuerung, die der Sommer und die WWDC versprechen.

Foto vor dem San Jose McEnery Convention Center
WWDC (Bildquelle) (Große Vorschau)

Es ist der Morgen des 4. Juni und ich gehe meine Notizen von der WWDC 2017 durch. Letztes Jahr schrieb ich, dass ARKit und Core ML zwei der großen Highlights waren. Es war erfrischend zu sehen, dass Apple sich auf maschinelles Lernen (ML) konzentriert, aber im Rest des Jahres 2017 gab es nicht viel Follow-up. ARKit hat ein gewisses Interesse geweckt, aber keine Killer-App (vielleicht Pokemon Go, aber das war vor ARKit beliebt). . Apple hat seine ursprüngliche Bibliothek von herunterladbaren Core ML-Modellen nach der Core ML-Ankündigung nicht erweitert.

Apple hat Turi Create veröffentlicht und Lobe hat letzten Monat einen neuen interessanten Core ML Model Maker veröffentlicht. Im Apple/ML-Bereich verfolgt Swift-Erfinder Chris Lattner mit Swift for TensorFlow einen anderen Ansatz. Aber von außen scheint Core ML hauptsächlich einen offensichtlichen Zweck zu haben: die Bildklassifizierung. Es scheint nicht viel Energie zu geben, um die unterschiedlichsten Anwendungen zu erforschen (obwohl wir alle wissen, dass ML das Herzstück von selbstfahrenden Autos und blitzschnellen Demos wie Google Duplex ist).

Mehr nach dem Sprung! Lesen Sie unten weiter ↓

Eine andere Möglichkeit, wie Apple ML verwendet, ist Siri, und Anfang dieses Jahres schrieb ich über SiriKit und erwähnte seine wahrgenommenen und tatsächlichen Mängel im Vergleich zu Alexa und Google. Ein Problem, das ich untersucht habe, war, wie Siris Betonung auf vordefinierte Absichten seine Reichweite einschränkt, aber nicht die versprochene Genauigkeit erzeugt hat, die Sie von einem begrenzten Fokus erhalten könnten.

Die Einführung des HomePod im letzten Jahr hat nur die Probleme von Siri hervorgehoben, und eine weit verbreitete Umfrage zur Kundenzufriedenheit zeigte eine Zufriedenheit von 98 % mit dem iPhone X, aber nur eine Zufriedenheit von 20 % mit Siri.

Mit all dem im Hinterkopf hatte ich persönlich gehofft zu hören, dass Apple einige wichtige Verbesserungen in AR, ML und Siri vornehmen würde. Insbesondere als iOS-Entwickler wollte ich viel mehr Core ML-Modelle sehen, die mehr umfassen als nur die Bildklassifizierung und mehr Hilfe beim Erstellen von Modellen. Für Siri wollte ich viel mehr Absichten sehen und möglicherweise einen Hinweis darauf, dass Absichten das ganze Jahr über hinzugefügt werden. Es war ein langer Weg, aber für AR ist der nächste Schritt ein Gerät. Aber in der Zwischenzeit hoffte ich auf eine erhöhte räumliche Genauigkeit.

Schließlich liebe ich Xcode Playgrounds und iPad Playground-Bücher, aber sie müssen viel schneller und stabiler sein, also hatte ich auch dort auf etwas gehofft.

Am Morgen der WWDC habe ich Folgendes getwittert:

Ein Bild eines Tweets mit meinen WWDC-Wünschen
Mein Tweet, der beschreibt, was ich mir von der WWDC 2018 erhofft habe (Große Vorschau)

Das war keine Vorhersage. Es ist nur eine Liste von Dingen, die ich 2017 verwenden wollte, aber fand, dass sie zu schwach oder zu schwierig für mich sind, um damit anzufangen, und ich hoffte, Apple würde einige Verbesserungen vornehmen.

Mein Plan für den Tag ist es, die Keynote live zu sehen und dann die Platforms State of the Union zu sehen. Diese geben einen guten Überblick darüber, worauf Sie sich für den Rest der Woche konzentrieren sollten.

Ende von Tag 1: Die Keynote und die Plattformen State Of The Union

Der erste Tag der WWDC ist die Keynote, die für die Öffentlichkeit bestimmt ist, und die Platforms State of the Union, die einen Überblick über die gesamte Veranstaltung gibt, mit einigen Details für Entwickler, damit sie auswählen können, an welchen Sitzungen sie teilnehmen möchten.

Zusammenfassung bemerkenswerter Ankündigungen von Nicht-iOS-Entwicklern

Bei der WWDC geht es nicht ausschließlich um die iOS-Entwicklung, daher finden Sie hier eine kurze Liste anderer Dinge, die mit den anderen Plattformen passiert sind oder die nicht sehr auf Entwickler ausgerichtet sind.

  • Um es gleich vorwegzunehmen, es gab überhaupt keine Hardware-Ankündigungen . Keine Vorschauen und keine Updates auf dem Mac Pro. Wir müssen auf das iPhone und Folgeveranstaltungen im Herbst warten.
  • iOS 12 hat eine neue Shortcuts-App, die das Ergebnis ihrer Übernahme von Workflow zu sein scheint. Es ist eine Möglichkeit, eine Reihe von Schritten per Drag-and-Drop zu „skripten“ . Sie können die Verknüpfung auch einem Siri-Schlüsselwort zuweisen, auf das ich weiter unten eingehen werde.
  • iOS gruppiert automatisch Benachrichtigungen , die von derselben App stammen, und lässt Sie als Gruppe darauf reagieren.
  • Animojis können jetzt nachahmen, wie Sie Ihre Zunge herausstrecken, und die neuen Memojis sind hochgradig konfigurierbare menschliche Gesichter , die Sie so anpassen können, dass sie wie Sie selbst aussehen.
  • FaceTime unterstützt Gruppen-Video-Chats mit bis zu 32 Personen.
  • Es gibt eine neue Bildschirmzeit-App, die Ihnen Berichte über Ihre Telefon- und App-Nutzung gibt (um Ihnen zu helfen, sich selbst zu kontrollieren und weniger abgelenkt zu sein). Es ist auch die Grundlage der neuen Kindersicherung.
  • Apple TV hat ein kleines Update bekommen: Unterstützung für Dolby Atmos und neue Bildschirmschoner von der Internationalen Raumstation übernommen .
Foto des neuen Apple TV Space Screen Saver
Apple TV Space Screen Saver (große Vorschau)
  • Die Uhr hat einen Wettkampfmodus, um andere zu trainingsbezogenen Herausforderungen herauszufordern. Es wird auch versuchen, den Beginn und das Ende des Trainings automatisch zu erkennen , falls Sie vergessen, sie zu starten oder zu stoppen, und es verfügt jetzt über Wander- und Yoga-Workouts.
  • Die Uhr hat auch einen neuen Walkie-Talkie-Modus, den Sie für vertrauenswürdige Kontakte aktivieren können.
  • Es gibt mehr Audio-SDKs, die auf der Watch nativ sind , und die Podcasts-App von Apple ist jetzt verfügbar. Ich gehe davon aus, dass Podcast-Apps von Drittanbietern diese neuen SDKs ebenfalls nutzen werden.
  • Der Mac hat den Ankerplatz der Veranstaltung (was hoffentlich ein Hinweis auf erneute Aufmerksamkeit ist). Es wird macOS Mojave heißen und verfügt über einen Dunkelmodus .
  • Es gibt große Updates für den Mac App Store, aber vor allem erhält er jetzt die gleiche visuelle und inhaltliche Behandlung wie der iOS App Store letztes Jahr. Es gibt genügend Änderungen an der Sandbox , sodass Panic beschlossen hat , Transit dorthin zurück zu verschieben .
  • Quick Look im Finder hat jetzt einige einfache Aktionen , die Sie mit der Datei durchführen können (z. B. ein Bild drehen) und ist über Automator anpassbar.
  • Mojave wird die letzte Version von macOS sein, die 32-Bit- Apps und Frameworks unterstützt, was bedeutet, dass das Quick Time Framework wegfällt. Es wurde anscheinend durch einige Videoaufnahmefunktionen im Betriebssystem selbst ersetzt.
  • Apple gab bekannt, dass sie intern einen Port von UIKit verwenden, um Mac-Apps zu erstellen, und zeigte Ports von Stocks, News, Home und Voice Memos. Das neue Framework wird 2019 veröffentlicht.

Die Ankündigungen von iOS-Entwicklern, auf die ich mich am meisten freue

iOS-Entwickler haben auch gute Nachrichten erhalten. Sie trafen auf die vier Hauptbereiche, in denen ich Verbesserungen sehen wollte:

  • SiriKit verfügt jetzt über benutzerdefinierte Absichten , was die Möglichkeiten erheblich erweitert.
  • Create ML ist eine neue Methode zur Verwendung von Xcode Playgrounds zum Trainieren von Modellen durch Transfer Learning , wodurch Sie vorhandene Modelle mit Ihren eigenen Trainingsdaten erweitern können .
  • Mit Xcode Playgrounds können Sie jetzt Code am Ende einer Seite hinzufügen und ohne Neustart ausführen . Es ist schwer zu sagen, ob Playgrounds stabiler sein wird, bis wir eine echte Veröffentlichung im September bekommen, aber das wird das Ausprobieren von Code viel schneller machen.
  • ARKit 2 wurde zusammen mit einem neuen Augmented-Reality-Dateiformat namens USDZ angekündigt , das offen ist und mit Adobe und Pixar entwickelt wurde. Adobe hat bereits einige Tooling-Unterstützung angekündigt. Es wird Benutzern und Entwicklern ermöglichen, AR-Assets und -Erfahrungen zu speichern und zu teilen. Darüber hinaus ermöglicht ARKit 2, dass sich mehrere Geräte in derselben AR-Umgebung befinden, und unterstützt die 3D-Objekterkennung.

Wir haben kein AR-Gerät bekommen, aber es fühlt sich sicher so an, als würden wir bald eines bekommen. Und es muss von Apple kommen (nicht von Drittanbietern), da zum Ausführen von ARKit ein iOS-Gerät erforderlich ist.

Einrichten Ihrer Maschine

Alles, was Sie brauchen, ist jetzt im Entwicklerportal verfügbar. Um den Code im Artikel zu verwenden, benötigen Sie die Xcode 10 Beta. Ich würde noch nicht empfehlen, iOS 12 Betas zu verwenden, aber wenn Sie es wirklich wollen, gehen Sie zum Portal auf Ihrem Gerät und laden Sie das iOS 12 Beta-Konfigurationsprofil herunter.

Das einzige, wofür Sie ein Gerät mit der Beta benötigen, ist ARKit 2. Alles andere sollte im Simulator von Xcode 10 gut genug laufen. Ab der ersten Beta ist die Unterstützung von Siri Shortcut im Simulator begrenzt, aber es gibt genug, um zu glauben, dass dies in zukünftigen Versionen behoben wird.

Ende von Tag 2: Spielen mit benutzerdefinierten Absichten von Siri

Letztes Jahr habe ich geschrieben, wie Sie in eine der vordefinierten Absichten von Apple passen müssen, um SiriKit in Ihrer App zu verwenden. Dieser Mechanismus wurde 2016 eingeführt und 2017 und sogar zwischen WWDC-Veranstaltungen ergänzt. Aber es war klar, dass Amazons Ansatz der benutzerdefinierten Absichten überlegen war, um die Sprachsteuerung in vielfältigere Apps zu integrieren, und Apple hat dies letzte Woche zu SiriKit hinzugefügt.

Um es klar zu sagen, dies ist eine erste Implementierung, also noch nicht so umfangreich wie Alexa Skills, aber es eröffnet Siris Möglichkeiten ziemlich viel. Wie ich im vorherigen Artikel besprochen habe, besteht die Haupteinschränkung benutzerdefinierter Absichten darin, dass der Entwickler die gesamte Sprachübersetzung vornehmen muss. SiriKit umgeht dies ein wenig, indem es den Benutzer auffordert, den Ausdruck anzugeben, den er verwenden möchte, aber für benutzerdefinierte Absichten ist immer noch mehr Übersetzung erforderlich als für vordefinierte Absichten.

Und sie basieren auf der gleichen Grundlage wie die vordefinierten Absichten, sodass alles, was ich behandelt habe, weiterhin gilt. Tatsächlich werde ich Ihnen zeigen, wie Sie List-o-Mat, der App, die ich für den ursprünglichen SiriKit-Artikel geschrieben habe, eine neue benutzerdefinierte Absicht hinzufügen.

(Kostenlos) Unterstützung für Siri-Kurzbefehle, wenn Sie Spotlight bereits unterstützen

Wenn Sie NSUserActivity verwenden, um Dinge in Ihrer App anzugeben, die Ihr Benutzer per Übergabe oder Suche initiieren kann, ist es trivial, sie auch Siri zur Verfügung zu stellen.

Alles, was Sie tun müssen, ist, Ihrem Aktivitätsobjekt die folgende Zeile hinzuzufügen:

 activity.isEligibleForPrediction = true

Dies funktioniert nur für Spotlight-aktivierte Aktivitäten (wobei isEligibleForSearch true ist).

Wenn Benutzer diese Aktivität jetzt ausführen, gilt sie als zur Verwendung in Siri gespendet . Siri empfiehlt sehr häufig durchgeführte Aktivitäten oder Benutzer können sie in der Shortcuts-App finden. In jedem Fall kann der Benutzer seine eigene gesprochene Phrase zuweisen, um sie zu starten. Ihre Unterstützung für das Starten der Aktivität über Spotlight reicht aus, um das Starten über eine Verknüpfung zu unterstützen.

In List-o-Mat könnten wir Spotlight und Siri die einzelnen Listen zur Verfügung stellen, indem wir Aktivitätsobjekte konstruieren und diese dem ListViewController . Benutzer konnten sie über Siri mit ihrem eigenen Satz öffnen.

In unserem Fall ist es überflüssig, weil wir eine vordefinierte Absicht zum Öffnen einer Liste hatten, aber die meisten Apps haben nicht so viel Glück und verfügen jetzt über diesen einfachen Mechanismus. Wenn Ihre App also Aktivitäten enthält, die nicht von den vordefinierten Absichten von Siri unterstützt werden (z. B. das Abspielen eines Podcasts), können Sie sie einfach für die Vorhersage zulassen, ohne sich um benutzerdefinierte Absichten kümmern zu müssen.

Konfigurieren von Sirikit zur Verwendung benutzerdefinierter Absichten

Wenn Sie eine benutzerdefinierte Absicht verwenden müssen, muss Sirikit zu Ihrer App hinzugefügt werden, was ein wenig Konfiguration erfordert.

Alle Schritte zum Konfigurieren von SiriKit für benutzerdefinierte Absichten sind die gleichen wie für vordefinierte Absichten, die ausführlich in meinem SiriKit-Artikel hier über Smashing behandelt werden. Zusammenfassen:

  1. Sie fügen eine Erweiterung hinzu, daher benötigen Sie eine neue App-ID, und das Bereitstellungsprofil und die Berechtigungsanforderungen Ihrer App haben Siri hinzugefügt.
  2. Sie benötigen wahrscheinlich eine App-Gruppe (so kommunizieren die Erweiterung und die App).
  3. Sie benötigen eine Intents-Erweiterung in Ihrem Projekt
  4. Es gibt Siri-spezifische .plist- Schlüssel und Projektberechtigungen, die Sie aktualisieren müssen.

Alle Details finden Sie in meinem SiriKit-Artikel, daher werde ich nur behandeln, was Sie benötigen, um eine benutzerdefinierte Absicht in List-o-Mat zu unterstützen.

Hinzufügen eines Copy List-Befehls zu List-o-Mat

Benutzerdefinierte Absichten sollen nur verwendet werden, wenn es keine vordefinierte Absicht gibt, und Siri bietet tatsächlich eine Menge Unterstützung für Listen und Aufgaben in seiner Siri-Domäne für Listen und Notizen.

Aber eine Möglichkeit, eine Liste zu verwenden, ist als Vorlage für eine sich wiederholende Routine oder einen Prozess. Dazu kopieren wir eine vorhandene Liste und deaktivieren alle ihre Elemente. Die integrierten List-Intents unterstützen diese Aktion nicht.

Zuerst müssen wir eine Möglichkeit hinzufügen, dies manuell zu tun. Hier ist eine Demo dieses neuen Verhaltens in List-o-Mat:

Ein animiertes GIF mit einer Demo zum Kopieren von Listen
Kopieren einer Liste in List-o-Mat

Damit dieses Verhalten von Siri aufgerufen werden kann, spenden wir „eine Absicht“, was bedeutet, dass wir iOS jedes Mal mitteilen, wenn Sie dies tun. Dann wird es irgendwann lernen, dass Sie diese Liste am Morgen gerne kopieren und als Verknüpfung anbieten. Benutzer können auch nach gespendeten Absichten suchen und Phrasen manuell zuweisen.

Erstellen der benutzerdefinierten Absicht

Der nächste Schritt besteht darin, die benutzerdefinierte Absicht in Xcode zu erstellen. Es gibt eine neue Dateivorlage, also:

  1. Wählen Sie Datei → Neue Datei und wählen Sie „SiriKit Intent Definition File“.
    Ein Screenshot des Dialogfelds „Neue Datei“.
    Auswählen, um eine Absichtsdefinitionsdatei hinzuzufügen (große Vorschau)
  2. Benennen Sie die Datei ListOMatCustomIntents.intentdefinition und legen Sie fest, dass die Datei sowohl in den App- als auch in den Absichtserweiterungszielen abgelegt wird. Dadurch werden automatisch Klassen in beiden Zielen generiert, die die Absichtsprotokolle implementieren, aber Ihr benutzerdefiniertes Verhalten implementiert haben.
  3. Öffnen Sie die Definitionsdatei .
  4. Verwenden Sie die Schaltfläche + unten links, um eine Absicht hinzuzufügen, und nennen Sie sie „CopyList“.
  5. Setzen Sie die Kategorie auf „Erstellen“ und geben Sie den Titel und den Untertitel ein, um die Absicht zu beschreiben:
    Screenshot der benutzerdefinierten Absichtsbeschreibung
    Dem Intent eine Kategorie, einen Titel und einen Untertitel hinzufügen (große Vorschau)
  6. Fügen Sie einen String-Parameter namens „list“ hinzu.
    Screenshot des Parameterbereichs
    Fügen Sie einen String-Parameter namens „list“ hinzu (große Vorschau)
  7. Fügen Sie einen Verknüpfungstyp mit dem Listenparameter hinzu und geben Sie ihm einen Titel namens „Liste kopieren“.
    Screenshot des Shortcut-Typ-Abschnitts
    Verknüpfungstyp mit dem Titel „Liste kopieren“ hinzufügen (große Vorschau)

Wenn Sie in die Absichtsliste schauen, werden Sie sehen, dass diese Absicht bereits für Sie konfiguriert wurde:

Die Absicht spenden

Wenn wir in unserer App eine Benutzerinteraktion durchführen, von der wir möchten, dass Siri davon erfährt, spenden wir sie an Siri. Siri verfolgt Kontextinformationen wie Uhrzeit, Wochentag und sogar Standort, und wenn es ein Muster bemerkt, bietet es dem Benutzer die Verknüpfung an.

Wenn wir auf das Menü Kopieren tippen, fügen Sie diesen Code hinzu:

 @available(iOS 12, *) func donateCopyListInteraction(listName: String) { let copyListInteraction = CopyListIntent() copyListInteraction.list = listName copyListInteraction.suggestedInvocationPhrase = "Copy \(listName)" let interaction = INInteraction(intent: copyListInteraction, response: nil) interaction.donate { [weak self] (error) in self?.show(error: error) } }

Dadurch wird einfach ein Objekt der automatisch generierten CopyListIntent -Klasse erstellt und an Siri übergeben. Normalerweise würde iOS diese Informationen sammeln und auf die entsprechende Zeit warten, um sie anzuzeigen, aber für die Entwicklung können Sie die App „Einstellungen“ öffnen, zum Abschnitt „Entwickler“ gehen und die Debugging-Einstellungen für Siri Shortcut aktivieren.

Hinweis : Zum jetzigen Zeitpunkt funktioniert diese Debug-Einstellung bei den ersten Betas nur auf Geräten und nicht auf dem Simulator. Da die Einstellung vorhanden ist, erwarte ich, dass sie in weiteren Betas funktioniert.

Screenshot der Debug-Einstellungen von Siri
Aktivieren Sie Siri Shortcut-Debugging

Wenn Sie dies tun, wird Ihre gespendete Verknüpfung in Siri-Vorschlägen in Spotlight angezeigt.

Screenshot der gespendeten Verknüpfung in Siri
Sie können Ihre gespendete Verknüpfung in der Suche debuggen

Wenn Sie darauf tippen, wird Ihre Intent-Erweiterung aufgerufen, da wir die Ausführung im Hintergrund zulassen. Wir werden als nächstes Unterstützung dafür hinzufügen.

Handhabung der benutzerdefinierten Absicht

Wir haben bereits eine Intents-Erweiterung, und da die benutzerdefinierte Absichtsdefinitionsdatei bereits zur Datei hinzugefügt wurde, enthält sie auch die generierten Absichtsklassen. Alles, was wir tun müssen, ist einen Handler hinzuzufügen.

Der erste Schritt besteht darin, der Erweiterung eine neue Klasse namens CopyListIntentHandler hinzuzufügen. Hier ist sein Code:

 import Intents @available(iOS 12, *) class CopyListIntentHandler: ListOMatIntentsHandler, CopyListIntentHandling { func handle(intent: CopyListIntent, completion: @escaping (CopyListIntentResponse) -> Void) { // Find the list var lists = loadLists() guard let listName = intent.list?.lowercased(), let listIndex = lists.index(where: { $0.name.lowercased() == listName}) else { completion(CopyListIntentResponse(code: .failure, userActivity: nil)) return } // Copy the list to the top, and respond with success copyList(from: &lists, atIndex: listIndex, toIndex: 0) save(lists: lists) let response = CopyListIntentResponse(code: .success, userActivity: nil) completion(response) } }

Benutzerdefinierte Absichten haben nur eine Bestätigungs- und Verarbeitungsphase (die benutzerdefinierte Auflösung von Parametern wird nicht unterstützt). Da die Standard- confirm() Erfolg zurückgibt, implementieren wir einfach handle() , das die Liste nachschlagen, kopieren und Siri mitteilen muss, ob es erfolgreich war oder nicht.

Sie müssen auch vom registrierten Intent-Handler an diese Klasse senden, indem Sie diesen Code hinzufügen:

 if #available(iOS 12, *) { if intent is CopyListIntent { return CopyListIntentHandler() } }

Jetzt können Sie tatsächlich auf diesen Siri-Vorschlag tippen und es wird Folgendes angezeigt:

Screenshot der aktivierten Verknüpfung
Verknüpfung aktivieren (Große Vorschau)

Wenn Sie auf die Schaltfläche Erstellen tippen, wird die Liste kopiert. Die Schaltfläche sagt „Erstellen“ aufgrund der Kategorie, die wir in der Intent-Definitionsdatei ausgewählt haben.

Puh, das war viel. Diese neuen Siri-Verknüpfungen sind die Hauptfunktion in iOS 12, die eine neue große Entwickleroberfläche zum Erkunden bietet. Da ich zufällig ein gutes (und dokumentiertes) Siri-Beispiel hatte, mit dem ich arbeiten konnte, war es vernünftig, diese Woche zu versuchen, die neuen Funktionen hinzuzufügen.

Sie können das Update List-o-Mat in GitHub sehen. Bis Xcode 10 und iOS 12 veröffentlicht werden, befindet es sich in einem eigenen Zweig.

In den nächsten Tagen werde ich mich hauptsächlich mit Apple-Beispielcode befassen oder viel kleinere Projekte erstellen.

Ende von Tag 3: Xcode Playgrounds

Den gesamten Vortag verbrachten wir mit Xcode 10 Beta, das kein einziges Mal abstürzte und bereit für die Entwicklung schien. Jetzt wollte ich also die neuen Playgrounds-Funktionen erkunden.

Das Wichtigste, was ich von Spielplätzen wollte, war, sie stabiler und viel schneller zu machen. Um sie schneller zu machen, hat Apple eine große Funktion hinzugefügt – einen REPL-Modus.

Vor Xcode 10, als Sie sich in einem Spielplatz befanden, der automatisch ausgeführt wurde (was die Standardeinstellung ist), hat jede Codezeile tatsächlich die gesamte Datei neu erstellt und von Anfang an ausgeführt. Hatte man irgendeinen Staat aufgebaut, war er verloren. Das eigentliche Problem war jedoch, dass dies viel zu langsam für eine iterative Entwicklung war. Wenn ich Playgrounds verwende, stelle ich sie so ein, dass sie manuell ausgeführt werden, aber selbst das ist langsam.

In Xcode 10 ist die manuelle Ausführung eher die Norm, aber nachdem Sie es ausgeführt haben, können Sie am Ende der Seite weitere Zeilen hinzufügen und die Ausführung fortsetzen. Das bedeutet, dass Sie Daten untersuchen und Ansichten iterativ zeichnen können, ohne ständig neu zu erstellen und von vorne zu beginnen.

Zu Beginn habe ich einen iOS-Playground (Datei → Neu → Playground) mit der Single View-Vorlage erstellt.

Schalten Sie die manuelle Ausführung ein, indem Sie das Menü unter der Wiedergabetaste (das Dreieck in der unteren linken Ecke) öffnen. Dadurch wird links ein vertikaler Streifen platziert, der die aktuelle Position des Wiedergabekopfs anzeigt (ähnlich wie Haltepunkte).

Sie können auf eine beliebige Zeile tippen und dann auf die Wiedergabeschaltfläche links davon. Dadurch wird der Playground bis zu diesem Punkt ausgeführt. Dann können Sie weiter gehen, indem Sie Linien weiter unten im Playground antippen. Entscheidend ist, dass Sie unten weitere Zeilen hinzufügen und nach jeder Shift + Enter eingeben können, um den Play-Kopf an diesen Punkt zu bewegen.

Hier ist ein GIF von mir, wie ich das Label einer Ansicht ändere, ohne Playground neu starten zu müssen. Nach jeder Zeile, die ich tippe, drücke ich Shift + Enter .

GIF von Playground mit REPL-Modus
Fügen Sie weiteren Code hinzu und führen Sie ihn ohne Neustart aus

Playgrounds unterstützen jetzt auch das benutzerdefinierte Rendering Ihrer Typen, und Apple unternimmt große Anstrengungen, damit jedes Swift-Framework einen Playground enthält, um es zu dokumentieren.

WWDC-Foto zeigt Rutsche, um mehr Spielplätze zu fördern
TJ Usiyan bittet die WWDC-Teilnehmer, Spielplätze zu ihren Projekten hinzuzufügen. (Große Vorschau)

Ende von Tag 4: ML erstellen

Letztes Jahr hat Apple einen großen Sprung bei der Programmierung von maschinellem Lernen für seine Geräte gemacht. Es gab ein neues ML-Modelldateiformat und direkte Unterstützung dafür in Xcode.

Das Potenzial bestand darin, dass es eine große Bibliothek dieser Modelldateien geben würde, dass es Tools geben würde, die sie erstellen würden, und dass viel mehr App-Entwickler ML in ihre Projekte integrieren könnten, ohne wissen zu müssen, wie man Modelle erstellt.

Dies hat sich nicht vollständig verwirklicht. Apple hat das Repository von Modellen nach der WWDC nicht erweitert, und obwohl es Repositorys von Drittanbietern gibt, haben sie meistens Modelle, die Variationen der Bildklassifizierungs-Demos sind. ML wird für viel mehr als die Bildklassifizierung verwendet, aber eine breite Auswahl an Beispielen ist nicht erschienen.

Es wurde also klar, dass jede echte App ihre Entwickler brauchen würde, um neue Modelle zu trainieren. Apple hat zu diesem Zweck Turi Create veröffentlicht, aber es ist alles andere als einfach.

Auf der WWDC 2018 hat Apple ein paar Dinge mit Core ML gemacht:

  1. Sie haben den Natural Language Processing (NLP)-Teil von Core ML erweitert , was uns einen neuen Hauptbereich von Beispielen gibt.
  2. Sie haben Core ML das Konzept des Transfer Learning hinzugefügt, mit dem Sie Trainingsdaten zu einem vorhandenen Modell hinzufügen können . Das bedeutet, dass Sie Modelle aus der Bibliothek nehmen und sie an Ihre eigenen Daten anpassen können (z. B. neue Objekte in von Ihnen bereitgestellten Bildern erkennen lassen).
  3. Sie veröffentlichten Create ML, das in Xcode Playgrounds implementiert ist und mit dem Sie Daten per Drag-and-Drop für das Training ziehen und Modellerweiterungen generieren können (mithilfe von Transfer Learning).

Dies ist ein weiterer netter Schritt zur Demokratisierung von ML. Hier muss nicht viel Code geschrieben werden. Um einen Bildklassifizierer zu erweitern, müssen Sie nur Bilder sammeln und kennzeichnen. Sobald Sie sie haben, ziehen Sie sie einfach in Create ML. Sie können die Demo in diesem WWDC-Video zu Create ML sehen.

Ende der Woche: Spielen Sie mit den neuen AR-Demos

ARKit war letztes Jahr eine weitere große Ergänzung und es scheint noch klarer, dass ein AR-Gerät kommt.

Mein ARKit-Code aus dem letztjährigen Artikel ist immer noch ein guter Einstieg. Bei den meisten neuen Funktionen geht es darum, AR genauer und schneller zu machen.

Wenn Sie danach eine Beta-Version installiert haben, möchten Sie auf jeden Fall die neue SwiftShot ARKit-Demo-App herunterladen. Diese App nutzt die neuen Funktionen von ARKit, insbesondere das Multiplayer-Erlebnis. Zwei oder mehr Geräte im selben Netzwerk und am selben Ort können miteinander kommunizieren und dasselbe AR-Erlebnis sehen.

Um dies zu spielen, benötigen Sie natürlich zwei oder mehr Geräte, die Sie bereit sind, auf die iOS 12-Betaversion zu setzen. Ich warte darauf, dass die öffentliche Beta dies tut, weil ich nur ein Beta-sicheres Gerät habe.

Die einfachere AR-App zum Spielen ist die neue Measure-App, mit der Sie die Länge realer Objekte messen können, die Sie in der AR-Kameraansicht sehen. Es gab Apps von Drittanbietern, die dies tun, aber die von Apple ist poliert und mit iOS 12 vorinstalliert.

Links zu WWDC-Videos und Beispielcode

Ich freue mich also darauf, diesen Sommer mehr mit Xcode 10 und iOS 12 zu machen, während wir auf die neuen Telefone und alle Geräte warten, die Apple am Ende des Sommers herausbringen könnte. In der Zwischenzeit können iOS-Entwickler die Sonne genießen, unsere Wanderungen mit unserem neuen Beta-Watch-OS verfolgen und sich diese WWDC-Videos ansehen, wenn sich die Gelegenheit bietet.

Sie können WWDC 2018-Videos vom Apple-Entwicklerportal streamen. Es gibt auch diese inoffizielle Mac-App zum Ansehen von WWDC-Videos.

Hier sind die Videos, auf die in diesem Artikel verwiesen wird:

  • WWDC-Keynote 2018
  • WWDC 2018 Plattformen State of the Union
  • Einführung in Siri-Kurzbefehle
  • Optimale Nutzung von Playgrounds in Xcode
  • Wir stellen Create ML vor, und wenn Sie etwas Fortgeschritteneres wollen, A Guide to Turi Create

So starten Sie das Spielen mit Xcode 10 und iOS 12:

  • Laden Sie die Betas herunter (besuchen Sie sie auf einem Gerät, um das Beta-Profil zu erhalten)
  • List-o-Mat mit Siri Shortcut-Updates
  • Swift Shot (das Mehrspieler-ARKit 2-Spiel)