En este artículo, me gustaría hablar sobre iOS 10 y lo que debe hacer para preparar sus aplicaciones para iOS 10.
Al igual que con cada versión principal, iOS 10 introduce una serie de cambios y mejoras. Algunos son necesarios, otros son recomendados y también hay algunos cambios que pueden mejorar la experiencia de usuario de su aplicación. Comencemos con una descripción general de lo que se requiere si compila su aplicación contra el SDK de iOS 10.
El cambio más importante no está relacionado estrictamente con iOS 10, pero es lo suficientemente importante como para discutirlo primero. A pesar de que App Transport Security (ATS) ha existido desde iOS 9, siempre ha sido fácil optar por no participar de ATS agregando el siguiente fragmento de código a su objetivo Info.plist.
NSAppTransportSecurity NSAllowsArbitraryLoads
Pero eso esta por cambiar. El 1 de enero de 2017, todas las solicitudes enviadas a la App Store, incluidas las actualizaciones de las aplicaciones existentes, deberán cumplir con las pautas de ATS. Esto significa que su aplicación es necesaria para comunicarse de forma segura con los servicios web a través de HTTPS.
Si leyó mi discusión detallada sobre la Seguridad del transporte de aplicaciones, entonces puede recordar que la Seguridad del transporte de aplicaciones define un conjunto de reglas. Los servidores con los que se comunica su aplicación deben cumplir con esas reglas. En otras palabras, hacer solicitudes de red a través de HTTPS no es suficiente. Cada servidor con el que habla su aplicación debe estar protegido y cumplir con los estándares de seguridad modernos.
Todavía puede definir dominios de excepción en el destino Info.plist, pero ya no está permitido optar por la Seguridad de transporte de aplicaciones por completo..
Recientemente me encontré con un problema relacionado con la seguridad de transporte de aplicaciones. La aplicación de un cliente necesitaba comunicarse con otros dispositivos en la misma red. Se comunica con otros dispositivos utilizando su dirección IP, que no es compatible con los dominios de excepción de Seguridad de transporte de aplicaciones. Y para complicar aún más las cosas, la dirección IP de un dispositivo no es fija. Puede y va a cambiar con el tiempo.
Afortunadamente, a partir de iOS 10, es posible resolver este problema agregando un par clave-valor adicional a la NSAppTransportSecurity
diccionario en el objetivo Info.plist. Al establecer el valor de NSAllowsLocalNetworking
a SÍ
, Es posible desactivar la Seguridad de transporte de aplicaciones para el tráfico de la red local..
Si ha estado luchando con App Transport Security en el pasado, le recomiendo que consulte la documentación actualizada de App Transport Security. Apple ha agregado algunas claves adicionales que hacen que trabajar con ATS sea menos dolor de cabeza.
Por ejemplo, muchas aplicaciones cargan contenido de la web en una vista web. Su aplicación a menudo no sabe qué sitios web visitará el usuario, lo que hace que sea imposible definir dominios de excepción para la Seguridad de transporte de aplicaciones en los destinos. Info.plist. A partir de iOS 10, puede desactivar la Seguridad de transporte de aplicaciones para las vistas web configurando NSAllowsArbitraryLoadsInWebContent
a SÍ
en el objetivo Info.plist.
Lo que debe recordar es que la Seguridad de transporte de la aplicación es necesaria para todas las solicitudes enviadas a la App Store después del 31 de diciembre. La exclusión de la Seguridad de transporte de aplicaciones ya no es posible. Tenga en cuenta que el equipo de revisión de la App Store requiere una explicación de su parte si usted opta por no participar en la Seguridad de transporte de la aplicación mediante una excepción, como NSAllowsLocalNetworking
o NSAllowsArbitraryLoadsInWebContent
. Puedes leer más sobre esto en la documentación de Apple..
Apple continúa invirtiendo en proteger la privacidad de sus clientes, y ese compromiso también tiene consecuencias para los desarrolladores. Qué significa eso para ti?
Si su aplicación accede a un servicio del sistema o la capacidad del dispositivo que requiere el permiso explícito del usuario, el usuario ve una alerta del sistema en la que la aplicación solicita el permiso del usuario. El contenido de esa alerta solía ser proporcionado por el sistema operativo si su aplicación no especificaba una. Esto ha cambiado en iOS 10..
A partir de iOS 10, su aplicación necesita decirle al usuario por qué necesita acceso a un servicio del sistema o capacidad del dispositivo en particular. Para ello, agregue una clave a los objetivos Info.plist. Si su aplicación está localizada, también debe proporcionar una traducción para la descripción en el InfoPlist.strings expediente.
Aquí hay una lista completa de las claves de privacidad disponibles en iOS 10. La mayoría de ellas deberían parecer familiares, pero algunas son nuevas en iOS 10, como NSSiriUsageDescription
y NSAppleMusicUsageDescription
.
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSLocationUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
Descripción de NSVoIPUsage
NSCameraUsageDescription
NSContactosUsuarioDescripción
NSHomeKitUsageDescription
NSAppleMusicUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSpeechRecognitionUsageDescription
NSSiriUsageDescription
NSVideoSubscriberAccountUsageDescription
Si no agrega una descripción de uso para los servicios del sistema y las capacidades del dispositivo que utiliza su aplicación, se muestra una advertencia en la consola, y la alerta del sistema que solicita permiso al usuario no se muestra al usuario. Como resultado, a su aplicación se le niega el acceso a ese servicio o capacidad en particular.
"Esta aplicación ha intentado acceder a datos sensibles a la privacidad sin una descripción de uso. Info.plist de la aplicación debe contener una clave NSLocationAlwaysUsageDescription con un valor de cadena que explique al usuario cómo la aplicación usa estos datos".
No hace falta decir que el equipo de revisión de la App Store rechaza cualquier aplicación que viole esta política. De hecho, las construcciones cargadas en la App Store que no cumplen con esta política se rechazan automáticamente.
Si utiliza una biblioteca o un marco de trabajo de terceros en su aplicación, asegúrese de que las descripciones de uso correctas se agreguen a los datos de destino. Info.plist. Las bibliotecas y los marcos para los anuncios a menudo requieren varios permisos que no puede esperar o conocer.
Si abre un proyecto existente por primera vez en Xcode 8 y contiene Swift, se le pedirá que migre a Swift 3. Si todavía no se siente listo, Xcode le pide que migre a Swift 2.3. Debe elegir una u otra, ya que Xcode 8 solo es compatible con estas versiones del lenguaje Swift. Swift 2.2.1 y Swift 2.3 son muy similares. La diferencia más importante es que Swift 2.3 es compatible con iOS 10, tvOS 10, watchOS 3 y macOS 10.12.
¿Debes migrar a Swift 3 hoy? Probablemente no. Pero no esperes demasiado. En algún momento, Apple requerirá que los desarrolladores envíen aplicaciones con Xcode 8, que no es compatible con Swift 2.2.1. Puedes seguir con Swift 2.3, pero ¿por qué no haces el salto??
Es cierto que la migración de un proyecto a Swift 3 tiene un impacto dramático en la base de código de su proyecto. Casi todas las líneas de código cambian de alguna manera. Los cambios de API son sustanciales. Pero la ventaja es que puedes usar Swift 3. He estado usando Swift 3 durante varios meses, y me encanta. Es una mejora importante sobre Swift 2.2.1 y Swift 2.3.
Si está trabajando en un proyecto grande para un cliente, asegúrese de planificar cuidadosamente la migración a Swift 3. Para proyectos complejos, la migración puede durar varios días. Las ventajas son que puede comenzar a utilizar la API de Swift 3, y también se beneficia del compilador Swift 3 mejorado impulsado por LLVM y Clang..
Con cada lanzamiento importante de iOS, Apple mejora la plataforma agregando y eliminando API. Varios marcos han recibido una actualización significativa, y la compañía también introdujo varios marcos nuevos.
¿Por qué es eso importante? Si desea destacar en la App Store, vale la pena mantener sus aplicaciones actualizadas y agregar soporte para las nuevas características de la plataforma. De eso se trata esta sección.
los UILocalNotification
La clase está obsoleta a partir de iOS 10. ¿Qué significa esto para ti? Todavía puedes usar UILocalNotification
para programar y administrar las notificaciones locales, pero es probable que desaparezca en algún momento. Pero ¿por qué Apple ha decidido desaprobar UILocalNotification
? Funcionó bien cierto?
En iOS 10, Apple introdujo el Notificaciones de usuario marco de referencia. Como su nombre lo indica, el marco se encarga de programar, administrar y manejar las notificaciones., local y remoto. Eso es lo que hace grande al marco. Su aplicación ya no necesita hacer una distinción entre notificaciones locales y remotas. El marco de notificaciones para usuarios ofrece una API unificada para el manejo de notificaciones locales y remotas.
La API se ve y se siente muy bien. El marco trata las notificaciones locales y remotas de la misma manera desde la perspectiva del desarrollador, lo que hace que la adición de acciones de notificación sea fácil y transparente. El manejo de las acciones de notificación está centralizado en un protocolo de delegado conciso.
Tenemos algunos tutoriales sobre el marco de notificaciones de usuarios aquí en Envato Tuts+!
Es posible que también le interesen mis publicaciones de blog recientes sobre la programación de notificaciones locales y acciones de notificación con el marco de notificaciones de usuario..
Uno de los anuncios más importantes durante la WWDC de este año fue la posibilidad de integrar su aplicación con Siri a través de SiriKit. Aunque las opciones están limitadas por el momento, si su aplicación se ajusta a una de las categorías compatibles, es una excelente manera de diferenciarla de la competencia. Siri actualmente admite un número limitado de dominios, incluyendo llamadas VoIP, mensajes y entrenamientos.
Usted se integra con Siri agregando una extensión a su aplicación. Cada aplicación que se integra con Siri necesita agregar un extensión de intenciones. Permite que su aplicación realice una tarea en respuesta a la información que Siri envía a su aplicación. Opcionalmente puede crear un intenciones de extensión de la interfaz de usuario para personalizar la apariencia de la interfaz de usuario resultante que se presenta al usuario una vez que se completa la tarea.
El nuevo motor háptico de iPhone 7 y iPhone 7 Plus ha abierto muchas nuevas posibilidades para los desarrolladores. En iOS 10, es posible utilizar el motor háptico del dispositivo para proporcionar al usuario información táctil cuando realiza una acción específica o se produce un evento en particular.
Su aplicación puede conducir el motor háptico a través de la UIFeedbackGenerator
clase y sus tres subclases concretas:
UIImpactFeedbackGenerator
UINotificationFeedbackGenerator
UISelectionFeedbackGenerator
Cada UIFeedbackGenerator
La subclase está diseñada para un escenario específico. Si agrega soporte para el motor háptico, seguramente sorprenderá a los usuarios de su aplicación. Darle una oportunidad.
Core Data es probablemente mi marco Cocoa favorito, y Apple lo ha hecho aún más impresionante en iOS 10 y con el lanzamiento de Swift 3. Esta es la actualización más grande que el marco ha visto en los últimos años..
Swift 3 y Xcode 8 unen fuerzas para hacer que Core Data sea más fácil de usar que nunca. Apple también introdujo el Contenedor NSPersistente
clase, lo que hace que la configuración y administración de una pila de Core Data sea muy fácil.
La compañía incluso renovó los fundamentos del marco al repensar la interacción del marco con SQLite. Los resultados son realmente fantásticos. Es fantástico ver que Apple continúa invirtiendo en Core Data, más de diez años después de su introducción en macOS Tiger..
Para obtener más información sobre Core Data, consulte algunos de nuestros otros cursos y tutoriales aquí en Envato Tuts+.
Si compila su aplicación contra el SDK de iOS 10, lo que significa que está utilizando Xcode 8, debe asegurarse de cumplir con la Seguridad de transporte de aplicaciones y las pautas de privacidad que Apple ha implementado. Asegúrate de marcar primero las casillas.
A pesar de que las otras mejoras y mejoras son opcionales, les animo a que las examinen. Por ejemplo, no espere demasiado tiempo para migrar a Swift 3. Puede sorprender a sus usuarios agregando soporte para el motor háptico. Es opcional, pero es una oportunidad para sobresalir en la concurrida tienda de aplicaciones de hoy..
Para obtener más información sobre Swift 3 o iOS 10, consulte algunos de nuestros otros cursos y tutoriales.