In diesem Artikel möchte ich über iOS 10 sprechen und darüber, was Sie tun müssen, um Ihre Apps für iOS 10 vorzubereiten.
Wie in jeder größeren Version führt iOS 10 eine Reihe von Änderungen und Verbesserungen ein. Einige sind erforderlich, andere werden empfohlen, und es gibt auch einige Änderungen, die die Benutzererfahrung Ihrer Anwendung verbessern können. Beginnen wir mit einem Überblick darüber, was erforderlich ist, wenn Sie Ihre Anwendung mit dem iOS 10-SDK erstellen.
Die wichtigste Änderung hängt nicht unbedingt mit iOS 10 zusammen, aber es ist wichtig genug, dass ich sie zuerst besprechen möchte. Obwohl App Transport Security (ATS) seit iOS 9 verfügbar ist, war es immer einfach, ATS zu deaktivieren, indem Sie das folgende Snippet zu Ihrem Ziel hinzufügen Info.plist.
NSAppTransportSecurity NSAllowsArbitraryLoads
Das soll sich aber ändern. Am 1. Januar 2017 müssen alle beim App Store eingereichten Anwendungen, einschließlich Aktualisierungen vorhandener Anwendungen, den ATS-Richtlinien entsprechen. Dies bedeutet, dass Ihre Anwendung über HTTPS sicher mit Webdiensten kommunizieren muss.
Wenn Sie meine ausführliche Diskussion über App Transport Security lesen, denken Sie möglicherweise daran, dass App Transport Security einen Satz von Regeln definiert. Die Server, mit denen Ihre Anwendung kommuniziert, müssen diese Regeln einhalten. Mit anderen Worten, Netzwerkanfragen über HTTPS sind nicht ausreichend. Jeder Server, mit dem Ihre Anwendung spricht, muss durch moderne Sicherheitsstandards geschützt sein und diesen entsprechen.
Sie können in den Zielen des Ziels immer noch Ausnahmedomänen definieren Info.plist, Es ist jedoch nicht mehr erlaubt, App Transport Security vollständig zu deaktivieren.
Ich habe kürzlich ein Problem mit der App Transport-Sicherheit festgestellt. Die Anwendung eines Clients musste für die Kommunikation mit anderen Geräten im selben Netzwerk erforderlich sein. Es kommuniziert mit anderen Geräten über ihre IP-Adresse, die von App Transport Security-Ausnahmedomänen nicht unterstützt wird. Um es noch komplizierter zu gestalten, ist die IP-Adresse eines Geräts nicht festgelegt. Es kann und wird sich mit der Zeit ändern.
Glücklicherweise ist es seit iOS 10 möglich, dieses Problem durch Hinzufügen eines zusätzlichen Schlüsselwertpaares zu beheben NSAppTransportSecurity
Wörterbuch im Ziel Info.plist. Durch Setzen des Wertes von NSAllowsLocalNetworking
zu JA
, App Transport Security kann für den lokalen Netzwerkverkehr deaktiviert werden.
Wenn Sie in der Vergangenheit Probleme mit App Transport Security hatten, empfehle ich Ihnen die aktualisierte Dokumentation zu App Transport Security. Apple hat ein paar zusätzliche Tasten hinzugefügt, die das Arbeiten mit ATS weniger Kopfschmerzen bereiten.
Beispielsweise laden viele Anwendungen Inhalte aus dem Web in eine Webansicht. Ihre Anwendung weiß oft nicht, welche Websites der Benutzer besuchen wird. Daher ist es nicht möglich, Ausnahmedomänen für App Transport Security in den Zielbereichen zu definieren Info.plist. Ab iOS 10 können Sie App Transport Security für Webansichten durch Festlegen deaktivieren NSAllowsArbitraryLoadsInWebContent
zu JA
in der Zielscheibe Info.plist.
Beachten Sie, dass App Transport Security für jede Anwendung erforderlich ist, die nach dem 31. Dezember an den App Store übermittelt wird. Die Abmeldung von App Transport Security ist nicht mehr möglich. Beachten Sie, dass das App Store-Überprüfungsteam eine Erklärung von Ihnen verlangt, wenn Sie App Transport Security teilweise ablehnen, indem Sie eine Ausnahme wie z NSAllowsLocalNetworking
oder NSAllowsArbitraryLoadsInWebContent
. Mehr dazu lesen Sie in der Dokumentation von Apple.
Apple investiert weiterhin in den Schutz der Privatsphäre seiner Kunden, und dieses Engagement hat auch Konsequenzen für Entwickler. Was bedeutet das für dich??
Wenn Ihre Anwendung auf eine Systemdienst- oder Gerätefunktion zugreift, für die die explizite Berechtigung des Benutzers erforderlich ist, wird dem Benutzer eine Systemwarnung angezeigt, in der die Anwendung die Berechtigung des Benutzers anfordert. Der Inhalt dieser Warnung wurde früher vom Betriebssystem bereitgestellt, wenn in Ihrer Anwendung keine Angabe gemacht wurde. Dies hat sich in iOS 10 geändert.
Ab iOS 10 muss Ihre Anwendung dem Benutzer mitteilen, warum er Zugriff auf einen bestimmten Systemdienst oder eine bestimmte Gerätefunktion benötigt. Sie tun dies, indem Sie dem Ziel einen Schlüssel hinzufügen Info.plist. Wenn Ihre Anwendung lokalisiert ist, sollten Sie auch eine Übersetzung für die Beschreibung im Feld angeben InfoPlist.strings Datei.
Im Folgenden finden Sie eine vollständige Liste der in iOS 10 verfügbaren Datenschutzschlüssel. Die meisten sollten vertraut aussehen, andere sind jedoch in iOS 10 neu, wie z NSSiriUsageBeschreibung
und NSAppleMusicUsageDescription
.
NSHealthShareUsageBeschreibung
NSHealthUpdateUsageDescription
NSLocationUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSVoIPUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSHomeKitUsageDescription
NSAppleMusicUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSpeechRecognitionUsageDescription
NSSiriUsageBeschreibung
NSVideoSubscriberAccountUsageDescription
Wenn Sie keine Verwendungsbeschreibung für die Systemdienste und Gerätefunktionen hinzufügen, die von Ihrer Anwendung verwendet werden, wird eine Warnung in der Konsole angezeigt, und die Systemwarnung, in der der Benutzer nach Erlaubnis gefragt wird, wird dem Benutzer nicht angezeigt. Infolgedessen wird Ihrer Anwendung der Zugriff auf diesen bestimmten Dienst oder diese Funktion verweigert.
"Diese App hat versucht, auf vertrauliche Daten ohne Verwendungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSLocationAlwaysUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erläutert, wie die App diese Daten verwendet."
Es versteht sich von selbst, dass das App Store-Überprüfungsteam alle Anwendungen ablehnt, die gegen diese Richtlinie verstoßen. In den App Store hochgeladene Builds, die dieser Richtlinie nicht entsprechen, werden automatisch abgelehnt.
Wenn Sie in Ihrer Anwendung eine Bibliothek oder ein Framework eines Drittanbieters verwenden, stellen Sie sicher, dass die korrekten Verwendungsbeschreibungen zum Ziel hinzugefügt werden Info.plist. Bibliotheken und Frameworks für Anzeigen erfordern häufig mehrere Berechtigungen, die Sie möglicherweise nicht erwarten oder kennen.
Wenn Sie ein vorhandenes Projekt zum ersten Mal in Xcode 8 öffnen und es Swift enthält, werden Sie aufgefordert, zu Swift 3 zu migrieren. Wenn Sie sich noch nicht ganz bereit fühlen, fordert Xcode Sie auf, stattdessen zu Swift 2.3 zu wechseln. Sie müssen die eine oder die andere auswählen, da Xcode 8 nur diese Versionen der Swift-Sprache unterstützt. Swift 2.2.1 und Swift 2.3 sind sehr ähnlich. Der wichtigste Unterschied ist, dass Swift 2.3 mit iOS 10, tvOS 10, watchOS 3 und macOS 10.12 kompatibel ist.
Sollten Sie heute zu Swift 3 migrieren? Wahrscheinlich nicht. Aber warte nicht zu lange. Irgendwann wird Apple von Entwicklern verlangt, Anwendungen mit Xcode 8 einzureichen, das Swift 2.2.1 nicht unterstützt. Sie könnten bei Swift 2.3 bleiben, aber warum sollten Sie nicht einfach den Sprung machen?
Es ist richtig, dass die Migration eines Projekts zu Swift 3 dramatische Auswirkungen auf die Codebase Ihres Projekts hat. Fast jede Codezeile ändert sich irgendwie. Die API-Änderungen sind erheblich. Der Vorteil ist jedoch, dass Sie Swift 3 verwenden können. Ich verwende Swift 3 seit einigen Monaten und ich liebe es. Dies ist eine wesentliche Verbesserung gegenüber Swift 2.2.1 und Swift 2.3.
Wenn Sie an einem großen Projekt für einen Kunden arbeiten, stellen Sie sicher, dass Sie die Migration zu Swift 3 sorgfältig planen. Bei komplexen Projekten kann die Migration mehrere Tage dauern. Die Vorteile bestehen darin, dass Sie die Swift 3-API verwenden können. Außerdem profitieren Sie vom verbesserten Swift 3-Compiler mit LLVM und Clang.
Mit jeder größeren Version von iOS verbessert Apple die Plattform, indem er APIs hinzufügt und entfernt. Mehrere Frameworks wurden umfassend aktualisiert, und das Unternehmen hat mehrere neue Frameworks eingeführt.
Warum ist das wichtig? Wenn Sie sich im App Store hervorheben möchten, lohnt es sich, Ihre Anwendungen auf dem neuesten Stand zu halten und Unterstützung für neue Funktionen der Plattform hinzuzufügen. Darum geht es in diesem Abschnitt.
Das UILocalNotification
Klasse ist ab iOS 10 veraltet. Was bedeutet das für Sie? Sie können immer noch verwenden UILocalNotification
um lokale Benachrichtigungen zu planen und zu verwalten, wird sie wahrscheinlich irgendwann verschwinden. Aber warum hat Apple beschlossen, abzulehnen UILocalNotification
? Es hat gut funktioniert, richtig?
In iOS 10 hat Apple die Benutzerbenachrichtigungen Rahmen. Wie der Name schon sagt, ist das Framework für das Planen, Verwalten und Verwalten von Benachrichtigungen zuständig, lokal und entfernt. Das macht den Rahmen großartig. Ihre Anwendung muss nicht mehr zwischen lokalen und Remote-Benachrichtigungen unterscheiden. Das Benutzerbenachrichtigungs-Framework bietet eine einheitliche API für die Verwaltung von lokalen und Remote-Benachrichtigungen.
Die API sieht aus und fühlt sich sehr gut an. Das Framework behandelt lokale und Remote-Benachrichtigungen aus der Sicht des Entwicklers gleich, wodurch das Hinzufügen von Benachrichtigungsaktionen einfach und transparent ist. Die Bearbeitung von Benachrichtigungsaktionen erfolgt zentral in einem kurzen Delegatenprotokoll.
Hier bei Envato Tuts finden Sie einige Tutorials zum Benutzerbenachrichtigungs-Framework+!
Möglicherweise interessieren Sie sich auch für meine letzten Blogbeiträge zum Planen lokaler Benachrichtigungen und Benachrichtigungsaktionen mit dem Framework für Benutzerbenachrichtigungen.
Eine der größeren Ankündigungen während der diesjährigen WWDC war die Möglichkeit, Ihre Anwendung über SiriKit mit Siri zu integrieren. Auch wenn die Optionen vorerst begrenzt sind und Ihre Bewerbung in eine der unterstützten Kategorien passt, ist dies eine gute Möglichkeit, Ihre Bewerbung von der Konkurrenz abzuheben. Siri unterstützt derzeit eine begrenzte Anzahl von Domänen, darunter VoIP-Anrufe, Messaging und Workouts.
Sie integrieren sich in Siri, indem Sie Ihrer Anwendung eine Erweiterung hinzufügen. Jede Anwendung, die in Siri integriert ist, muss eine beabsichtigt die Erweiterung. Damit kann Ihre Anwendung eine Aufgabe als Antwort auf Informationen ausführen, die Siri an Ihre Anwendung sendet. Sie können optional eine beabsichtigt die Erweiterung der Benutzeroberfläche um das Erscheinungsbild der resultierenden Benutzeroberfläche anzupassen, die dem Benutzer nach Abschluss der Aufgabe angezeigt wird.
Die brandneue haptische Engine von iPhone 7 und iPhone 7 Plus eröffnet Entwicklern viele neue Möglichkeiten. In iOS 10 ist es möglich, die haptische Engine des Geräts zu verwenden, um dem Benutzer eine taktile Rückmeldung zu geben, wenn er eine bestimmte Aktion ausführt oder ein bestimmtes Ereignis eintritt.
Ihre Anwendung kann die haptische Engine durch die UIFeedbackGenerator
Klasse und ihre drei konkreten Unterklassen:
UIImpactFeedbackGenerator
UINotificationFeedbackGenerator
UISelectionFeedbackGenerator
Jeder UIFeedbackGenerator
Die Unterklasse ist für ein bestimmtes Szenario konzipiert. Wenn Sie Unterstützung für die haptische Engine hinzufügen, werden Sie sicherlich die Benutzer Ihrer Anwendung in Erstaunen versetzen. Versuche es.
Core Data ist wahrscheinlich mein Lieblings-Cocoa-Framework, und Apple hat es auf iOS 10 und mit der Veröffentlichung von Swift 3 noch beeindruckender gemacht. Dies ist das größte Update, das das Framework in den letzten Jahren gesehen hat.
Swift 3 und Xcode 8 arbeiten zusammen, um die Verwendung von Core Data einfacher zu machen als je zuvor. Apple hat auch das vorgestellt NSPersistentContainer
Klasse, die das Einrichten und Verwalten eines Core Data-Stacks zu einem Kinderspiel macht.
Das Unternehmen hat sogar die Grundlagen des Frameworks überarbeitet, indem es die Interaktion des Frameworks mit SQLite überarbeitet hat. Die Ergebnisse sind wirklich fantastisch. Es ist großartig zu sehen, dass Apple mehr als zehn Jahre nach seiner Einführung auf macOS Tiger weiterhin in Core Data investiert.
Weitere Informationen zu Core Data finden Sie in Envato Tuts. Hier finden Sie einige unserer anderen Kurse und Tutorials+.
Wenn Sie Ihre Anwendung mit dem iOS 10-SDK erstellen, was bedeutet, dass Sie Xcode 8 verwenden, müssen Sie sicherstellen, dass Sie App Transport Security und den Datenschutzrichtlinien von Apple entsprechen. Stellen Sie sicher, dass Sie diese Kästchen zuerst ankreuzen.
Auch wenn die anderen Erweiterungen und Verbesserungen optional sind, möchte ich Sie dazu ermutigen. Warten Sie beispielsweise nicht zu lange, um zu Swift 3 zu wechseln. Sie könnten Ihre Benutzer überraschen, indem Sie Unterstützung für die haptische Engine hinzufügen. Es ist optional, aber es ist eine Gelegenheit, sich im heutigen überfüllten App Store abzuheben.
Weitere Informationen zu Swift 3 oder iOS 10 finden Sie in unseren anderen Kursen und Tutorials.