Cambios adicionales en las plataformas iOS 9
En este artículo, se describen los cambios adicionales, menores o mejoras en los marcos existentes para iOS 9.
Además de los principales cambios en iOS, Apple ha realizado modificaciones y mejoras en varios marcos existentes en iOS 9.
Adiciones del marco 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 propiedad Voice
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 más información, consulte la Referencia de AVSpeechSynthesisVoice de Apple.
Adiciones del marco AVKit
Para trabajar con la nueva característica Picture-in-Picture (PIP), el marco AVKit incluye las nuevas clases 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 controlador
AVPlayer
usado para presentar un vídeo en una ventana PIP flotante y redimensionable en un iPad.
Para más información, consulte nuestra documentación de Multitarea para iPad y la Referencia de AVPictureInPictureController de Apple y la Referencia de AVPlayerViewController.
Presentación de CloudKit Web Services
El marco de CloudKit agiliza 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:
- Introducción a CloudKit: nuestra introducción al uso de CloudKit en una aplicación de Xamarin.iOS.
- Inicio rápido de CloudKit: introducción a CloudKit por parte de Apple.
- Referencia de CloudKit JS: documentación de CloudKit JS de Apple.
- Catálogo de CloudKit: introducción a CloudKit (Cocoa y JavaScript): aplicación de ejemplo de Apple mediante CloudKit y CloudKit JS.
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 del marco Foundation
Apple ha incluido 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 intervalo0.0
a1.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 intervalo0.0
a1.0
, los recursos con la prioridad más baja se purgarán primero.
Para 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 más información, consulte Referencia de NSProcessInfo de Apple.
Reacción al modo de bajo consumo
Use la propiedad LowPowerModeEnabled
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 ha incluido 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 clase
HKQuantityTypeIdentifier
(comoUVExposure
) y a la claseHKCategoryTypeIdentifier
(comoOvulationTestResult
).
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 ha incluido los siguientes cambios en el marco de autenticación local en iOS 9:
- Con los métodos
EvaluateAccessControl
yEvaluatePolicy
de la clase LAContext, ahora puede reutilizar las coincidencias de Touch ID de los anteriores intentos de desbloqueo realizados correctamente. - 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 las cadenas de llaves y la compatibilidad para evaluar las listas de control de acceso de las cadenas de llaves.
- La capacidad de cancelar un mensaje de usuario desde el código.
Para 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 Touch ID.
- EvaluatedPolicyDomainState: obtiene o establece el estado de una directiva evaluada.
- MaxBiometryFailures: ha quedado en desuso en iOS 9.
- TouchIdAuthenticationAllowableReuseDuration: obtiene o establece la cantidad de tiempo durante el cual se puede reutilizar una autenticación de Touch ID.
- EvaluateAccessControl: evalúa de forma asincrónica una directiva de autenticación.
- Invalidar: invalida una autenticación de Touch ID 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 el marco MapKit
Apple ha incluido 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 la 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 propiedad
DetailCalloutAccessoryView
de la clase MKAnnotationView.
Consulte nuestra documentación sobre losmapas de iOS y tutoriales de exploración de anotaciones y superposiciones en 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 ha incluido los siguientes cambios en el marco PassKit en iOS 9:
- Apple Pay ahora admite tarjetas de débito y crédito de las tiendas, junto con las tarjetas Discover. Consulte la sección Redes de pago de la Referencia de clase 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. Consulte 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 de Safari
Apple ha incluido los siguientes cambios en el marco de servicios de 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 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 UIKit
Apple ha incluido muchas mejoras en varios elementos del marco UIKit para iOS 9. En las secciones siguientes, se detallan esos cambios.
Eventos 3D Touch
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 una versión superior) y el dispositivo iOS es capaz de admitir 3D Touch, los cambios en la presión harán que se genere el evento TouchesMoved
.
Debido a este cambio de comportamiento, las aplicaciones iOS deben estar preparadas para que el evento TouchesMoved
se invoque con más frecuencia, incluso si las coordenadas X/Y no han cambiado.
Para más información, consulte nuestra guía Introducción a 3D Touch.
Funcionalidad de documento abierto en contexto
Mediante el uso de los métodos FinishedLaunching (application, launchOptions)
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 clave LSSupportsOpeningDocumentsInPlace
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 de los eventos táctiles 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 para iOS de Apple para obtener más información.
Captura de contenido personalizado
La nueva clase NSDataAsset
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 delimitadores de diseño
Las nuevas clases de delimitador de diseño NSLayoutAnchor
y NSLayoutDimension
funcionan con las nuevas propiedades de delimitador 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 AutoLayout y Size en una aplicación de Xamarin.iOS y la referencia NSLayoutAnchor, referencia NSLayoutDimension y referencia UIView de Apple para obtener más información.
Nuevos márgenes de contenido legibles
La nueva clase UILayoutGuide
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 UILayoutGuide de Apple para obtener más información.
Entrada de texto en modificaciones de notificaciones
La clase UIUserNotificationAction tiene una nueva propiedad Behavior
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 método FinishedLaunching (UIApplication application)
de la clase UIApplicationDelegate por los métodos FinishedLaunching (UIApplication application, NSDictionary launchOptions)
o WillFinishLaunching (UIApplication application, NSDictionary launchOptions)
.
Consulte la referencia de UIApplicationDelegate de Apple para obtener más detalles.
Cambios en UIKit Dynamics
Apple ha incluido 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 vinculación adicionales a la clase
UIAttachmentBehavior
.
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 cambiaban automáticamente de tamaño para rellenar el ancho de su contenedor (por lo general, 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 Auto Layout y Size Classes 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.
Nueva clase UITextInputAssistantItem
Use la nueva clase UITextInputAssistantItem
para diseñar grupos de botones de barra en una barra de accesos directos. La barra de accesos directos es un área nueva que está disponible en el teclado virtual para proporcionar métodos abreviados de escritura.