Ecco tutto ciò che offre il nuovo iOS 5 GM

     iOS 5 GM è stato rilasciato un'ora fa da Apple per gli sviluppatori di applicazioni iOS e il Dev Team ha annunciato già come questi possono essere sottoposti a jailbreak usando redsn0w. Finora ho visto alla conferenza Apple alcune delle novità implementate da Apple, ma sicuramente in iOS 5 ci saranno molte altre novità che vi presenterò nei giorni successivi dopo aver avuto modo di giocare un po' con il nuovo sistema operativo. Fino ad allora, di seguito avete il changelog del nuovo sistema operativo, quindi tutto ciò che Apple ha implementato di nuovo.

NOTE E PROBLEMI NOTI

I problemi seguenti riguardano l'utilizzo dell'SDK 5 per sviluppare codice.

conti

  • Quando crei un account iCloud, puoi utilizzare qualsiasi ID Apple purché sia ​​un indirizzo email completo e non un account MobileMe. Se hai un account MobileMe, puoi spostare quell'account su iCloud. Puoi trovare maggiori informazioni su: http://me.com/move

AirPlay

  • A partire da iOS 5, AirPlay è abilitato per impostazione predefinita per i contenuti video in applicazioni e siti Web.
  • In iOS 5, AV Foundation aggiunge il supporto per la riproduzione video tramite AirPlay.

API

  • NSNetService class e le API CFNetService non includono interfacce P2P per impostazione predefinita. Per esplorare, registrare o risolvere servizi su interfacce P2P, un'applicazione deve utilizzare Bonjour DNSService*() API indicate di seguito.
  • Impostazione del interfacciaIndice parametro kDNSServiceInterfaceIndexAny nelle seguenti API non includeranno le interfacce P2P per impostazione predefinita. Per includere le interfacce P2P, è ora necessario impostare il filekDNSServiceFlagsIncludeP2P flag durante l'utilizzo kDNSServiceInterfaceIndexAny o impostare l'interfaceIndex su kDNSServiceInterfaceIndexP2P. Le API interessate hanno:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Convalida API

  • Negli strumenti di sviluppo di iOS 5 è possibile estrarre le API utilizzate da un'applicazione e farne verificare l'utilizzo di API private. Questa opzione viene offerta quando convalidi la tua domanda per l'invio dell'app.

apple TV

  • Il software Apple TV consente agli utenti di eseguire il mirroring dei contenuti di un iPad 2 su una Apple TV (2a generazione) utilizzando AirPlay. Questo software abilita anche Photo Stream su Apple TV in modo che gli utenti possano accedere alle foto archiviate in iCloud. Viene fornita la versione beta del software Apple TV per testare le ultime funzionalità AirPlay con le app e i siti Web iOS 5. Se desideri installare la versione beta del software Apple TV sul tuo dispositivo, devi prima registrare l'UDID del tuo dispositivo nel portale del programma per sviluppatori iOS.

Conteggio automatico dei riferimenti

  • In Xcode, se la configurazione è impostata su Dispositivo e c'è uno spazio nel percorso di uno dei file sorgente (più comunemente, il progetto si trova all'interno di una directory con spazi), il passaggio "Converti in conteggio automatico dei riferimenti" (dopo il controllo preliminare ) fallirà con l'errore: Error in format of file: <path>.Se riscontrato, l'utente deve passare al simulatore e riprovare la migrazione.

Compatibilità binaria

  • Nelle applicazioni collegate all'SDK di iOS 5, gli offset del contenuto della visualizzazione di scorrimento non verranno più arrotondati ai pixel integrali durante un gesto di pizzicamento.

Kit di gioco

  • I dati delle partite per le partite a turni sono limitati a 4 KB.
  • FISSO: La corrispondenza automatica con il controller di visualizzazione a turni non funziona. Come soluzione alternativa è possibile utilizzare gli inviti o l'API di corrispondenza automatica diretta.

iCloud Backup

  • I backup effettuati prima del 22 settembre non sono più disponibili. Si consiglia vivamente di eseguire l'aggiornamento a questa versione di iOS 5 per continuare a eseguire il backup dei dispositivi

iCloud bagagli

  • Nell'archivio chiave-valore di iCloud, il numero massimo di chiavi è stato aumentato a 256.
  • Tutti i profili di provisioning appena generati sono ora automaticamente abilitati per iCloud. Se utilizzi un profilo di provisioning del team gestito da Xcode, fai clic su Aggiorna in Xcode Organizer per ottenere un nuovo profilo abilitato per iCloud. Per abilitare tutti gli altri profili di provisioning per iCloud, rigenera semplicemente i tuoi profili nel portale di provisioning iOS.
  • Se la tua applicazione utilizza il file NSMetadataQuery class, è necessario impostare un predicato e il predicato viene ora rispettato. Ma il predicato è an NSPredicate-predicato in stile, non un predicato in stile Spotlight. Un esempio della differenza è che devi usare LIKE invece di = per la corrispondenza con caratteri jolly. Le differenze sono definite più dettagliatamente in:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSpotlightComparison.html#//apple_ref/doc/uid/TP40002370-SW1.
  • setSortDescriptors: metodo di NSMetadataQuery non è supportato.
  • Per abilitare l'archiviazione iCloud nelle tue app in iOS 5, fai clic sulla casella di controllo Abilita diritti nel riquadro Riepilogo del tuo progetto. Xcode crea un file di diritti personalizzato per il tuo progetto che include automaticamente il tuo ID team. Puoi aggiungere ulteriori valori del contenitore iCloud come richiesto dalla tua applicazione. (Tieni presente che devi rigenerare i profili di provisioning esistenti, con Xcode o nel portale di provisioning iOS, per utilizzare l'archiviazione iCloud.)
  • La stringa dell'identificatore del contenitore che passi a URLForUbiquityContainerIdentifier: metodo di NSFileManager devono obbligatoriamente: includere l'ID della squadra all'inizio della stringa. Per comodità, puoi passare nil per recuperare il primo ID contenitore di documenti specificato nei diritti dell'app.
  • In iOS 5, i file protetti tramite Protezione dati non possono essere utilizzati con le API di archiviazione di iCloud.
  • Presentatori di file: oggetti che adottano il formato NSFilePresenter protocollo: non ricevono alcuni dei messaggi che dovrebbero ricevere, tra cui:

    Per risolvere il problema, implementare il file relinquishPresentedItemToWriter: metodo e controlla se lo scrittore ha effettivamente scritto quando il presentatore del file riacquisisce il file.

  • Se segnali un bug relativo alle interfacce di archiviazione di iCloud, includi i log raccolti durante la sessione di debug. Per generare questi registri è necessario installare sul dispositivo un profilo di debug speciale, che può essere ottenuto da http://connect.apple.com. Questo profilo consente la generazione di log di debug necessari per diagnosticare eventuali problemi utilizzando l'archiviazione iCloud. Le istruzioni per raccogliere i log sono:
    1. Installa il profilo. (Il modo più semplice per farlo è inviarlo a te stesso per posta e aprire l'allegato sul tuo dispositivo.)
    2. Riprodurre l'errore.
    3. Sincronizza con iTunes per estrarre i registri dal tuo dispositivo.
    4. Allega i log alla tua segnalazione di bug. Puoi trovare i log in ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.

    Questi registri possono diventare grandi molto rapidamente, quindi dovresti rimuovere il profilo dopo aver riprodotto il problema ed estratto i registri del tuo dispositivo.

  • I nomi dei file non fanno distinzione tra maiuscole e minuscole in Mac OS X ma fanno distinzione tra maiuscole e minuscole in iOS. Ciò può portare a problemi durante la condivisione di file tra i due utilizzando iCloud. Dovresti adottare misure su iOS per evitare di creare file i cui nomi differiscono solo per maiuscole e minuscole.

iTunes

  • La versione di iTunes fornita con la versione GM non può sincronizzare i dispositivi su cui è installato il software beta 7. Per evitare questo problema, procedere come segue:
    1. Sincronizza tutti i dispositivi su cui è installata la beta 7 con la versione di iTunes fornita con la beta 7.
    2. Aggiorna iTunes alla versione fornita con la versione GM.
    3. Collega il dispositivo e installa il software GM. (Tieni presente che potresti visualizzare un errore di sincronizzazione non riuscita quando colleghi il dispositivo per la prima volta.)
    4. Dopo aver installato il software GM, ripristina dal backup effettuato nel passaggio 1.

music Player

  • FISSO: Quando si elimina un brano o un video da Musica/Video sul dispositivo, l'app Lettore musicale si blocca.

Sicurezza

  • In iOS 5 la firma di certificati con firme MD5 non è supportata. Assicurati che i certificati utilizzino algoritmi di firma basati su SHA1 o SHA2.

Trampolino

  • Le notifiche push e locali per le app vengono visualizzate nel nuovo Centro notifiche in iOS 5. Il Centro notifiche visualizza le notifiche considerate "non lette". Per accogliere le notifiche push e locali che non hanno uno stato non letto, imposta il conteggio dei badge dell'applicazione su 0 per cancellare le notifiche dell'app dal Centro notifiche.

Automazione dell'interfaccia utente

  • Quando si utilizza la performTaskWithPathArgumentsTimeout metodo di UIAHost in uno script di UI Automation in cui l'API genera un output eccessivo (ad esempio, migliaia di righe di testo) in standard out o standard error, l'attività potrebbe bloccarsi fino al raggiungimento del timeout, a quel punto genererà un'eccezione JavaScript.
  • lock() ed unlock() funzioni di UIATarget sono stati sostituiti con il lockForDuration() funzione.
  • In iOS 5, ora puoi attivare l'esecuzione di uno script di UI Automation su un dispositivo iOS dal terminale host utilizzando lo strumento strumenti. Il comando è:
    • instruments -w <device id> -t <template> <application>
  • Quando utilizzi gli strumenti CLI per l'automazione dell'interfaccia utente, ora puoi scegliere come target il modello di automazione predefinito e passare lo script e il percorso dei risultati nello strumento come opzioni della variabile di ambiente. Per esempio:
    • 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

  • I callback di rotazione in iOS 5 non vengono applicati ai controller di visualizzazione presentati a schermo intero. Ciò significa che se il codice presenta un controller di visualizzazione su un altro controller di visualizzazione e quindi l'utente successivamente ruota il dispositivo con un orientamento diverso, al momento dell'eliminazione, il controller sottostante (ovvero il controller di presentazione) non riceverà alcun callback di rotazione. Tieni presente tuttavia che il controller presentante riceverà un file viewWillLayoutSubviews chiamare quando viene nuovamente visualizzato e il file interfaceOrientation La proprietà può essere interrogata da questo metodo e utilizzata per disporre correttamente il controller.
  • In iOS 5, il UIPickerView la classe non lo invia pickerView:didSelectRow:inComponent: messaggio di delega in risposta alla selezione programmatica di un elemento.
  • Ritornando nil dal tableView:viewForHeaderInSection: (o il suo equivalente footer) non è più sufficiente per nascondere un'intestazione. Devi sovrascrivere tableView:heightForHeaderInSection: e ritorno0.0 per nascondere un'intestazione.
  • In iOS 5, il UITableView La classe ha due metodi per spostare una cella da una riga all'altra con parametri definiti. Queste API hanno:
  • Usando il UIWebView classe in Interface Builder, l'impostazione di un colore di sfondo trasparente è possibile in iOS 5. Gli sviluppatori che compilano con il nuovo SDK possono controllare il loro XIB per il UIWebView impostazioni trasparenti.
  • In iOS 5, il UINavigationBarUIToolbarUITabBar le implementazioni sono cambiate in modo che il drawRect: il metodo non viene chiamato a meno che non sia implementato in una sottoclasse. App che sono state reimplementatedrawRect: in una categoria su una qualsiasi di queste classi scoprirà che il drawRect: il metodo non viene chiamato. UIKit esegue il controllo dei collegamenti per evitare che il metodo venga chiamato nelle app collegate prima di iOS 5 ma non supporta questo design su iOS 5 o versioni successive. Le app possono:
    • Utilizza l'API di personalizzazione per le barre in iOS 5 e versioni successive, che è la modalità preferibile.
    • sottoclasse UINavigationBar (o le altre classi di barre) e sovrascrivere drawRect: nella sottoclasse.
  • indexPathForRow:inSection:sectionrow metodi di NSIndexPath ora usa NSInteger invece di NSUInteger, in modo che questi tipi corrispondano ai metodi definiti su UITableView.
  • Il comportamento del UITableView classe scrollToRowAtIndexPath:atScrollPosition:animated: il metodo è cambiato. Se una posizione di scorrimento di UITableViewScrollPositionTop orUITableViewScrollPositionBottom è specificato, il metodo ora si adatta alle parti superiore e inferiore del file contentInset proprietà.
  • Nelle versioni precedenti a iOS 5, il UIPopoverController La classe imposterebbe incondizionatamente le maschere di ridimensionamento automatico dei controller di visualizzazione che fornivano il contenuto per il controller popover. Inoltre imposterebbe incondizionatamente le maschere di ridimensionamento automatico delle visualizzazioni dei controller di visualizzazione inseriti su a UINavigationController oggetto che era il controller di visualizzazione del contenuto del controller popover UIPopoverController class non lo fa più per le applicazioni collegate a iOS 5 o versioni successive. Gli sviluppatori dovrebbero assicurarsi che le maschere di ridimensionamento automatico delle visualizzazioni siano impostate correttamente per consentire il ridimensionamento arbitrario all'interno di qualsiasi contenitore, non solo dei popover. Via la maschera (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) è ragionevole.
  • Il gestore di completamento per saveToURL:forSaveOperation:completionHandler: viene chiamato all'esterno del blocco di scrittura coordinato.
  • autosaveWithCompletionHandler: Il metodo ora viene richiesto solo per i risparmi basati sul periodo quando è sicuro restituire senza risparmiare. I documenti devono essere salvati, tuttavia, se il filesaveToURL:forSaveOperation:completionHandler: viene invocato il metodo

Safari e WebKit

  • In iOS 5, una nuova proprietà CSS ereditata, -webkit-overflow-scrolling, è disponibile. Il valore touch consente allo sviluppatore web di attivare lo scorrimento in stile nativo in un file overflow:scroll elementi. Il valore predefinito per questa proprietà è auto, che consente lo scorrimento con un solo dito senza slancio.
  • Il framework WebKit è stato aggiornato a una versione che si avvicina molto al motore utilizzato da Safari 5.1 sul desktop. Ci sono alcune aree di cui tenere conto con il nuovo framework WebKit su iOS 5. Nello specifico, per i siti Web e le app native che utilizzano UIWebView:
    • C'è un nuovo parser compatibile con HTML5.
    • La larghezza del layout del testo potrebbe cambiare leggermente perché il comportamento di arrotondamento delle parole ora ha una precisione basata sulla virgola mobile.
    • È stata migliorata la convalida di <input type=number> campo modulo, che include la rimozione degli zeri iniziali e la formattazione dei numeri.
    • Gli eventi touch sono ora supportati nei campi di input.
    • <input type=range> è ora supportato.
    • window.onerror è ora supportato.
    • È presente un nuovo agente utente che non contiene informazioni sulla lingua nella stringa Agente utente.
    • Gli URL vengono ora canonizzati rendendo lo schema tutto in minuscolo. Se viene utilizzato un URL falso per passare informazioni da a UIWebView tornando al codice nativo, assicurati che lo schema sia sempre minuscolo o che il codice nativo confronti lo schema senza distinzione tra maiuscole e minuscole.

Sincronizzazione Wi-Fi

  • Il supporto della sincronizzazione wireless richiede Mac OS X 10.6.8 o Lion. Vedrai un'opzione per abilitare la sincronizzazione wireless quando colleghi il tuo dispositivo a iTunes con il cavo USB. Si consiglia di eseguire la sincronizzazione iniziale con un cavo dopo aver ripristinato il dispositivo.
    • La sincronizzazione wireless viene attivata automaticamente quando il dispositivo è collegato all'alimentazione e sulla stessa rete del computer associato. In alternativa, puoi attivare manualmente una sincronizzazione da iTunes o da Impostazioni > Generali > Sincronizzazione iTunes (è richiesta la stessa rete del computer associato).
    • Se riscontri problemi con app, contenuti multimediali e/o foto sincronizzati sul tuo dispositivo, puoi reimpostare e quindi sincronizzare nuovamente. Da Impostazioni > Generali > Ripristina, scegli Cancella tutto il contenuto e le impostazioni. Quindi riconnettiti a iTunes e sincronizza nuovamente.

Strumenti Xcode

Per informazioni sulle modifiche a Xcode, Interface Builder, Instruments e iOS Simulator, vedere Note sulla versione di Xcode.