Hier finden Sie alles, was das neue iOS 5 GM bringt

     iOS 5 GM wurde vor einer Stunde von Apple für iOS-Anwendungsentwickler und das Dev-Team veröffentlicht bekannt Bereits solche können mit redsn0w jailbreakt werden. Bisher habe ich auf der Apple-Konferenz einige der von Apple implementierten Neuigkeiten gesehen, aber in iOS 5 wird es sicherlich noch viele weitere Neuigkeiten geben, die ich Ihnen in den folgenden Tagen vorstellen werde, nachdem ich die Gelegenheit hatte, ein wenig damit herumzuspielen neues Betriebssystem. Bis dahin gibt es unten den Changelog des neuen Betriebssystems, also alles, was Apple neu implementiert hat.

HINWEISE UND BEKANNTE PROBLEME

Die folgenden Probleme beziehen sich auf die Verwendung des 5 SDK zum Entwickeln von Code.

Trading Konten

  • Beim Erstellen eines iCloud-Kontos können Sie jede Apple-ID verwenden, solange es sich um eine vollständige E-Mail-Adresse und nicht um ein MobileMe-Konto handelt. Wenn Sie über ein MobileMe-Konto verfügen, können Sie dieses Konto in iCloud verschieben. Weitere Informationen finden Sie unter: http://me.com/move

AirPlay

  • Ab iOS 5 ist AirPlay standardmäßig für Videoinhalte in Anwendungen und Websites aktiviert.
  • In iOS 5 fügt AV Foundation Unterstützung für die Videowiedergabe über AirPlay hinzu.

APIs

  • Das NSNetService Die APIs der Klasse und CFNetService enthalten standardmäßig keine P2P-Schnittstellen. Um Dienste über P2P-Schnittstellen zu durchsuchen, zu registrieren oder aufzulösen, muss eine Anwendung Bonjour verwenden DNSService*() Unten aufgeführte APIs.
  • Einstellen der interfaceIndex Parameter kDNSServiceInterfaceIndexAny In den folgenden APIs sind standardmäßig keine P2P-Schnittstellen enthalten. Um P2P-Schnittstellen einzubinden, müssen Sie nun die festlegenkDNSServiceFlagsIncludeP2P Flag bei Verwendung kDNSServiceInterfaceIndexAny oder setzen Sie den interfaceIndex auf kDNSServiceInterfaceIndexP2P. Die betroffenen APIs verfügen über:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

API-Validierung

  • In den iOS 5-Entwicklungstools ist es möglich, von einer Anwendung verwendete APIs zu extrahieren und sie auf die Verwendung privater APIs überprüfen zu lassen. Diese Option wird angeboten, wenn Sie Ihren Antrag für die App-Einreichung validieren.

apple TV

  • Mit der Apple TV-Software können Benutzer die Inhalte eines iPad 2 mithilfe von AirPlay auf ein Apple TV (2. Generation) spiegeln. Diese Software ermöglicht auch Photo Stream auf Apple TV, sodass Benutzer auf in iCloud gespeicherte Fotos zugreifen können. Die Beta-Version der Apple TV-Software wird bereitgestellt, um die neueste AirPlay-Funktionalität mit Ihren iOS 5-Apps und Websites zu testen. Wenn Sie die Betaversion der Apple TV-Software auf Ihrem Gerät installieren möchten, müssen Sie zunächst die UDID Ihres Geräts im iOS Developer Program Portal registrieren.

Automatische Referenzzählung

  • Wenn in Xcode die Konfiguration auf „Gerät“ festgelegt ist und im Pfad einer der Quelldateien ein Leerzeichen vorhanden ist (häufiger befindet sich das Projekt in einem Verzeichnis mit Leerzeichen), wird der Schritt „In automatische Referenzzählung konvertieren“ (nach der Vorprüfung) ausgeführt ) wird mit folgendem Fehler fehlschlagen: Error in format of file: <path>.Wenn dies auftritt, sollte der Benutzer zum Simulator wechseln und die Migration erneut versuchen.

Binäre Kompatibilität

  • Bei Anwendungen, die mit dem iOS 5 SDK verknüpft sind, werden die Inhaltsversätze der Bildlaufansicht während einer Pinch-Geste nicht mehr auf ganzzahlige Pixel gerundet.

GameKit

  • Die Spieldaten für rundenbasierte Spiele sind auf 4 KB begrenzt.
  • FEST: Der automatische Abgleich mit dem rundenbasierten Ansichtscontroller funktioniert nicht. Als Workaround können Einladungen oder die direkte Auto-Match-API verwendet werden.

iCloud Backup-

  • Backups, die vor dem 22. September erstellt wurden, sind nicht mehr verfügbar. Es wird dringend empfohlen, auf diese Version von iOS 5 zu aktualisieren, um weiterhin Backups Ihrer Geräte durchführen zu können

icloud Lagerung

  • Im iCloud-Schlüsselwertspeicher wurde die maximale Anzahl von Schlüsseln auf 256 erhöht.
  • Alle neu generierten Bereitstellungsprofile werden jetzt automatisch für iCloud aktiviert. Wenn Sie ein von Xcode verwaltetes Team Provisioning-Profil verwenden, klicken Sie im Xcode Organizer auf „Aktualisieren“, um ein neues iCloud-fähiges Profil zu erhalten. Um alle anderen Bereitstellungsprofile für iCloud zu aktivieren, generieren Sie einfach Ihre Profile im iOS-Bereitstellungsportal neu.
  • Wenn Ihre Anwendung die verwendet NSMetadataQuery Klasse müssen Sie ein Prädikat festlegen und das Prädikat wird nun berücksichtigt. Aber das Prädikat ist ein NSPredicatePrädikat im Spotlight-Stil, kein Prädikat im Spotlight-Stil. Ein Beispiel für den Unterschied ist, dass Sie verwenden müssen LIKE statt = für Wildcard-Matching. Die Unterschiede werden näher erläutert unter:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSpotlightComparison.html#//apple_ref/doc/uid/TP40002370-SW1.
  • Das setSortDescriptors: Methode von NSMetadataQuery wird nicht unterstützt.
  • Um den iCloud-Speicher in Ihren Apps in iOS 5 zu aktivieren, klicken Sie im Zusammenfassungsbereich Ihres Projekts auf das Kontrollkästchen „Berechtigungen aktivieren“. Xcode erstellt eine benutzerdefinierte Berechtigungsdatei für Ihr Projekt, die automatisch Ihre Team-ID enthält. Sie können je nach Bedarf für Ihre Anwendung zusätzliche iCloud-Containerwerte hinzufügen. (Beachten Sie, dass Sie Ihre vorhandenen Bereitstellungsprofile entweder mit Xcode oder im iOS-Bereitstellungsportal neu generieren müssen, um iCloud-Speicher zu verwenden.)
  • Die Container-ID-Zeichenfolge, die Sie an übergeben URLForUbiquityContainerIdentifier: Methode von NSFileManager sollen Fügen Sie die Team-ID am Anfang der Zeichenfolge ein. Der Einfachheit halber können Sie passieren nil um die erste Dokumentcontainer-ID abzurufen, die in den Berechtigungen Ihrer App angegeben ist.
  • In iOS 5 können Dateien, die durch Datenschutz geschützt sind, nicht mit iCloud Storage APIs verwendet werden.
  • Dateipräsentatoren – Objekte, die das übernehmen NSFilePresenter Protokoll – einige der Nachrichten, die sie eigentlich empfangen sollten, werden nicht empfangen, darunter:

    Um dieses Problem zu umgehen, implementieren Sie Folgendes relinquishPresentedItemToWriter: Methode und überprüfen Sie, ob der Autor tatsächlich geschrieben hat, wenn Ihr Dateipräsentator die Datei erneut abruft.

  • Wenn Sie einen Fehler im Zusammenhang mit den iCloud-Speicherschnittstellen melden, fügen Sie bitte die während Ihrer Debugging-Sitzung gesammelten Protokolle bei. Um diese Protokolle zu generieren, müssen Sie ein spezielles Debug-Profil auf Ihrem Gerät installieren. Das Debug-Profil erhalten Sie unter http://connect.apple.com. Dieses Profil ermöglicht die Erstellung von Debug-Protokollen, die zur Diagnose von Problemen mit dem iCloud-Speicher erforderlich sind. Die Anweisungen zum Sammeln der Protokolle lauten:
    1. Installieren Sie das Profil. (Der einfachste Weg, dies zu tun, besteht darin, es sich selbst zuzusenden und den Anhang auf Ihrem Gerät zu öffnen.)
    2. Reproduzieren Sie den Fehler.
    3. Synchronisieren Sie mit iTunes, um die Protokolle von Ihrem Gerät abzurufen.
    4. Hängen Sie die Protokolle an Ihren Fehlerbericht an. Die Protokolle finden Sie unter ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.

    Diese Protokolle können sehr schnell groß werden. Sie sollten das Profil daher entfernen, nachdem Sie das Problem reproduziert und die Protokolle Ihres Geräts abgerufen haben.

  • Bei Dateinamen wird in Mac OS X die Groß-/Kleinschreibung nicht beachtet, in iOS jedoch. Dies kann zu Problemen beim Teilen von Dateien zwischen beiden über iCloud führen. Unter iOS sollten Sie Maßnahmen ergreifen, um das Erstellen von Dateien zu vermeiden, deren Namen sich nur durch die Groß-/Kleinschreibung unterscheiden.

iTunes

  • Die mit der GM-Version gelieferte iTunes-Version kann keine Geräte synchronisieren, auf denen die Beta-7-Software installiert ist. Um dieses Problem zu vermeiden, gehen Sie wie folgt vor:
    1. Synchronisieren Sie alle Geräte, auf denen Beta 7 installiert ist, mit der iTunes-Version, die mit Beta 7 geliefert wurde.
    2. Aktualisieren Sie iTunes auf die Version, die mit der GM-Version geliefert wird.
    3. Schließen Sie das Gerät an und installieren Sie die GM-Software. (Beachten Sie, dass beim ersten Anschließen des Geräts möglicherweise ein Fehler bei der Synchronisierung angezeigt wird.)
    4. Führen Sie nach der Installation der GM-Software eine Wiederherstellung aus Ihrem in Schritt 1 erstellten Backup durch.

Musik-Player

  • FEST: Wenn Sie einen Song oder ein Video aus „Musik/Videos“ auf dem Gerät löschen, stürzt die Music Player-App ab.

Sicherheit

  • In iOS 5 wird das Signieren von Zertifikaten mit MD5-Signaturen nicht unterstützt. Bitte stellen Sie sicher, dass Zertifikate Signaturalgorithmen verwenden, die auf SHA1 oder SHA2 basieren.

Sprungbrett

  • Push- und lokale Benachrichtigungen für Apps werden im neuen Benachrichtigungscenter in iOS 5 angezeigt. Im Benachrichtigungscenter werden Benachrichtigungen angezeigt, die als „ungelesen“ gelten. Um Push- und lokale Benachrichtigungen zu ermöglichen, die keinen „Ungelesen“-Status haben, setzen Sie die Badge-Anzahl Ihrer Anwendung auf 0, um die Benachrichtigungen dieser App aus dem Benachrichtigungscenter zu löschen.

UI-Automatisierung

  • Bei Verwendung der performTaskWithPathArgumentsTimeout Methode von UIAHost In einem UI-Automatisierungsskript, in dem die API exzessiv (z. B. Tausende Textzeilen) als Standardausgang oder Standardfehler ausgibt, kann es sein, dass die Aufgabe blockiert, bis das Zeitlimit erreicht ist, woraufhin sie eine JavaScript-Ausnahme auslöst.
  • Das lock() machen unlock() Funktionen von UIATarget wurden durch die ersetzt lockForDuration() Funktion.
  • In iOS 5 können Sie jetzt die Ausführung eines UI-Automatisierungsskripts auf einem iOS-Gerät vom Host-Terminal aus auslösen, indem Sie das Tools-Tool verwenden. Der Befehl lautet:
    • instruments -w <device id> -t <template> <application>
  • Wenn Sie die CLI-Instrumente für die UI-Automatisierung verwenden, können Sie jetzt auf die Standardautomatisierungsvorlage abzielen und den Skript- und Ergebnispfad als Umgebungsvariablenoptionen an das Tool übergeben. Zum Beispiel:
    • instruments -w <device id> -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <application> -e UIASCRIPT <script> -e UIARESULTSPATH <results path>

Uikit

  • Rotationsrückrufe in iOS 5 werden nicht auf Ansichtscontroller angewendet, die im Vollbildmodus angezeigt werden. Dies bedeutet, dass, wenn Ihr Code einen View-Controller über einen anderen View-Controller darstellt und der Benutzer das Gerät anschließend in eine andere Ausrichtung dreht, der zugrunde liegende Controller (d. h. der präsentierende Controller) beim Verwerfen keine Rotationsrückrufe erhält. Beachten Sie jedoch, dass der präsentierende Controller eine erhält viewWillLayoutSubviews Anruf, wenn es erneut angezeigt wird, und die interfaceOrientation Die Eigenschaft kann von dieser Methode abgefragt und zum korrekten Layout des Controllers verwendet werden.
  • In iOS 5 ist die UIPickerView Die Klasse sendet ihre nicht pickerView:didSelectRow:inComponent: Delegierte Nachricht als Reaktion auf die programmatische Auswahl eines Elements.
  • Rückkehr nil von dem tableView:viewForHeaderInSection: -Methode (oder ihr Fußzeilenäquivalent) reicht nicht mehr aus, um eine Kopfzeile auszublenden. Sie müssen überschreiben tableView:heightForHeaderInSection: und zurück0.0 eine Kopfzeile ausblenden.
  • In iOS 5 ist die UITableView Die Klasse verfügt über zwei Methoden, um eine Zelle mit definierten Parametern von einer Zeile in eine andere zu verschieben. Diese APIs verfügen über:
  • Verwendung der UIWebView -Klasse im Interface Builder ist das Festlegen einer transparenten Hintergrundfarbe in iOS 5 möglich. Entwickler, die mit dem neuen SDK kompilieren, können ihre XIB auf überprüfen UIWebView transparente Einstellungen.
  • In iOS 5 ist die UINavigationBarUIToolbar und UITabBar Implementierungen haben sich geändert, sodass die drawRect: Die Methode wird nur aufgerufen, wenn sie in einer Unterklasse implementiert ist. Apps, die neu implementiert wurdendrawRect: in einer Kategorie zu einer dieser Klassen werden Sie feststellen, dass die drawRect: Methode wird nicht aufgerufen. UIKit führt eine Linkprüfung durch, um zu verhindern, dass die Methode in vor iOS 5 verknüpften Apps aufgerufen wird, unterstützt dieses Design jedoch nicht auf iOS 5 oder höher. Apps können entweder:
    • Verwenden Sie die Anpassungs-API für Balken in iOS 5 und höher, was die bevorzugte Methode ist.
    • Unterklasse UINavigationBar (oder die anderen Balkenklassen) und überschreiben drawRect: in der Unterklasse.
  • Das indexPathForRow:inSection:section und row Methoden von NSIndexPath jetzt benutzen NSInteger statt NSUInteger, sodass diese Typen mit den auf definierten Methoden übereinstimmen UITableView.
  • Das Verhalten der UITableView Klasse scrollToRowAtIndexPath:atScrollPosition:animated: Methode hat sich geändert. Wenn eine Bildlaufposition von UITableViewScrollPositionTop orUITableViewScrollPositionBottom angegeben ist, passt die Methode nun den oberen und unteren Teil des an contentInset Eigentum.
  • In Versionen vor iOS 5 war die UIPopoverController Die Klasse würde bedingungslos die automatischen Größenanpassungsmasken von Ansichtscontrollern festlegen, die den Inhalt für den Popover-Controller bereitgestellt haben. Es würde auch die automatischen Größenanpassungsmasken der Ansichten von Ansichtscontrollern, die an a weitergeleitet werden, bedingungslos festlegen UINavigationController Objekt, das der Inhaltsansichtscontroller des Popover-Controllers war UIPopoverController Die Klasse führt dies nicht mehr für Anwendungen aus, die mit iOS 5 oder höher verknüpft sind. Entwickler sollten sicherstellen, dass die Masken zur automatischen Größenänderung von Ansichten richtig eingestellt sind, um eine beliebige Größenänderung innerhalb jedes Containers und nicht nur innerhalb von Popovers zu ermöglichen. Eine Maske ab (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) ist vernünftig.
  • Der Abschlusshandler für saveToURL:forSaveOperation:completionHandler: wird außerhalb des koordinierten Schreibblocks aufgerufen.
  • Das autosaveWithCompletionHandler: Die Methode wird jetzt nur noch für periodenbasiertes Sparen aufgerufen, wenn eine Rückkehr ohne Sparen sicher ist. Dokumente müssen jedoch gespeichert werden, wenn diesaveToURL:forSaveOperation:completionHandler: Methode wird aufgerufen.

Safari und WebKit

  • In iOS 5 gibt es eine neue geerbte CSS-Eigenschaft, -webkit-overflow-scrolling, ist verfügbar. Der Wert touch ermöglicht es dem Webentwickler, sich für das Scrollen im nativen Stil zu entscheiden overflow:scroll Elemente. Der Standardwert für diese Eigenschaft ist auto, was das Scrollen mit einem Finger ohne Schwung ermöglicht.
  • Das WebKit-Framework wurde auf eine Version aktualisiert, die der von Safari 5.1 auf dem Desktop verwendeten Engine weitgehend entspricht. Beim neuen WebKit-Framework unter iOS 5 sind einige Bereiche zu beachten. Insbesondere für Websites und native Apps, die UIWebView verwenden:
    • Es gibt einen neuen HTML5-kompatiblen Parser.
    • Die Breite des Textlayouts kann sich geringfügig ändern, da das Wortrundungsverhalten jetzt eine auf Gleitkomma basierende Genauigkeit aufweist.
    • Es gibt eine verbesserte Validierung der <input type=number> Formularfeld, das das Entfernen führender Nullen und die Zahlenformatierung umfasst.
    • Berührungsereignisse werden jetzt in Eingabefeldern unterstützt.
    • <input type=range> wird jetzt unterstützt.
    • window.onerror wird jetzt unterstützt.
    • Es gibt einen neuen Benutzeragenten, dessen Benutzeragentenzeichenfolge keine Gebietsschemainformationen enthält.
    • URLs werden jetzt kanonisiert, indem das Schema ausschließlich in Kleinbuchstaben geschrieben wird. Wenn eine gefälschte URL verwendet wird, um Informationen von a UIWebView Wenn Sie zum nativen Code zurückkehren möchten, stellen Sie sicher, dass das Schema immer in Kleinbuchstaben geschrieben ist oder dass der native Code das Schema ohne Berücksichtigung der Groß- und Kleinschreibung vergleicht.

Wi-Fi-Synchronisierung

  • Für die Unterstützung der drahtlosen Synchronisierung ist Mac OS X 10.6.8 oder Lion erforderlich. Wenn Sie Ihr Gerät über das USB-Kabel mit iTunes verbinden, wird eine Option zum Aktivieren der drahtlosen Synchronisierung angezeigt. Es wird empfohlen, nach der Wiederherstellung Ihres Geräts die erste Synchronisierung mit einem Kabel durchzuführen.
    • Die drahtlose Synchronisierung wird automatisch ausgelöst, wenn das Gerät an die Stromversorgung angeschlossen ist und sich im selben Netzwerk wie der gekoppelte Computer befindet. Oder Sie können eine Synchronisierung manuell über iTunes oder über Einstellungen > Allgemein > iTunes-Synchronisierung auslösen (dasselbe Netzwerk wie der gekoppelte Computer erforderlich).
    • Wenn Sie Probleme mit der Synchronisierung von Apps, Medien und/oder Fotos mit Ihrem Gerät feststellen, können Sie es zurücksetzen und dann erneut synchronisieren. Wählen Sie unter „Einstellungen“ > „Allgemein“ > „Zurücksetzen“ die Option „Alle Inhalte und Einstellungen löschen“. Stellen Sie dann erneut eine Verbindung zu iTunes her und synchronisieren Sie erneut.

Xcode-Tools

Informationen zu Änderungen an Xcode, Interface Builder, Instruments und iOS Simulator finden Sie unter Xcode-Versionshinweise.