Registro delle modifiche di iOS 8.1 beta 1

  Dopo il sorprendente lancio di iOS beta 8.1 1 per iPhone, iPad e iPod Touchsocietà Apple ha inoltre pubblicato un changelog in cui descrive le varie modifiche da lui implementate per i nostri terminali. Come potrete vedere dal testo disponibile di seguito, le principali modifiche apportate dall'azienda americana sono strettamente rivolte al funzionamento del sistema operativo, ma ovviamente non mancano altre novità “di superficie”.

  L'intero registro delle modifiche per iOS 8.1 1 beta potete vederlo qui sotto, e tornerò con ulteriori dettagli sulle modifiche visibili implementate dall'azienda Apple in un successivo articolo.

Registro delle modifiche di iOS 8.1 beta 1

Note e problemi noti
I seguenti problemi riguardano l'utilizzo di iOS SDK 8.1 per sviluppare codice.

AVCapture
Problema conosciuto
L'uso della nuova costante, AVCaptureISOCurrent, comporterà valori ISO incoerenti (come osservato nella proprietà ISO) se setExposureModeCustomWithDuration:ISO:completionHandler: viene chiamato ripetutamente.
Cloud Kit
Note:
Una singola istanza di CKAsset non può più essere impostata come valore su più CKRecord.
Contatti
Note:
Il selettore persone dell'interfaccia utente della Rubrica è stato modificato per iOS 8. È stata aggiunta una nuova modalità con una nuova API in cui l'app non necessita dell'accesso ai contatti dell'utente e all'utente non verrà richiesto l'accesso. Una copia temporanea della persona selezionata viene restituita all'app. Per ulteriori dettagli, vedere ABPeoplePickerNavigationController.h.

Guarda il nuovo progetto di esempio PeoplePicker: Picking a Person or Property che dimostra l'utilizzo della nuova modalità.
Fornitori di documenti
Note
La tua app necessita del diritto iCloud per poter essere utilizzata come fornitore di documenti.
Il diritto com.apple.developer.icloud-container-identifiers sarà richiesto quando verrà rilasciato iOS 8.
Problemi noti
Dopo aver ruotato il selettore documenti in orizzontale, la barra di stato viene nascosta.
Quando si apre il selettore documenti in orizzontale, la vista contenitore può essere spostata sotto la barra di navigazione.
Estensioni
Note
Le estensioni necessitano di una slice arm64 per essere eseguite su dispositivi a 64 bit. Se provi a eseguire la slice armv7 su un dispositivo a 64 bit, non funzionerà.
Le app devono avere una slice arm64 se il pacchetto contiene un framework a cui sono collegate sia l'app che l'estensione dell'app.
File System
Note:
Il layout del file system dei contenitori delle app è cambiato sul disco. Invece di fare affidamento sulla struttura di directory hardcoded, utilizzare la funzione NSSearchPathForDirectoriesInDomains o il metodo URLForDirectory:inDomain:appropriateForURL:create:error: della classe NSFileManager. Vedere Accesso a file e directory nella Guida alla programmazione del file system.
Caratteri
Note:
Il carattere del sistema tailandese è stato aumentato di dimensioni per migliorare la leggibilità. Ciò causerà il ritaglio in molti punti dell'interfaccia utente se non intraprendi le azioni appropriate:

Usa UILabel il più possibile. Se utilizzi Interface Builder, assicurati che Sottovisualizzazioni clip non sia selezionato. UIKit aumenterà l'area di ritaglio secondo necessità per non ritagliare il testo.
Utilizza il tipo dinamico. Ciò garantirà che non vi siano glifi sovrapposti nelle etichette multilinea o nei campi di testo.
Se non puoi fare 1 e 2 perché implementi le tue opinioni, devi implementare misure per non ritagliare. Puoi utilizzare CoreText per individuare l'area di ritaglio appropriata per una riga di testo chiamando:

CTLineGetBoundsWithOptions(lineRef, kCTLineBoundsIncludeLanguageExtents);
Per evitare la sovrapposizione di glifi negli elementi di testo multilinea, regolare l'altezza della linea. Si consiglia un ulteriore 30%.

Questa misura aiuterà anche la tua app a funzionare meglio in altre lingue, tra cui arabo, hindi e vietnamita.
Controller di gioco
Risolto il problema con iOS 8.1 Beta
L'inoltro di GameController potrebbe non funzionare.
HealthKit
Note:
Il codice che tenta di leggere le informazioni sull'allenamento in HealthKit potrebbe non essere in grado di effettuare query successive a HealthKit.

Se utilizzi HKWorkouts dovresti evitare di leggere gli allenamenti quando esegui versioni iOS precedenti alla 8.1 con:

NSOperatingSystemVersion ios8_1_0 = (NSOperatingSystemVersion){8, 1, 0};
if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:ios8_1_0]) {
// Legge e scrive le informazioni sull'allenamento nel kit sanitario.
} Else {
// Scrive le informazioni sull'allenamento nel kit sanitario
}
Risolto il problema con iOS 8.1 Beta
La consegna in background dei dati HealthKit non funziona come previsto.
iCloud
Note:
Il trasferimento della posta e AirDrop potrebbero smettere di funzionare dopo aver modificato la password iCloud su appleid.apple.com.

Soluzione alternativa: esci e rientra in iCloud sul dispositivo.
iCloud Backup
Problema conosciuto
Dopo il ripristino dal backup iCloud potresti non essere in grado di sincronizzare nuova musica o film da iTunes.
iCloud unità
Note:
URLForUbiquityContainerIdentifier: potrebbe restituire zero quando si esegue l'applicazione in Xcode. In tal caso, apri Preferenze di Sistema, vai su iCloud > iCloud Drive e abilita Xcode.
iCloud Keychain
Risolto il problema con iOS 8.1 Beta
Quando accede a iCloud, un utente potrebbe riscontrare un ripristino del portachiavi sugli altri dispositivi che erano precedentemente nella cerchia.
Gli elementi portachiavi protetti da Touch ID non consentono SecItemUpdate. SecItemUpdate restituisce sempre errSecInteractionNotAllowed.
tastiere
Risolto il problema con iOS 8.1 Beta
L'accesso alla rete viene disabilitato dopo l'aggiunta di una nuova tastiera dallo stesso pacchetto.
Le tastiere personalizzate potrebbero diventare vuote dopo il cambio dell'app.
Problema conosciuto
Le tastiere di terze parti potrebbero non essere visualizzate in Safari, Mappe o nelle app di terze parti sul simulatore.

Soluzione alternativa: le tastiere dovrebbero essere testabili in Calendario, Spotlight, Contatti e Foto.
posta
Risolto il problema con iOS 8.1 Beta
L'applicazione della restrizione Consenti modifica account a un dispositivo senza account di posta configurato consentirà comunque a un utente di creare un account di posta avviando l'app di posta.
Metallo
Risolto il problema con iOS 8.1 Beta
Quando modifichi uno shader di file metal utilizzando la compilazione offline per creare una libreria metallib di dimensioni ridotte, la libreria metallib non verrà caricata sul dispositivo.

Soluzione alternativa: eliminare la libreria metallib prima di ricrearla eseguendo una pulizia in Xcode o rimuovendo manualmente il file prima di creare l'archivio.
Centro di notifica
Note:
La pianificazione e l'uso previsto di widgetPerformUpdateWithCompletionHandler: è inteso come una comoda sede per tutta la logica di aggiornamento dei dati/modello. Se implementato, il sistema chiamerà al momento opportuno il widget per aggiornare il suo stato, sia quando il Centro notifiche è visibile, sia in background. È necessaria un'implementazione per abilitare gli aggiornamenti in background. Si prevede che il widget esegua il lavoro di aggiornamento in modo asincrono e il più possibile fuori dal thread principale. I widget dovrebbero chiamare il blocco degli argomenti una volta completato il lavoro, passando l'NCUpdateResult appropriato. I widget NON devono bloccare il ritorno da viewWillAppear: sui risultati di questa operazione. Invece, i widget dovrebbero caricare lo stato memorizzato nella cache in viewWillAppear: per corrispondere allo stato della vista dall'ultimo viewWillDisappear:, quindi passare agevolmente ai nuovi dati quando arrivano.
NSURLSession
Note:
La classe NSURLSessionTask fornisce una nuova proprietà "priorità" con tre costanti associate: NSURLSessionTaskPriorityDefault, NSURLSessionTaskPriorityLow e NSURLSessionTaskPriorityHigh. Le priorità NSURLSessionTask possono essere utilizzate per specificare la priorità a più richieste e risposte allo stesso host. Tieni presente che la priorità è un suggerimento e non una garanzia rigorosa delle prestazioni di NSURLSessionTask.

Per i dettagli completi sull'utilizzo delle priorità NSURLSessionTask, fare riferimento al file di intestazione NSURLSession.h, fornito dal framework Foundation.
Telefono
Note:
Per attivare la funzionalità di chiamata Wi-Fi per T-Mobile (solo Stati Uniti), attenersi alla seguente procedura:

Vai su Impostazioni > Telefono > Chiamate Wi-Fi.
Imposta l'interruttore Chiamate Wi-Fi su ON.
Se il corriere non dispone dell'indirizzo di emergenza registrato dell'utente, ti verrà chiesto di aggiungerlo prima dell'attivazione della funzione.
Foto
Note
Mantieni un backup della tua libreria di foto prima di abilitare e durante l'utilizzo della versione beta della libreria di foto di iCloud:

Importazione sul tuo Mac utilizzando iPhoto
Importazione sul tuo Mac utilizzando Acquisizione Immagine
La versione beta della libreria foto di iCloud non scaricherà foto e video che sono stati sincronizzati sul tuo dispositivo da iTunes. Tutte le foto e i video sincronizzati sul tuo dispositivo da iTunes verranno rimossi quando abiliti la versione beta della libreria foto di iCloud.
iPhoto per iOS non verrà avviato su iOS 8 Beta. L'avvio di Photos.app migrerà le modifiche di iPhoto alla libreria foto di iOS 8. Assicurati che i dati di iPhoto per iOS siano inclusi nel backup del dispositivo.
Risolto il problema con iOS 8.1 Beta
La possibilità di ottimizzare automaticamente lo spazio sul dispositivo è abilitata per tutti gli account superiori a 5 GB.
Problemi noti
Se la versione beta della libreria foto di iCloud è abilitata, Impostazioni -> iCloud -> Foto potrebbe bloccarsi.

Soluzione alternativa: utilizzare Impostazioni -> Foto e fotocamera per gestire le impostazioni per Foto.
La possibilità di ottimizzare automaticamente lo spazio sul dispositivo è abilitata per tutti gli account superiori a 5 GB.
Quando utilizzi Condivisione famiglia iCloud, sono abilitati sia Condivisione foto iCloud che Il mio streaming foto.
Profili di approvvigionamento
Problema conosciuto
Se hai effettuato l'aggiornamento alla versione 8.1 Beta dalle beta di iOS 8 potresti vedere le tue app bloccarsi a causa di problemi del profilo di provisioning.

Soluzione:

Collega il dispositivo tramite USB al tuo Mac
Avvia Xcode
Scegli Finestra -> Dispositivi
Fare clic con il tasto destro sul dispositivo nella colonna di sinistra, selezionare "Mostra profili di provisioning"
Fare clic sul profilo di provisioning in questione
Premi il bottone
Continua a rimuovere tutti i profili interessati.
Reinstallare l'app
Sintesi vocale
Risolto il problema con iOS 8.1 Beta
AVSpeechSynthesizer potrebbe non funzionare.

Soluzione alternativa: se non senti il ​​parlato in una lingua o un dialetto particolare, vai su Impostazioni > Generali > Accessibilità > Voce > Voci > Lingua e scarica la voce di qualità avanzata per quella lingua/dialetto.
Negozi
Risolto il problema con iOS 8.1 Beta
A volte, il caricamento di determinate pagine o l'esecuzione di una ricerca sull'App Store o sull'iTunes Store possono risultare lenti.
UIKit
Note
UILabel ha un valore predefinito di YES per clipsToBounds. Ciò differisce dal normale valore predefinito di UIView pari a NO.
Le API leftLayoutGuide e rightLayoutGuide sono state rimosse. Utilizza invece la proprietà layoutMargins.
Risolto il problema con iOS 8.1 Beta
Il supporto dei file RTF in UIWebView è interrotto.

Soluzione alternativa: mostrare i file RTF all'utente consiste nell'utilizzare il framework Quick Look (QLPreviewController) o nel caricare un NSAttributedString dal file RTF e mostrarlo in un UITextView, che renderà il contenuto in un modo molto più pulito.
WebKit
Note:
L'API Navigation Timing è stata disabilitata solo su iOS a causa di problemi di prestazioni.
Chiamate Wi-Fi (solo T-Mobile USA)
Note:
Il nome dell'operatore nella barra di stato mostrerà "T-Mobile Wi-Fi" quando il dispositivo è in grado di effettuare e ricevere chiamate Wi-Fi.