Cambios adicionales de iOS 9 Frameworks

En este artículo se tratan cambios adicionales, menores o mejoras en los marcos existentes para iOS 9.

iOS 9 Logo

Además de los principales cambios en iOS, Apple ha realizado modificaciones y mejoras en varios marcos existentes en iOS 9.

Adiciones de marco de avFoundation

En el marco avFoundation, la clase AVSpeechSynthesisVoice ahora le permite especificar una voz por identificador además del idioma.

Por ejemplo, el código siguiente obtiene una lista de todas las voces disponibles:

var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();

A continuación, puede usar una de las voces de la lista si la establece como la Voice propiedad de una instancia de la clase AVSpeachUtterance .

La clase AVQueuePlayer ahora admite una mezcla de streaming de Internet y medios basados en archivos en la cola. Las versiones anteriores solo podían poner en cola medios del mismo tipo.

Para obtener más información, consulte La referencia de AVSpeechSynthesisVoice de Apple.

Adiciones de marco de AVKit

Para trabajar con la nueva característica Picture-in-Picture (PIP), el marco AVKit incluye las clases new AVPictureInPictureController y AVPlayerViewController :

  • AVPictureInPictureController : esta clase permite que una aplicación de iOS 9 responda al usuario que inicia la reproducción de un vídeo en una ventana PIP flotante y redimensionable en un iPad.
  • AVPlayerViewController : administra un AVPlayer controlador usado para presentar un vídeo en una ventana PIP flotante y redimensionable en un iPad.

Para obtener más información, consulta nuestra documentación de Multitasking para iPad y la referencia avPictureInPictureController de Apple y avPlayerViewController Reference.

Presentación de CloudKit Web Services

El marco cloudKit simplifica el desarrollo de aplicaciones que acceden a iCloud. Esto incluye la recuperación de los datos de la aplicación y los derechos de recursos, así como la capacidad de almacenar de forma segura la información de la aplicación. Este kit proporciona a los usuarios una capa de anonimato al permitir el acceso a las aplicaciones con sus identificadores de iCloud sin compartir información personal.

El nuevo marco cloudKit Web Services proporciona una biblioteca de JavaScript (CloudKit JS) que se puede incorporar en el sitio web para proporcionar acceso a los mismos datos y contenido basados en CloudKit que la aplicación Xamarin.iOS.

Importante

Para poder acceder, presentar o actualizar contenido desde una base de datos de CloudKit mediante CloudKit JS, debe haber definido previamente el esquema de esa base de datos.

Para obtener más información, consulte los siguientes documentos:

Importante

Apple proporciona herramientas para ayudar a los desarrolladores a tratar correctamente el Reglamento general de protección de datos (RGPD) de la Unión Europea.

Adiciones de Foundation Framework

Apple incluyó los siguientes cambios en el marco Foundation en iOS 9:

Cambios en NSBundle

Se han realizado los siguientes cambios en la clase NSBundle para iOS 9:

  • GetPreservationPriorityForTag (NSString tag) : obtiene la prioridad de conservación actual de los recursos con la etiqueta especificada. Los valores válidos están en el intervalo 0.0 a 1.0, los recursos con la prioridad más baja se purgarán primero.
  • SetPreservationPriorityForTag (double priority, NSSet tags) : establece la prioridad de conservación actual de los recursos con las etiquetas especificadas. Los valores válidos están en el intervalo 0.0 a 1.0, los recursos con la prioridad más baja se purgarán primero.

Para obtener más información, consulte Referencia de NSBundle de Apple.

Cambios en NSProcessInfo

Cada proceso que se ejecuta en un dispositivo iOS tiene un único Agente de información de procesos (PIA). Use la clase NSProcessInfo para proporcionar información sobre el PIA actual y controlar la potencia y la administración térmica de un proceso determinado.

Por ejemplo, para controlar la finalización automática de un proceso, puede usar el código siguiente:

// Disable automatic termination
var activity = NSProcessInfo.ProcessInfo.BeginActivity(NSActivityOptions.AutomaticTerminationDisabled, "Define reason for change here...");

// Perform the required task
...

// Return to normal operation
NSProcessInfo.ProcessInfo.EndActivity(activity);

Para obtener más información, consulte Referencia de NSProcessInfo de Apple.

Reacción al modo de bajo consumo

Use la LowPowerModeEnabled propiedad de la clase NSProcessInfo para determinar si el modo de bajo consumo se ha habilitado en el dispositivo iOS en el que se ejecuta la aplicación. Por ejemplo:

// Is the device in low power mode?
if (NSProcessInfo.ProcessInfo.LowPowerModeEnabled) {
    // Reduce activity to conserve energy...
} else {
    // Return to normal activity...
}

Cambios en el marco de HealthKit

Apple incluyó los siguientes cambios en el marco HealthKit en iOS 9:

  • Compatibilidad con la eliminación masiva y el seguimiento de eliminaciones de entradas en la base de datos HealthKit. Consulte la referencia de clase HKDeletedObject, HKAnchoredObjectQuery y HKHealthStore de Apple para obtener más información.
  • Se han agregado nuevas categorías y características de seguimiento a la HKQuantityTypeIdentifier clase (como UVExposure) y a la HKCategoryTypeIdentifier clase (como OvulationTestResult).

Consulte nuestra documentación introducción a HealthKit para obtener más información sobre cómo trabajar con HealthKit en Xamarin.iOS.

Cambios en el marco de autenticación local

Apple incluyó los siguientes cambios en el marco de autenticación local en iOS 9:

  • Con los EvaluateAccessControl métodos y EvaluatePolicy de la clase LAContext , ahora puede reutilizar las coincidencias de Touch ID de los intentos de desbloqueo correctos anteriores.
  • La capacidad de obtener una lista de los dedos registrados actualmente.
  • Compatibilidad con el seguimiento cuando se agrega o quita un dedo de la autenticación.
  • La capacidad de usar el contexto de autenticación en las llamadas a llaveros y la compatibilidad para evaluar las listas de control de acceso de llaves.
  • La capacidad de cancelar una solicitud de usuario del código.

Para obtener más información, consulte Touch ID y Face ID con Xamarin.iOS.

Cambios de LAContext

Se han realizado los siguientes cambios en la clase LAContext para iOS 9:

  • TouchIdAuthenticationMaximumAllowableReuseDuration : devuelve la cantidad máxima de tiempo que se puede reutilizar una autenticación de id. táctil.
  • EvaluatedPolicyDomainState : obtiene o establece el estado de una directiva evaluada.
  • MaxBiometryFailures : se ha depreciado en iOS 9.
  • TouchIdAuthenticationAllowableReuseDuration Obtiene o establece la cantidad de tiempo que se puede reutilizar una autenticación de id. táctil.
  • EvaluateAccessControl : evalúa de forma asincrónica una directiva de autenticación.
  • Invalidar : invalida una autenticación de identificador táctil determinada.
  • IsCredentialSet : devuelve true si las credenciales están establecidas actualmente.
  • SetCredentialType Establece el tipo de credencial especificado.

Consulte La referencia de LAContext de Apple para obtener más detalles.

Cambios en MapKit Framework

Apple incluyó los siguientes cambios en el marco MapKit en iOS 9:

  • MapKit ahora proporciona compatibilidad para iniciar la aplicación Map directamente en direcciones de tránsito y para consultar el tiempo estimado de llegada (ETA) de tránsito mediante las clases MKLaunchOptions y MKDirections .
  • Los resultados de búsqueda devueltos por MapKit y la clase CLGeocoder también pueden proporcionar la zona horaria del resultado.
  • Ahora puede personalizar completamente las anotaciones de mapa presentadas por la aplicación iOS mediante la DetailCalloutAccessoryView propiedad de la clase MKAnnotationView .

Consulte nuestra Mapas de iOS y tutorial: exploración de anotaciones y superposiciones en la documentación de MapKit para obtener más información sobre cómo trabajar con Mapas y anotaciones en Xamarin.iOS y la referencia clGeocoder de Apple para obtener más información.

Adiciones del marco PassKit

Apple incluyó los siguientes cambios en el marco PassKit en iOS 9:

  • Apple Pay ahora admite tarjetas de débito y crédito de la tienda junto con tarjetas Discover. Consulte la sección Redes de pago de la referencia de clases PKPaymentRequest de Apple para obtener más información.
  • Desde directamente dentro de una aplicación de Xamarin.iOS, ahora puede agregar redes de pago y emisores de tarjetas a Apple Pay. Consulta La referencia de clase PKAddPaymentPassViewController de Apple para obtener más detalles.

Consulte nuestra documentación introducción a PassKit para obtener más información sobre cómo trabajar con PassKit en Xamarin.iOS.

Adiciones del marco de servicios safari

Apple incluyó los siguientes cambios en el marco de Servicios safari en iOS 9:

  • Ahora puede usar la nueva clase SFSafariViewController para mostrar contenido web dentro de una aplicación de Xamarin.iOS. Ofrece la posibilidad de compartir datos y cookies del sitio web con la aplicación Safari e incluye varias de las características de Safari (como Lector y AutoRrellenar). SFSafariViewController incluye un botón Listo que devolverá a los usuarios a la aplicación cuando terminen de ver el contenido web.

Dado que la clase SFSafariViewController está adaptada para mostrar una sola página de contenido web, debe considerar su uso para reemplazar los controles WKWebKit o UIWebView dentro de las aplicaciones de Xamarin.iOS existentes.

Mostrar un sitio web

El código siguiente es un ejemplo de llamada a SFSafariViewController desde otro controlador de vista:

// Create an instance of the Safari Services View Controller
var controller = new SFSafariViewController(new NSUrl("http://www.xamarin.com"));

// Display website
PresentViewController(controller, true, null);

Cambios en el marco de UIKit

Apple ha incluido muchas mejoras en varios elementos del marco UIKit para iOS 9. En las secciones siguientes se detallan esos cambios.

Eventos táctiles 3D

Una novedad de iOS 9 e iPhone 6 e iPhone 6 Plus, 3D son los gestos sensibles a la presión 3D Touch para las aplicaciones iOS. Como resultado, si la aplicación se ejecuta en iOS 9 (o superior) y el dispositivo iOS es capaz de admitir 3D Touch, los cambios en la presión harán que se genere el TouchesMoved evento.

Debido a este cambio de comportamiento, las aplicaciones iOS deben estar preparadas para que el TouchesMoved evento se invoque con más frecuencia, incluso si las coordenadas X/Y no han cambiado.

Para obtener más información, consulte nuestra guía Introducción a 3D Touch .

Funcionalidad de documento abierta en contexto

Mediante el uso de los FinishedLaunching (application, launchOptions) métodos o WillFinishLaunching (Application, launchOptions) de la clase UIApplicationDelegate , ahora puede abrir un documento y modificarlo en su lugar (en lugar de trabajar en una copia).

Para admitir la nueva funcionalidad abierta en contexto, agregue la LSSupportsOpeningDocumentsInPlace clave al archivo Info.plist de la aplicación de Xamarin.iOS con un valor de YES.

Consulte La referencia de UIApplicationDelegate de Apple para obtener más detalles.

Eventos táctiles mejorados

Apple ha proporcionado varias mejoras en Touch Events en iOS 9. Esto incluye la capacidad de usar la predicción táctil y obtener acceso a los toques intermedios entre las actualizaciones de pantalla.

Consulte la Guía de control de eventos de Apple para iOS para obtener más información.

Captura de contenido personalizado

La nueva NSDataAsset clase permite que una aplicación de Xamarin.iOS capture contenido adaptado a las funcionalidades gráficas y de memoria del dispositivo iOS en el que se está ejecutando actualmente.

Nuevos anclajes de diseño

Las nuevas NSLayoutAnchor clases de delimitador de NSLayoutDimension diseño y funcionan con las nuevas propiedades de anclaje de la clase UIView (como LeadingAnchor y WidthAnchor) para facilitar el diseño en iOS 9.

Consulte nuestra documentación introducción a los guiones gráficos unificados para obtener más información sobre cómo trabajar con las clases De tamaño y AutoLayout en una aplicación de Xamarin.iOS y la referencia NSLayoutAnchor de Apple, referencia de NSLayoutDimension y referencia de UIView para obtener más información.

Nuevos márgenes de contenido legibles

La nueva UILayoutGuide clase se puede usar para proporcionar márgenes de contenido legibles y definir las regiones de dibujo para el contenido dentro de una vista. Consulte La referencia de UILayoutGuide de Apple para obtener más información.

Entrada de texto en modificaciones de notificaciones

La clase UIUserNotificationAction tiene una nueva Behavior propiedad que se puede usar para admitir la entrada de texto de las notificaciones.

Cambios de UIApplicationDelegate

Aunque Apple no está en desuso formalmente, sugieren reemplazar todas las llamadas al FinishedLaunching (UIApplication application) método de la clase UIApplicationDelegate por los FinishedLaunching (UIApplication application, NSDictionary launchOptions) métodos o WillFinishLaunching (UIApplication application, NSDictionary launchOptions) .

Consulte La referencia de UIApplicationDelegate de Apple para obtener más detalles.

Cambios en UIKit Dynamics

Apple incluyó los siguientes cambios en UIKit Dynamics en iOS 9:

  • Dynamics ahora proporciona compatibilidad con límites de colisión no rectangulares.
  • La nueva clase personalizable UIFieldBehavior se usa para admitir varios tipos de campo.
  • Se han agregado tipos de datos adjuntos adicionales a la UIAttachmentBehavior clase .

Consulte la referencia de UIAttachment de Apple para obtener más detalles.

Cambios de UIPickerView y UIDatePicker

Antes de iOS 9, los controles UIPickerView y UIDatePicker no eran redimensionables y cambiarían automáticamente el tamaño para rellenar el ancho de su contenedor (normalmente el ancho del dispositivo iOS en el que se estaba ejecutando la aplicación).

En iOS 9, este cambio automático de tamaño ya no se produce y los controles se representarán en un ancho de 320 puntos en todos los dispositivos iOS, independientemente del tamaño y la orientación de la pantalla.

Para corregir esta situación, use Clases de tamaño y diseño automático para anclar el ancho del control a los bordes del contenedor primario (vista) y especificar el alto necesario. Consulte la documentación introducción a los guiones gráficos unificados para obtener más información sobre cómo trabajar con clases de diseño automático y tamaño en una aplicación de Xamarin.iOS.

Clase New UITextInputAssistantItem

Use la nueva UITextInputAssistantItem clase para diseñar grupos de botones de barra en una barra de acceso directo. La barra de acceso directo es un área nueva que está disponible en el teclado suave para proporcionar métodos abreviados de escritura.