Multitarea para iPad en Xamarin.iOS

iOS 9 admite dos aplicaciones que se ejecutan al mismo tiempo, mediante diapositivas o vistas divididas. También admite la reproducción de vídeo de imagen en imagen.

Ejemplo de pantalla divididaEjemplo de imagen en imagen

iOS 9 agrega compatibilidad multitarea para ejecutar dos aplicaciones al mismo tiempo en hardware iPad específico. La multitarea para iPad se admite a través de las siguientes características:

  • Deslizar sobre: permite al usuario ejecutar temporalmente una segunda aplicación de iOS en un panel deslizante (ya sea en el lado derecho o izquierdo de la pantalla en función de la dirección del idioma) que abarca aproximadamente el 25 % de la aplicación principal que se está ejecutando actualmente. La diapositiva solo está disponible en iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4.
  • Vista dividida: en hardware iPad compatible (solo iPad Air 2, iPad Mini 4 y iPad Pro), el usuario puede elegir una segunda aplicación y ejecutarla en paralelo con la aplicación que se está ejecutando actualmente en modo de pantalla dividida. El usuario puede controlar el porcentaje de la pantalla principal que ocupa cada aplicación.
  • Imagen en imagen: en el caso de las aplicaciones que reproducen contenido de vídeo, el vídeo ahora se puede reproducir en una ventana móvil y de tamaño ajustable que flota sobre las otras aplicaciones que se ejecutan actualmente en el dispositivo iOS. El usuario tiene control total sobre el tamaño y la posición de esta ventana. Imagen en imagen solo está disponible en iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4.

Hay una serie de aspectos que se deben tener en cuenta al admitir la multitarea en la aplicación,entre las que se incluyen:

Como desarrollador de aplicaciones, también puede rechazar la multitarea, incluida la deshabilitación de la reproducción de vídeo pip.

En este artículo se tratarán los pasos necesarios para asegurarse de que la aplicación xamarin.iOS se ejecuta correctamente en un entorno multitarea o cómo rechazar la multitarea si no es una buena opción para la aplicación.

Multitarea para iPad vídeo

Inicio rápido de multitarea

Para admitir diapositivas ovistas divididas, la aplicación debe hacer lo siguiente:

  • Se debe basar en iOS 9 (o superior).
  • Use un guión gráfico para su pantalla de inicio (y no los recursos de imagen).
  • Use un guión gráfico con clases de diseño automático y de tamaño para su interfaz de usuario.
  • Admite las 4 orientaciones de dispositivo iOS (Vertical, Vertical al revés, Horizontal a la izquierda & derecha).

Acerca de multitarea para iPad

iOS 9 ofrece nuevas capacidades de multitarea en iPad con la introducción de Diapositiva sobre ,Vista dividida (solo iPad Air 2, iPad Mini 4 y iPad Pro) e Imagen en imagen. Echaremos un vistazo más de cerca a estas características en las secciones siguientes.

Deslizar sobre

La característica Deslizar sobre permite al usuario elegir una segunda aplicación y mostrarla en un pequeño panel deslizante para proporcionar una interacción rápida. El panel Deslizar sobre es temporal y se cerrará cuando el usuario vuelva a trabajar con la aplicación principal.

Panel Deslizar sobre

Lo más importante que hay que recordar es que el usuario decide qué dos aplicaciones se ejecutarán en paralelo y que el desarrollador no tiene control sobre este proceso. Como resultado, hay algunas cosas que debe hacer para asegurarse de que la aplicación de Xamarin.iOS se ejecuta correctamente en un panel Deslizar sobre:

  • Usar clases de diseño automático y tamaño: dado que la aplicación xamarin.iOS ahora se puede ejecutar en el panel lateral deslizante, ya no puede confiar en el dispositivo, su tamaño de pantalla o su orientación para el diseño de la interfaz de usuario. Para asegurarse de que la aplicación escala su interfaz correctamente, deberá usar clases de diseño automático y de tamaño. Para obtener más información, vea nuestra documentación Introducción a los guiones gráficos unificados.
  • Usar recursos de forma eficaz: dado que la aplicación ahora puede compartir el sistema con otra aplicación en ejecución, es fundamental que la aplicación use los recursos del sistema de forma eficaz. Cuando la memoria se vuelve dispersa, el sistema finalizará automáticamente la aplicación que consume más memoria. Consulte la Guía de eficiencia energética de Apple para aplicaciones iOS para obtener más detalles.

La diapositiva solo está disponible en iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4. Para obtener más información sobre cómo preparar la aplicación para la diapositiva, consulte La adopción de mejoras multitarea de Apple en iPad documentación.

Vista dividida

En el hardware iPad compatible (solo iPad Air 2, iPad Mini 4 y iPad Pro), el usuario puede elegir una segunda aplicación y ejecutarla en paralelo con la aplicación que se está ejecutando actualmente en modo de pantalla dividida. El usuario puede controlar el porcentaje de la pantalla principal que ocupa cada aplicación arrastrando un divisor en pantalla.

Vista dividida

Al igual que la diapositiva, el usuario decide qué dos aplicaciones se ejecutarán en paralelo y, de nuevo, el desarrollador no tiene control sobre este proceso. Como resultado, la vista dividida aplica requisitos similares en una aplicación xamarin.iOS:

  • Usar clases de diseño automático y tamaño: dado que la aplicación xamarin.iOS ahora se puede ejecutar en un modo de pantalla dividida con el tamaño especificado por el usuario, ya no puede confiar en el dispositivo, su tamaño de pantalla o su orientación para el diseño de la interfaz de usuario. Para asegurarse de que la aplicación escala su interfaz correctamente, deberá usar clases de diseño automático y de tamaño. Para obtener más información, vea nuestra documentación Introducción a los guiones gráficos unificados.
  • Usar recursos de forma eficaz: dado que la aplicación ahora puede compartir el sistema con otra aplicación en ejecución, es fundamental que la aplicación use los recursos del sistema de forma eficaz. Cuando la memoria se vuelve dispersa, el sistema finalizará automáticamente la aplicación que consume más memoria. Consulte la Guía de eficiencia energética de Apple para aplicaciones iOS para obtener más detalles.

Para obtener más información sobre cómo preparar la aplicación para la vista dividida, consulte La adopción de mejoras multitarea de Apple en iPad documentación.

Imagen en imagen

La nueva característica Imagen en imagen (también conocida como PIP)permite al usuario ver un vídeo en una ventana flotante pequeña que el usuario puede colocar en cualquier lugar de la pantalla por encima de otras aplicaciones en ejecución.

Una imagen de ejemplo en la ventana flotante de imagen

Al igual que con diapositivas y vistas divididas, el usuario tiene control total sobre cómo ver un vídeo en el modo Imagen en imagen. Si la función principal de la aplicación es ver vídeo, necesitará alguna modificación para comportarse correctamente en modo PIP. De lo contrario, no se requiere ningún cambio para admitir PIP.

Para que la aplicación muestre vídeo PIP a petición del usuario, deberá usar AVKit o las API de AV Foundation. El Media Player se ha depreciado en iOS 9 y no admite PIP.

Imagen en imagen solo está disponible en iPad Pro, iPad Air, iPad Air 2, iPad Mini 2, iPad Mini 3 o iPad Mini 4. Para obtener más información, consulte nuestra aplicación de ejemplo PictureInPicture y la documentación de Apple Picture in Picture Inicio rápido.

Compatibilidad con multitarea en la aplicación

Para cualquier aplicación xamarin.iOS existente, la compatibilidad con la multitarea es una tarea transparente siempre que la aplicación ya siga las guías de diseño y los procedimientos recomendados de Apple para iOS 8. Esto significa que la aplicación debe usar guiones gráficos con autolayout y clases de tamaño para sus diseños de Interfaz de usuario (consulte nuestra Introducción a los guiones gráficos unificados para obtener más información).

Para estas aplicaciones, se requieren pocos o ningún cambio para admitir la multitarea y comportarse bien dentro de ella. Si la interfaz de usuario de la aplicación se creó con otros métodos, como colocar y cambiar el tamaño de los elementos de la interfaz de usuario directamente en el código de C#, o si se basa en tamaños de pantalla u orientaciones específicos del dispositivo, necesitará una modificación significativa para admitir correctamente la multitarea de iOS 9.

Para admitir la multitarea de iOS 9 en cualquier nueva aplicación de Xamarin.iOS, vuelva a usar guiones gráficos con autolayout y clases de tamaño para todos los diseños Interfaz de usuario de la aplicación e implemente las instrucciones de las secciones siguientes.

Consideraciones sobre el tamaño de la pantalla y la orientación

Antes de iOS 9, podía diseñar la aplicación con tamaños y orientaciones específicos de la pantalla del dispositivo. Dado que una aplicación ahora se puede ejecutar en un panel Deslizante o en modo de vista dividida, se puede encontrar en ejecución en una clase de tamaño horizontal compacta o normal en iPad, independientemente de la orientación física o el tamaño de pantalla del dispositivo.

Consideraciones sobre el tamaño de la pantalla y la orientación

En un iPad, una aplicación de pantalla completa tiene clases de tamaño horizontal y vertical normales. Todos los iPhone, iPhone 6 Plus y iPhone 6s Plus, tienen clases de tamaño compacto en ambas direcciones en cualquier orientación. Los iPhone 6 Plus y iPhone Plus de 6s en modo horizontal tienen una clase de tamaño horizontal normal y una clase de tamaño vertical compacta (muy parecido a una iPad Mini).

En los iPad que admiten deslizar y dividir vista, puede terminar con las siguientes combinaciones:

Orientación Aplicación principal Aplicación secundaria
Vertical 75 % de la pantalla
Horizontal compacto
Vertical normal
25 % de la pantalla
Horizontal compacto
Vertical normal
Horizontal 75 % de la pantalla
Horizontal normal
Vertical normal
25 % de la pantalla
Horizontal compacto
Vertical normal
Horizontal 50 % de la pantalla
Horizontal compacto
Vertical normal
50 % de la pantalla
Horizontal compacto
Vertical normal

En la aplicación MclusTask de ejemplo, si se ejecuta a pantalla completa en un iPad en modo horizontal, presentará la lista y la vista de detalles al mismo tiempo:

La lista y la vista de detalles presentadas al mismo tiempo

Si la misma aplicación se ejecuta en un panel deslizante, se presenta como una clase de tamaño horizontal compacto y muestra solo la lista:

Solo la lista presentada cuando el dispositivo es horizontal

Para asegurarse de que la aplicación se comporta correctamente en estas situaciones, debe adoptar colecciones de rasgos junto con clases de tamaño y ajustarse a las IUIContentContainerIUITraitEnvironment interfaces y . Consulte la referencia de la clase UITraitCollection de Apple y nuestra guía Introduction to Unified Storyboards (Introducción a los guiones gráficos unificados) para obtener más información.

Además, ya no puede confiar en los límites de pantalla de los dispositivos para definir el área visible de la aplicación; en su lugar, deberá usar los límites de ventana de la aplicación. Puesto que los límites de ventana están totalmente bajo el control del usuario, no puede ajustarlos mediante programación ni impedir que el usuario cambie estos límites.

Por último, la aplicación debe usar un archivo de guión gráfico para presentar su pantalla de inicio en lugar de usar un conjunto de archivos de imagen de.pngy admitir las cuatro orientaciones de interfaz (vertical, vertical, vertical vertical, horizontal izquierda y derecha horizontal) que se deben tener en cuenta para ejecutarse en un panel deslizante o en el modo de vista dividida.

Métodos abreviados de teclado de hardware personalizados

En iOS 9 que se ejecuta en un iPad, Apple tiene compatibilidad ampliada con teclados de hardware. Los iPad siempre han incluido compatibilidad básica con teclado externo a través de Bluetooth y algunos fabricantes de teclado crearon teclados que incluían teclas específicas de iOS cableadas de forma fuerte.

Ahora, con iOS 9, las aplicaciones pueden crear sus propios métodos abreviados de teclado personalizados. Además, algunos métodos abreviados de teclado básicos están disponibles, como Command-C (copy), Command-X (cortar), Command-V (pegar) y Command-Shift-H (home), sin que una aplicación se escriba específicamente en ellos.

La pestaña Comandos mostrará un modificador de aplicación que permite al usuario cambiar rápidamente entre aplicaciones desde el teclado, de forma muy parecida a la Mac OS:

El modificador de aplicación

Si una aplicación de iOS 9 incluye métodos abreviados de teclado, el usuario puede mantener presionadas las teclas Comando ,Opción o Control para mostrarlas en un elemento emergente:

Captura de pantalla que muestra los métodos abreviados de teclado de una aplicación.

Definir métodos abreviados de teclado personalizados

Si agregamos el código siguiente a un controlador de vista o vista en nuestra aplicación, cuando esa vista o controlador esté visible, estará disponible un método abreviado de teclado personalizado:

#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

En primer lugar, se invalida la propiedad y se devuelve para que el controlador de vista o CanBecomeFirstResponder vista pueda recibir la entrada del true teclado.

A continuación, invalidamos KeyCommands la propiedad y creamos una nueva para la UIKeyCommand pulsación de tecla KeyCommands Cuando se activa la pulsación de tecla, llamamos al método (que exponemos a iOS 9 mediante el comando ) para NewEntryExport realizar la acción solicitada.

Si ejecutamos esta aplicación en un iPad con un teclado de hardware conectado y el usuario tipos Comando-N, se agregará una nueva entrada a la lista. Si el usuario mantiene presionada la tecla Comando, se mostrará la lista de accesos directos:

Captura de pantalla que muestra el acceso directo Nueva entrada para una aplicación.

Consulte la aplicación MultiTask de ejemplo para obtener una implementación de ejemplo.

Consideraciones sobre la administración de recursos

Incluso en el caso de las aplicaciones que ya usan las guías de diseño y los procedimientos recomendados de iOS 8, la administración eficaz de recursos puede seguir siendo un problema. En iOS 9, las aplicaciones ya no tienen un uso exclusivo de memoria, CPU u otros recursos del sistema.

Como resultado, debe ajustar la aplicación xamarin.iOS para usar los recursos del sistema de forma eficaz o se enfrenta a la terminación en situaciones de memoria baja. Esto sucede igualmente con las aplicaciones que optan por no participar en la multitarea, ya que es posible que una segunda aplicación se ejecute en un panel deslizante o en una ventana Imagen en imagen que requiera recursos adicionales o haga que la frecuencia de actualización sea inferior a 60 fotogramas por segundo.

Tenga en cuenta las siguientes acciones del usuario y sus implicaciones:

  • Escribir texto en un panel Deslizante: incluso si la aplicación no tiene ninguna entrada de texto, el teclado del sistema ahora se puede mostrar a través de su interfaz de usuario. Como resultado, es posible que la aplicación tenga que responder a las notificaciones de presentación del teclado (por ejemplo, mostrar y ocultar el teclado).
  • Ejecución de una segunda aplicación en un panel deslizante: la nueva aplicación ahora se ejecuta en primer plano y compite con la aplicación existente para los recursos del sistema, como la memoria y los ciclos de CPU.
  • Reproducir un vídeo en una ventana pip: esta ventana no solo puede cubrir parte de la interfaz de la aplicación, sino que la aplicación que inició el vídeo se sigue ejecutando en segundo plano y consume recursos de CPU y memoria.

Para asegurarse de que la aplicación usa recursos de forma eficaz, debe hacer lo siguiente:

  • Perfilar la aplicación con Instruments: compruebe si hay fugas de memoria, el uso excesivo de CPU y las áreas en las que la aplicación podría estar bloqueando el subproceso principal.
  • Responder a los métodos de transiciones de estado: en el archivo AppDelegate.cs, invalide y responda a métodos de cambio de estado, como la aplicación que entra o vuelve del fondo. Libere los recursos no consultados, como imágenes, datos o vistas y el controlador de vistas.
  • Probar en paralelo con aplicaciones con uso intensivo de memoria: ejecute la aplicación mediante deslizar y dividir vista en hardware físico de iOS con una aplicación que consume mucha memoria, como Mapas (en el modo de vista satélite) y compruebe que ambas aplicaciones siguen respondiendo y no se bloquean.

Consulte la Guía de eficiencia energética de Apple para aplicaciones iOS para obtener más información sobre la administración de recursos.

No participar en multitarea

Aunque Apple sugiere que todas las aplicaciones de iOS 9 admiten la multitarea, puede haber motivos muy específicos para que una aplicación no funcione también, como juegos o aplicaciones de cámara que requieren que la pantalla completa funcione correctamente.

Para que la aplicación xamarin.iOS no se ejecute en un panel deslizante o en el modo de vista dividida, edite el archivo Info.plist del proyecto y active Requiere pantalla completa:

No participar en multitarea

Importante

Aunque la exclusión de la multitarea impide que la aplicación se ejecute en la vista deslizante o en la vista dividida, no impide que otra aplicación se ejecute en diapositivas o que un vídeo de imagen en imagen se muestre junto con la aplicación.

Deshabilitación de la reproducción de vídeo PIP

En la mayoría de las situaciones, la aplicación debe permitir al usuario reproducir cualquier contenido de vídeo que muestre en una ventana flotante Imagen en imagen. Sin embargo, puede haber situaciones en las que esto podría no ser deseado, como vídeos de escenas de corte de juego.

Para rechazar la reproducción de vídeo PIP, haga lo siguiente en la aplicación:

  • Si usa un para AVPlayerViewController mostrar vídeo, establezca la AllowsPictureInPicturePlayback propiedad en false .
  • Si usa para mostrar vídeo, no cree una AVPlayerLayer instancia de AVPictureInPictureController .
  • Si usa un para WKWebView mostrar vídeo, establezca la AllowsPictureInPictureMediaPlayback propiedad en false .

Resumen

En este artículo se han abordado los pasos necesarios para asegurarse de que una aplicación xamarin.iOS se ejecutará y se comportará correctamente en la nueva capacidad de multitarea de iOS 9 para iPads. Además, se ha abordado la exclusión de la multitarea para aplicaciones en las que no es una buena opción.