Multitasking per iPad in Xamarin.iOS
iOS 9 supporta due app in esecuzione contemporaneamente, usando diapositive o doppia visualizzazione. Supporta anche la riproduzione di video picture-in-picture.
iOS 9 aggiunge il supporto multitasking per l'esecuzione simultanea di due app su hardware iPad specifico. Il multitasking per iPad è supportato tramite le funzionalità seguenti:
- Slide Over : consente all'utente di eseguire temporaneamente una seconda app iOS in un pannello di scorrimento (sul lato destro o sinistro dello schermo in base alla direzione della lingua) che copre circa il 25% dell'app principale attualmente in esecuzione. Slide Over è disponibile solo su iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4.
- Split View : sull'hardware iPad supportato (solo iPad Air 2, iPad Mini 4 e iPad Pro), l'utente può selezionare una seconda app ed eseguirla side-by-side con l'app attualmente in esecuzione in modalità split screen. L'utente può controllare la percentuale della schermata principale occupata da ogni app.
- Immagine nell'immagine : per le app che riproduceno contenuto video, il video può ora essere riprodotto in una finestra spostabile e ridimensionabile che si sposta sulle altre app attualmente in esecuzione nel dispositivo iOS. L'utente ha il controllo completo sulle dimensioni e sulla posizione di questa finestra. L'immagine nell'immagine è disponibile solo in un iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4.
Esistono diversi aspetti da considerare quando si supporta il multitasking nell'app, tra cui:
- Dimensioni e orientamento dello schermo
- Tasti di scelta rapida hardware personalizzati
- Gestione risorse
Gli sviluppatori di app possono anche rifiutare esplicitamente il multitasking, inclusa la disabilitazione della riproduzione video PIP.
Questo articolo illustra i passaggi necessari per garantire che l'app Xamarin.iOS venga eseguita correttamente in un ambiente multitasking o come rifiutare esplicitamente il multitasking se non è adatta per l'app.
Video multitasking per iPad
Guida introduttiva al multitasking
Per supportare Slide Over o Split View , l'app deve eseguire le operazioni seguenti:
- Essere compilati con iOS 9 (o versione successiva).
- Usa uno storyboard per la schermata di avvio e non gli asset di immagine.
- Usare uno storyboard con le classi Autolayout e Size per l'interfaccia utente.
- Supporta tutti e 4 gli orientamenti dei dispositivi iOS (verticale, verticale rovesciato, orizzontale a sinistra e orizzontale a destra).
Informazioni sul multitasking per iPad
iOS 9 offre nuove capacità multitasking su iPad con l'introduzione di Slide Over, Split View (iPad Air 2, iPad Mini 4 e solo iPad Pro) e Picture in Picture. Queste funzionalità verranno esaminate più in dettaglio nelle sezioni seguenti.
Diapositiva su
La funzionalità Slide Over consente all'utente di selezionare una seconda app e visualizzarla in un piccolo pannello scorrevole per offrire un'interazione rapida. Il pannello Slide Over è temporaneo e si chiude quando l'utente torna a lavorare nuovamente con l'app principale.
La cosa principale da ricordare è che l'utente decide quali due app verranno eseguite side-by-side e che lo sviluppatore non ha alcun controllo su questo processo. Di conseguenza, è necessario eseguire alcune operazioni per assicurarsi che l'app Xamarin.iOS venga eseguita correttamente in un pannello Slide Over:
- Usare classi autolayout e dimensioni : poiché l'app Xamarin.iOS può ora essere eseguita nel pannello laterale di scorrimento, non è più possibile fare affidamento sul dispositivo, sulle dimensioni dello schermo o sul relativo orientamento per il layout dell'interfaccia utente. Per assicurarsi che l'app venga ridimensionata correttamente, è necessario usare classi di ridimensionamenti automatici e dimensioni. Per altre informazioni, vedere la documentazione introduttiva agli storyboard unificati.
- Usa le risorse in modo efficiente : poiché l'app può ora condividere il sistema con un'altra app in esecuzione, è fondamentale che l'app usi in modo efficiente le risorse di sistema. Quando la memoria diventa sparse, il sistema terminerà automaticamente l'app che consuma la maggior parte della memoria. Per altri dettagli, vedere la Guida all'efficienza energetica di Apple per le app iOS.
Slide Over è disponibile solo su iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4. Per altre informazioni sulla preparazione dell'app per Slide Over, vedi la documentazione sull'adozione di Miglioramenti multitasking di Apple su iPad .
Visualizzazione suddivisa
Nell'hardware iPad supportato (solo iPad Air 2, iPad Mini 4 e iPad Pro), l'utente può scegliere una seconda app ed eseguirla side-by-side con l'app attualmente in esecuzione in modalità split screen. L'utente può controllare la percentuale della schermata principale occupata da ogni app trascinando un divisore sullo schermo.
Come Slide Over, l'utente decide quali due app verranno eseguite side-by-side e di nuovo, lo sviluppatore non ha alcun controllo su questo processo. Di conseguenza, la doppia visualizzazione pone requisiti simili in un'app Xamarin.iOS:
- Usare classi autolayout e dimensioni : poiché l'app Xamarin.iOS può ora essere eseguita in modalità split screen con le dimensioni specificate dall'utente, non è più possibile fare affidamento sul dispositivo, sulle dimensioni dello schermo o sul relativo orientamento per il layout dell'interfaccia utente. Per assicurarsi che l'app venga ridimensionata correttamente, è necessario usare classi di ridimensionamenti automatici e dimensioni. Per altre informazioni, vedere la documentazione introduttiva agli storyboard unificati.
- Usa le risorse in modo efficiente : poiché l'app può ora condividere il sistema con un'altra app in esecuzione, è fondamentale che l'app usi in modo efficiente le risorse di sistema. Quando la memoria diventa sparse, il sistema terminerà automaticamente l'app che consuma la maggior parte della memoria. Per altri dettagli, vedere la Guida all'efficienza energetica di Apple per le app iOS.
Per altre informazioni sulla preparazione dell'app per split view, vedi la documentazione sull'adozione di Miglioramenti multitasking di Apple su iPad .
Immagine nell'immagine
La nuova funzionalità Picture in Picture (nota anche come PIP) consente all'utente di guardare un video in una piccola finestra mobile che l'utente può posizionare ovunque sullo schermo sopra altre app in esecuzione.
Come per Slide Over e Split View, l'utente ha il controllo completo sul guardare un video in modalità Immagine. Se la funzione principale dell'app consiste nell'guardare il video, sarà necessario apportare alcune modifiche per comportarsi correttamente in modalità PIP. In caso contrario, non sono necessarie modifiche per supportare PIP.
Affinché l'app visualizzi video PIP alla richiesta dell'utente, dovrai usare AVKit o le API AV Foundation. Il framework Lettore multimediale è stato deprecato in iOS 9 e non supporta PIP.
L'immagine nell'immagine è disponibile solo in un iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4. Per altre informazioni, vedere la documentazione relativa all'immagine di Apple nella guida introduttiva alle immagini.
Supporto del multitasking nell'app
Per qualsiasi app Xamarin.iOS esistente, il supporto del multitasking è un'attività trasparente, purché l'app segua già le guide di progettazione e le procedure consigliate di Apple per iOS 8. Ciò significa che l'app deve usare storyboard con classi autolayout e dimensioni per i relativi layout dell'interfaccia utente (vedere introduzione agli storyboard unificati per altre informazioni).
Per queste app, sono necessarie piccole o nessuna modifica per supportare il multitasking e per comportarsi bene al suo interno. Se l'interfaccia utente dell'app è stata creata usando altri metodi, ad esempio il posizionamento diretto e il ridimensionamento degli elementi dell'interfaccia utente nel codice C# o se si basa su specifiche dimensioni o orientamenti dello schermo del dispositivo, sarà necessaria una modifica significativa per supportare correttamente il multitasking iOS 9.
Per supportare il multitasking di iOS 9 in qualsiasi nuova app Xamarin.iOS, usare di nuovo storyboard con classi autolayout e dimensioni per tutti i layout dell'interfaccia utente dell'app e implementare le istruzioni nelle sezioni seguenti.
Considerazioni sulle dimensioni dello schermo e sull'orientamento
Prima di iOS 9, è possibile progettare l'app in base a specifiche dimensioni e orientamenti dello schermo del dispositivo. Poiché un'app può ora essere eseguita in un pannello Slide Out o in modalità Split View, può trovarsi in esecuzione in una classe di dimensioni orizzontali compatta o regolare su iPad, indipendentemente dall'orientamento fisico o dalle dimensioni dello schermo del dispositivo.
In un iPad un'app a schermo intero ha classi di dimensioni orizzontali e verticali normali. Tutti iPhone, ma iPhone 6 Plus e iPhone 6s Plus, hanno classi Compact Size in entrambe le direzioni in qualsiasi orientamento. IPhone 6 Plus e iPhone 6s Plus in modalità orizzontale hanno una classe di dimensioni orizzontali regolari e una classe di dimensioni verticali compatta (molto simile a un iPad Mini).
In iPad che supportano Slide Over e Split View, è possibile ottenere le combinazioni seguenti:
Orientamento | App primaria | App secondaria |
---|---|---|
Verticale | 75% dello schermo Orizzontale compatto Verticale normale |
25% dello schermo Orizzontale compatto Verticale normale |
Orizzontale | 75% dello schermo Orizzontale normale Verticale normale |
25% dello schermo Orizzontale compatto Verticale normale |
Orizzontale | 50% dello schermo Orizzontale compatto Verticale normale |
50% dello schermo Orizzontale compatto Verticale normale |
Nell'app di esempio, se viene eseguito a schermo intero in un iPad in modalità orizzontale, presenterà sia l'elenco che la visualizzazione dei dettagli contemporaneamente:
Se la stessa app viene eseguita in un pannello Slide Over, viene disposta come classe di dimensioni orizzontali compatta e visualizza solo l'elenco:
Per assicurarsi che l'app si comporti correttamente in queste situazioni, è consigliabile adottare raccolte di caratteristiche insieme alle classi di dimensioni e conformi alle IUIContentContainer
interfacce e IUITraitEnvironment
. Per altre informazioni, vedere Le informazioni di riferimento sulle classi UITraitCollection di Apple e la guida introduttiva agli storyboard unificati.
Inoltre, non puoi più fare affidamento sui limiti dello schermo dei dispositivi per definire l'area visibile dell'app, dovrai invece usare i limiti della finestra dell'app. Poiché i limiti della finestra sono completamente sotto il controllo dell'utente, non è possibile modificarli a livello di codice o impedire all'utente di modificare questi limiti.
Infine, l'app deve usare un file storyboard per presentare la schermata di avvio invece di usare un set di file di immagine .png e supportare tutti e quattro gli orientamenti dell'interfaccia (verticale, verticale, orizzontale a sinistra e orizzontale destra) da considerare per l'esecuzione in un pannello Slide Over o in modalità split view.
Tasti di scelta rapida hardware personalizzati
In iOS 9 in esecuzione su un iPad Apple ha esteso il supporto per le tastiere hardware. IPad hanno sempre incluso il supporto della tastiera esterna di base tramite Bluetooth e alcuni produttori di tastiere hanno creato tastiere che includevano tasti specifici di iOS hard cablati.
Ora, con iOS 9, le app possono creare scelte rapide da tastiera personalizzate. Inoltre, alcuni tasti di scelta rapida di base sono disponibili come Command-C (copia), Command-X (taglia), Command-V (incolla) e Command-Shift-H (home), senza che un'app venga scritta specificamente a loro.
La scheda comando visualizzerà un commutatore di app che consente all'utente di passare rapidamente da una tastiera all'altra, in modo analogo a Mac OS:
Se un'app iOS 9 include tasti di scelta rapida, l'utente può tenere premuto i tasti di comando, opzione o controllo per visualizzarli in un popup:
Definizione di tasti di scelta rapida personalizzati
Se aggiungiamo il codice seguente a un controllo View o View Controller nell'app, quando tale visualizzazione o controller è visibile, sarà disponibile un tasto di scelta rapida personalizzato:
#region Custom Keyboard Shortcut
public override bool CanBecomeFirstResponder {
get { return true; }
}
public override UIKeyCommand[] KeyCommands {
get {
var keyCommand = UIKeyCommand.Create (new NSString("n"), UIKeyModifierFlags.Command, new Selector ("NewEntry"), new NSString("New Entry"));
return new UIKeyCommand[]{ keyCommand };
}
}
[Export("NewEntry")]
public void NewEntry() {
// Add a new entry
...
}
#endregion
Prima di tutto, si esegue l'override della CanBecomeFirstResponder
proprietà e viene restituita true
in modo che view o view controller possa ricevere l'input da tastiera.
Successivamente, si esegue l'override della KeyCommands
proprietà e si crea un nuovo UIKeyCommand
per la sequenza di tasti Command-N . Quando la sequenza di tasti viene attivata, viene chiamato il NewEntry
metodo (esposto a iOS 9 usando il Export
comando ) per eseguire l'azione richiesta.
Se si esegue questa app in un iPad con una tastiera hardware collegata e l'utente digita Command-N, verrà aggiunta una nuova voce all'elenco. Se l'utente tiene premuto il tasto Comando , verrà visualizzato l'elenco dei tasti di scelta rapida:
Considerazioni sulla gestione risorse
Anche per le app che usano già guide di progettazione e procedure consigliate di iOS 8, una gestione efficiente delle risorse potrebbe comunque essere un problema. In iOS 9 le app non hanno più uso esclusivo di memoria, CPU o altre risorse di sistema.
Di conseguenza, è necessario ottimizzare l'app Xamarin.iOS per usare in modo efficace le risorse di sistema o la terminazione in situazioni di memoria insufficiente. Questo è altrettanto vero per le app che rifiutano il multitasking, poiché una seconda app potrebbe essere ancora eseguita in un pannello Slide Over o in un'immagine nella finestra Immagine che richiede risorse aggiuntive o che la frequenza di aggiornamento scende al di sotto di 60 fotogrammi al secondo.
Considerare le azioni utente seguenti e le relative implicazioni:
- Immissione di testo in un pannello Slide Over : anche se l'app non dispone di input di testo, la tastiera di sistema può ora essere visualizzata sull'interfaccia utente. Di conseguenza, l'app potrebbe dover rispondere alle notifiche di visualizzazione della tastiera, ad esempio mostrando e nascondendo la tastiera.
- Esecuzione di una seconda app in un pannello Slide Over: la nuova app è ora in esecuzione in primo piano e in competizione con l'app esistente per le risorse di sistema, ad esempio i cicli di memoria e CPU.
- Riproduzione di un video in una finestra PIP: non solo questa finestra può coprire parte dell'interfaccia dell'app, ma l'app che ha avviato il video è ancora in esecuzione in background e usa risorse di CPU e memoria.
Per assicurarsi che l'app usi le risorse in modo efficiente, è necessario eseguire le operazioni seguenti:
- Profilare l'app con Instruments - Verificare la presenza di perdite di memoria, utilizzo della CPU eccessiva e aree in cui l'app potrebbe bloccare il thread principale.
- Rispondi ai metodi di transizione dello stato: nell'override del file AppDelegate.cs e risposta ai metodi di modifica dello stato, ad esempio l'immissione o la restituzione dall'app in background. Rilasciare tutti gli asset non riservati, ad esempio immagini, dati o visualizzazioni e controller di visualizzazione.
- Testare side-by-side con app a elevato utilizzo di memoria: eseguire l'app usando slide out e split view nell'hardware iOS fisico con un'app a elevato utilizzo di memoria, ad esempio Mappe (in modalità visualizzazione satellite) e verificare che entrambe le app rimangano reattive e non si arrestino in modo anomalo.
Per altre informazioni sulla gestione delle risorse, vedere la Guida all'efficienza energetica di Apple per le app iOS.
Rifiuto esplicito del multitasking
Anche se Apple suggerisce che tutte le app iOS 9 supportano il multitasking, potrebbero esserci motivi molto specifici per un'app non troppo, ad esempio giochi o app per fotocamere che richiedono il corretto funzionamento dell'intero schermo.
Per consentire all'app Xamarin.iOS di rifiutare esplicitamente l'esecuzione in un pannello Slide Out o in modalità Doppia visualizzazione, modificare il file Info.plist del progetto e selezionare Richiede schermo intero:
Importante
Anche se il rifiuto esplicito del multitasking impedisce l'esecuzione dell'app in Slide Out o Split View, non impedisce l'esecuzione di un'altra app in Slide Out o un'immagine nel video immagine da visualizzare insieme all'app.
Disabilitazione della riproduzione video PIP
Nella maggior parte dei casi, l'app deve consentire all'utente di riprodurre qualsiasi contenuto video visualizzato in un'immagine in una finestra mobile immagine. Tuttavia, potrebbero esserci situazioni in cui questo potrebbe non essere desiderato, ad esempio i video della scena di taglio del gioco.
Per rifiutare esplicitamente la riproduzione video PIP, eseguire le operazioni seguenti nell'app:
- Se si usa un oggetto per visualizzare un
AVPlayerViewController
video, impostare laAllowsPictureInPicturePlayback
proprietà sufalse
. - Se si usa per visualizzare il
AVPlayerLayer
video, non creare un'istanza diAVPictureInPictureController
. - Se si usa un oggetto per visualizzare un
WKWebView
video, impostare laAllowsPictureInPictureMediaPlayback
proprietà sufalse
.
Riepilogo
Questo articolo ha illustrato i passaggi necessari per garantire che un'app Xamarin.iOS venga eseguita e si comporti correttamente nella nuova capacità di multitasking di iOS 9 per iPad. Inoltre, ha coperto il rifiuto esplicito del multitasking per le app in cui non è una buona scelta.