Aktualisieren Sie Ihre App auf iOS 10

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.

1. App-Transportsicherheit kommt

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.

Lokale Netzwerkverbindungen

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.

Andere Optionen

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.

App-Transportsicherheit ist erforderlich

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.

2. Datenschutz

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.

  • HealthKit
    • NSHealthShareUsageBeschreibung
    • NSHealthUpdateUsageDescription
  • Ort
    • 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.

3. Swift 3

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

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.

Vorausplanen

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.

4. Verbesserungen und Abschreibungen

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.

Benutzerbenachrichtigungen

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

  • Eine Einführung in das UserNotifications Framework

    In diesem Lernprogramm erfahren Sie mehr über das neue UserNotifications-Framework in iOS 10, tvOS 10 und watchOS 3. Dieses neue Framework bietet ein modernes Set…
    Davis Allie
    iOS
  • iOS 10: Benutzerdefinierte Benachrichtigungsschnittstellen erstellen

    In diesem Lernprogramm erfahren Sie, wie Sie das neue UserNotificationsUI-Framework in iOS 10 verwenden, um benutzerdefinierte Schnittstellen für die lokale App und den…
    Davis Allie
    iOS SDK

Möglicherweise interessieren Sie sich auch für meine letzten Blogbeiträge zum Planen lokaler Benachrichtigungen und Benachrichtigungsaktionen mit dem Framework für Benutzerbenachrichtigungen. 

SiriKit

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.

Haptisches Feedback

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.

Kerndatei

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+.

Was tun?

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.