iOS 8.1.1 Es wurde vor etwa zwei Stunden von der Firma veröffentlicht Apple für seine App-Entwickler für iPhone, iPad und iPod Touch, und ich habe Ihnen gesagt, dass die Leistungsverbesserung von iPad 2 und iPhone 4S der wichtigste „attraktive“ Teil ist. Für dieses Update hat Apple auch ein Changelog veröffentlicht, in dem alle weniger sichtbaren Änderungen aufgeführt sind, also alle, die uns ein schnelleres Betriebssystem mit deutlich weniger Problemen bescheren.
iOS 8.1.1 Es steht derzeit nur zum Download auf der App-Entwickler-Website zur Verfügung und es ist nicht bekannt, ob Sie es auf Ihren Endgeräten installieren können, ohne dass eine UDID für ein App-Entwicklerkonto registriert ist.
iOS 8.1.1 Changelog – ALLES neu
Hinweise und bekannte Probleme
Die folgenden Probleme beziehen sich auf die Verwendung von iOS SDK 8.1.1 zum Entwickeln von Code.
AVCapture
Bekanntes Problem
Verwendung der neuen Konstante,
AVCaptureISOCurrent
, führt zu inkonsistenten ISO-Werten (wie in der ISO-Eigenschaft beobachtet), wennsetExposureModeCustomWithDuration:ISO:completionHandler:
wird wiederholt aufgerufen.CloudKit
Note
Ein einzelner
CKAsset
Die Instanz kann nicht mehr als Wert für mehrere CKRecords festgelegt werden.Kontakt
Note
Die Personenauswahl der Adressbuch-Benutzeroberfläche wurde für iOS 8 geändert. Es wurde ein neuer Modus mit neuer API hinzugefügt, bei dem die App keinen Zugriff auf die Kontakte des Benutzers benötigt und der Benutzer nicht zum Zugriff aufgefordert wird. Eine temporäre Kopie der ausgewählten Person wird an die App zurückgegeben. EWR
ABPeoplePickerNavigationController.h
für weitere Informationen an.Sehen Sie sich das neue Beispielprojekt „PeoplePicker: Auswahl einer Person oder Eigenschaft“ an, das die Verwendung des neuen Modus demonstriert.
Dokumentanbieter
Notizen
Ihre App benötigt die iCloud-Berechtigung, um als Dokumentenanbieter genutzt werden zu können.
Die Berechtigung „com.apple.developer.icloud-container-identifiers“ ist erforderlich.
Bekannte Probleme
Nachdem Sie die Dokumentenauswahl ins Querformat gedreht haben, wird die Statusleiste ausgeblendet.
Beim Aufrufen der Dokumentenauswahl im Querformat wird die enthaltende Ansicht möglicherweise unter die Navigationsleiste verschoben.
Erweiterungsoptionen
Notizen
Erweiterungen benötigen ein arm64-Slice, um auf 64-Bit-Geräten ausgeführt zu werden. Wenn Sie versuchen, das armv7-Slice auf einem 64-Bit-Gerät auszuführen, funktioniert es nicht.
Apps müssen über ein Arm64-Slice verfügen, wenn das Bundle ein Framework enthält, mit dem sowohl die App als auch die App-Erweiterung verknüpft sind.
Dateisystem
Note
Das Dateisystemlayout von App-Containern auf der Festplatte hat sich geändert. Anstatt sich auf eine fest codierte Verzeichnisstruktur zu verlassen, verwenden Sie die
NSSearchPathForDirectoriesInDomains
Funktion oder dieURLForDirectory:inDomain:appropriateForURL:create:error:
Methode derNSFileManager
Klasse. Sehen Zugriff auf Dateien und Verzeichnisse in Handbuch zur Dateisystem-Programmierung.Schriftarten
Note
Die thailändische Systemschriftart wurde vergrößert, um die Lesbarkeit zu verbessern. Dies führt an vielen Stellen Ihrer Benutzeroberfläche zu Clipping, wenn Sie nicht die entsprechenden Maßnahmen ergreifen:
Verwenden Sie die
UILabel
so viel wie möglich. Wenn Sie Interface Builder verwenden, stellen Sie sicher, dass Clip Subviews nicht aktiviert ist. UIKit vergrößert den Ausschneidebereich nach Bedarf, um keinen Text auszuschneiden.Verwenden Sie den dynamischen Typ. Dadurch wird sichergestellt, dass es in mehrzeiligen Beschriftungen oder Textfeldern keine überlappenden Glyphen gibt.
Wenn Sie 1 und 2 nicht ausführen können, weil Sie Ihre eigenen Ansichten implementieren, müssen Sie Maßnahmen ergreifen, um ein Abschneiden zu verhindern. Sie können CoreText verwenden, um den geeigneten Beschneidungsbereich für eine Textzeile zu ermitteln, indem Sie Folgendes aufrufen:
CTLineGetBoundsWithOptions(lineRef, kCTLineBoundsIncludeLanguageExtents);Passen Sie die Zeilenhöhe an, um überlappende Glyphen in mehrzeiligen Textelementen zu vermeiden. Weitere 30 % werden empfohlen.
Diese Maßnahme trägt auch dazu bei, dass Ihre App in anderen Sprachen, einschließlich Arabisch, Hindi und Vietnamesisch, eine bessere Leistung erbringt.
HealthKit
Note
Code, der versucht, Trainingsinformationen in HealthKit zu lesen, kann möglicherweise keine nachfolgenden Abfragen an HealthKit stellen.
Wenn Sie HKWorkouts verwenden, sollten Sie das Lesen von Workouts vermeiden, wenn Sie auf iOS-Versionen vor 8.1 laufen mit:
NSOperatingSystemVersion ios8_1_0 = (NSOperatingSystemVersion){8, 1, 0}; if ([[NSProcessInfo ProcessInfo] isOperatingSystemAtLeastVersion:ios8_1_0]) { // Trainingsinformationen lesen und in HealthKit schreiben. } Else { // Trainingsinformationen in HealthKit schreiben }Bekanntes Problem
Blutzuckerdaten werden derzeit nicht in der Health-App angezeigt. Der Zugriff und die APIs von Drittanbietern sind nicht betroffen. Zugriffskontrollen für Blutzucker und alle anderen Gesundheitsdaten können weiterhin in der Health-App und unter Einstellungen > Datenschutz > Gesundheit verwaltet werden.
Für weitere Informationen, siehe https://support.apple.com/kb/HT6533.
iCloud
Note
Die E-Mail-Übergabe und AirDrop funktionieren möglicherweise nicht mehr, nachdem Sie Ihr iCloud-Passwort unter appleid.apple.com geändert haben.
Workaround: Melden Sie sich auf dem Gerät bei iCloud ab und wieder an.
icloud-Laufwerk
Note
URLForUbiquityContainerIdentifier:
könnte zurückkehrennil
wenn Sie Ihre Anwendung in Xcode ausführen. Wenn ja, öffnen Sie die Systemeinstellungen, navigieren Sie zu iCloud > iCloud Drive und aktivieren Sie Xcode.Tastaturen
Bekanntes Problem
Zusätzliche Tastaturen, einschließlich Tastaturen von Drittanbietern, werden möglicherweise nicht in Safari, Karten oder Apps von Drittanbietern auf dem Simulator angezeigt.
Workaround: Tastaturen sollten in Kalender, Spotlight, Kontakten und Fotos testbar sein.
Notification Center
Note
Der Zeitplan und die beabsichtigte Verwendung von
widgetPerformUpdateWithCompletionHandler:
ist als praktisches Zuhause für die gesamte Daten-/Modellaktualisierungslogik gedacht. Falls implementiert, ruft das System zu geeigneten Zeiten das Widget auf, um seinen Status zu aktualisieren, sowohl wenn das Benachrichtigungscenter sichtbar ist als auch im Hintergrund. Um Hintergrundaktualisierungen zu ermöglichen, ist eine Implementierung erforderlich. Es wird erwartet, dass das Widget die Aktualisierungsarbeit so weit wie möglich asynchron und außerhalb des Hauptthreads durchführt. Widgets sollten den Argumentblock aufrufen, wenn die Arbeit abgeschlossen ist, und das entsprechende übergebenNCUpdateResult
. Widgets sollten die Rückkehr von NICHT blockierenviewWillAppear:
über die Ergebnisse dieser Operation. Stattdessen sollten Widgets den zwischengespeicherten Zustand ladenviewWillAppear:
um den Zustand der Ansicht vom letzten abzugleichenviewWillDisappear:
, und dann reibungslos auf die neuen Daten umsteigen, wenn diese eintreffen.NSURLSession
Note
Das
NSURLSessionTask
Die Klasse stellt eine neue „Prioritäts“-Eigenschaft mit drei zugehörigen Konstanten bereit:NSURLSessionTaskPriorityDefault
,NSURLSessionTaskPriorityLow
undNSURLSessionTaskPriorityHigh
.NSURLSessionTask
Mithilfe von Prioritäten kann angegeben werden, wie mehrere Anfragen und Antworten an denselben Host priorisiert werden sollen. Beachten Sie, dass die Priorität ein Hinweis und keine strikte Garantie dafür istNSURLSessionTask
Leistung.Für vollständige Nutzungsdetails von
NSURLSessionTask
Prioritäten finden Sie imNSURLSession.h
Header-Datei, die vom Foundation-Framework bereitgestellt wird.Telefon
Notizen
Um die Wi-Fi-Anruffunktion für T-Mobile (nur USA) zu aktivieren, gehen Sie folgendermaßen vor:
Gehen Sie zu Einstellungen > Telefon > WLAN-Anrufe.
Stellen Sie den Schalter für Wi-Fi-Anrufe auf EIN.
Wenn der Mobilfunkanbieter nicht über die registrierte Notfalladresse des Benutzers verfügt, werden Sie aufgefordert, diese hinzuzufügen, bevor die Funktion aktiviert wird.
Fotos
Notizen
Erstellen Sie vor der Aktivierung und während der Nutzung der Betaversion der iCloud-Fotobibliothek ein Backup Ihrer Fotobibliothek, indem Sie:
Importieren auf Ihren Mac mit iPhoto
Importieren auf Ihren Mac mit Image Capture
Die Betaversion der iCloud-Fotobibliothek lädt keine Fotos und Videos herunter, die von iTunes mit Ihrem Gerät synchronisiert wurden. Alle von iTunes mit Ihrem Gerät synchronisierten Fotos und Videos werden entfernt, wenn Sie die Betaversion der iCloud-Fotobibliothek aktivieren.
iPhoto für iOS wird unter iOS 8 Beta nicht gestartet. Wenn Sie Photos.app starten, werden Ihre iPhoto-Bearbeitungen in die iOS 8-Fotobibliothek migriert. Stellen Sie sicher, dass Ihre iPhoto für iOS-Daten in Ihrer Gerätesicherung enthalten sind.
Die Möglichkeit zur automatischen Optimierung des Gerätespeichers ist für alle Konten mit mehr als 5 GB aktiviert.
Bei Verwendung der iCloud-Familienfreigabe sind sowohl die iCloud-Fotofreigabe als auch „Mein Fotostream“ aktiviert.
Bereitstellungsprofile
Bekanntes Problem
Wenn Sie von iOS 8.1.1 Betas auf die 8 Beta aktualisiert haben, kann es sein, dass Ihre Apps aufgrund von Problemen mit dem Bereitstellungsprofil abstürzen.
Workaround:
Verbinden Sie das Gerät über USB mit Ihrem Mac
Starten Sie Xcode
Wählen Sie Fenster -> Geräte
Klicken Sie mit der rechten Maustaste auf das Gerät in der linken Spalte und wählen Sie „Bereitstellungsprofile anzeigen“.
Klicken Sie auf das betreffende Bereitstellungsprofil
Drücken Sie den Knopf
Entfernen Sie weiterhin alle betroffenen Profile.
Installieren Sie die App erneut
Uikit
Notizen
UILabel
hat den Standardwert YES fürclipsToBounds
. Dies unterscheidet sich vom NormalzustandUIView
Standardeinstellung von NEIN.Das
leftLayoutGuide
machenrightLayoutGuide
APIs wurden entfernt. Bitte nutzen Sie dielayoutMargins
Eigentum statt.WebKit
Notizen
Die Navigation Timing API wurde aufgrund von Leistungsproblemen nur auf iOS deaktiviert.
WLAN-Anrufe (nur T-Mobile US)
Note
Der Name des Netzbetreibers in der Statusleiste zeigt „T-Mobile Wi-Fi“ an, wenn das Gerät WLAN-Anrufe tätigen und empfangen kann.