Aquí tenéis todo lo nuevo que trae iOS 5 GM

     Apple lanzó iOS 5 GM hace una hora para desarrolladores de aplicaciones iOS y Dev Team anunciado Ya como estos se pueden hacer jailbreak usando redsn0w. Hasta ahora he visto en la conferencia de Apple algunas de las novedades implementadas por Apple, pero seguro que en iOS 5 habrá muchas más novedades que os presentaré en los próximos días después de que tenga la oportunidad de jugar un poco con el nuevo sistema operativo. Hasta entonces, a continuación tenéis el registro de cambios del nuevo sistema operativo, así que todo lo que Apple ha implementado de nuevo.

NOTAS Y PROBLEMAS CONOCIDOS

Los siguientes problemas se relacionan con el uso del SDK 5 para desarrollar código.

Cuentas

  • Al crear una cuenta de iCloud, puedes usar cualquier ID de Apple siempre que sea una dirección de correo electrónico completa y no una cuenta de MobileMe. Si tiene una cuenta MobileMe, puede mover esa cuenta a iCloud. Puedes encontrar más información en: http://me.com/move

AirPlay

  • A partir de iOS 5, AirPlay está habilitado de forma predeterminada para contenido de vídeo en aplicaciones y sitios web.
  • En iOS 5, AV Foundation añade soporte para reproducción de vídeo a través de AirPlay.

API

  • El  NSNetService Las API class y CFNetService no incluyen interfaces P2P de forma predeterminada. Para explorar, registrar o resolver servicios a través de interfaces P2P, una aplicación debe utilizar Bonjour DNSService*() API que se indican a continuación.
  • Configurando el interfazÍndice parámetro para kDNSServiceInterfaceIndexAny en las siguientes API no incluirán interfaces P2P de forma predeterminada. Para incluir interfaces P2P, ahora debe configurar elkDNSServiceFlagsIncludeP2P marcar cuando se usa kDNSServiceInterfaceIndexAny o establezca el interfaceIndex en kDNSServiceInterfaceIndexP2P. Las API afectadas tienen:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Validación de API

  • En las herramientas de desarrollo de iOS 5, es posible extraer las API utilizadas por una aplicación y verificar el uso de API privadas. Esta opción se ofrece cuando valida su solicitud para el envío de aplicaciones.

Apple TV

  • El software Apple TV permite a los usuarios reflejar el contenido de un iPad 2 en un Apple TV (segunda generación) mediante AirPlay. Este software también habilita Photo Stream en Apple TV para que los usuarios puedan acceder a las fotos almacenadas en iCloud. Se proporciona la versión beta del software Apple TV para probar la última funcionalidad de AirPlay con sus aplicaciones y sitios web de iOS 2. Si desea instalar la versión beta del software Apple TV en su dispositivo, primero debe registrar el UDID de su dispositivo en el Portal del programa para desarrolladores de iOS.

Conteo automático de referencia

  • En Xcode, si la configuración está establecida en Dispositivo y hay un espacio en la ruta de uno de los archivos fuente (más comúnmente, el proyecto está dentro de un directorio con espacios), el paso "Convertir a recuento automático de referencias" (después de Precheck ) fallará con el error: Error in format of file: <path>.Si lo encuentra, el usuario debe cambiar al Simulador y volver a intentar la migración.

Compatibilidad binaria

  • En las aplicaciones vinculadas al SDK de iOS 5, los desplazamientos del contenido de la vista de desplazamiento ya no se redondearán a píxeles integrales durante un gesto de pellizco.

GameKit

  • Los datos de las partidas por turnos están limitados a 4 KB.
  • FIJO: La coincidencia automática con el controlador de vista por turnos no funciona. Se pueden utilizar invitaciones o la API de coincidencia automática directa como solución alternativa.

icloud de copia de seguridad

  • Las copias de seguridad realizadas antes del 22 de septiembre ya no están disponibles. Se recomienda encarecidamente actualizar a esta versión de iOS 5 para poder continuar realizando copias de seguridad de sus dispositivos.

iCloud Storage

  • En el almacén clave-valor de iCloud, el número máximo de claves se ha elevado a 256.
  • Todos los perfiles de aprovisionamiento recién generados ahora se habilitan automáticamente para iCloud. Si está utilizando un perfil de aprovisionamiento de equipo administrado por Xcode, haga clic en actualizar en Xcode Organizer para obtener un nuevo perfil habilitado para iCloud. Para habilitar todos los demás perfiles de aprovisionamiento para iCloud, simplemente vuelva a generar sus perfiles en el Portal de aprovisionamiento de iOS.
  • Si su aplicación está utilizando el NSMetadataQuery clase, debe establecer un predicado y el predicado ahora se respeta. Pero el predicado es un NSPredicate-predicado de estilo, no un predicado de estilo Spotlight. Un ejemplo de la diferencia es que debes usar LIKE en lugar de = para la coincidencia de comodines. Las diferencias se definen con más detalle en:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSpotlightComparison.html#//apple_ref/doc/uid/TP40002370-SW1.
  • El  setSortDescriptors: método de NSMetadataQuery no es apoyado.
  • Para habilitar el almacenamiento de iCloud dentro de sus aplicaciones en iOS 5, haga clic en la casilla de verificación Habilitar derechos en el panel Resumen de su proyecto. Xcode crea un archivo de derechos personalizado para su proyecto que incluye automáticamente su ID de equipo. Puede agregar valores adicionales de iCloud Container según lo requiera su aplicación. (Tenga en cuenta que debe volver a generar sus perfiles de aprovisionamiento existentes, ya sea con Xcode o en el Portal de aprovisionamiento de iOS, para usar el almacenamiento de iCloud).
  • La cadena de identificador de contenedor que pasa al URLForUbiquityContainerIdentifier: método de NSFileManager debe incluya el ID del equipo al principio de la cadena. Para su comodidad, puede pasar nil para recuperar el primer ID del contenedor de documentos especificado en los derechos de su aplicación.
  • En iOS 5, los archivos protegidos mediante Protección de datos no se pueden utilizar con las API de almacenamiento de iCloud.
  • Presentadores de archivos: objetos que adoptan el NSFilePresenter protocolo: no reciben algunos de los mensajes que se supone que deben recibir, incluidos:

    Como solución alternativa, implemente la relinquishPresentedItemToWriter: método y verifique si el escritor realmente escribió cuando su presentador de archivos vuelve a adquirir el archivo.

  • Si informa un error relacionado con las interfaces de almacenamiento de iCloud, incluya los registros recopilados durante su sesión de depuración. Para generar estos registros, debe instalar un perfil de depuración especial en su dispositivo. El perfil de depuración se puede obtener en http://connect.apple.com. Este perfil permite la generación de registros de depuración necesarios para diagnosticar cualquier problema al utilizar el almacenamiento de iCloud. Las instrucciones para recolectar los registros son:
    1. Instale el perfil. (La forma más sencilla de hacerlo es enviártelo por correo y abrir el archivo adjunto en tu dispositivo).
    2. Reproduzca el error.
    3. Sincroniza con iTunes para eliminar los registros de tu dispositivo.
    4. Adjunte los registros a su informe de error. Puedes encontrar los registros en ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.

    Estos registros pueden crecer muy rápidamente, por lo que debe eliminar el perfil después de haber reproducido el problema y extraído los registros de su dispositivo.

  • Los nombres de archivos no distinguen entre mayúsculas y minúsculas en Mac OS X, pero sí en iOS. Esto puede generar problemas al compartir archivos entre ambos usando iCloud. Debes tomar medidas en iOS para evitar crear archivos cuyos nombres difieran sólo en mayúsculas y minúsculas.

iTunes

  • La versión de iTunes que viene con la versión GM no puede sincronizar dispositivos que tengan instalado el software beta 7. Para evitar este problema, haga lo siguiente:
    1. Sincroniza cualquier dispositivo que tenga instalada la versión beta 7 con la versión de iTunes que viene con la versión beta 7.
    2. Actualice iTunes a la versión que viene con la versión GM.
    3. Conecte el dispositivo e instale el software GM. (Comprenda que es posible que vea un error de sincronización cuando conecte el dispositivo por primera vez).
    4. Después de instalar el software GM, restaure desde la copia de seguridad que realizó en el paso 1.

reproductor de música

  • FIJO: Al eliminar una canción o un video de Música/Videos en el dispositivo, la aplicación Reproductor de música falla.

Seguridad

  • En iOS 5 no se admite la firma de certificados con firmas MD5. Asegúrese de que los certificados utilicen algoritmos de firma basados ​​en SHA1 o SHA2.

trampolín

  • Las notificaciones push y locales para aplicaciones aparecen en el nuevo Centro de notificaciones de iOS 5. El Centro de notificaciones muestra notificaciones que se consideran "no leídas". Para dar cabida a notificaciones push y locales que no tienen estado no leído, establezca el recuento de credenciales de su aplicación en 0 para borrar las notificaciones de esa aplicación del Centro de notificaciones.

Automatización de UI

  • Cuando se utiliza el performTaskWithPathArgumentsTimeout método de UIAHost en un script de automatización de la interfaz de usuario donde la API genera excesivamente (digamos, miles de líneas de texto) a un error estándar o estándar, la tarea puede bloquearse hasta que se alcance el tiempo de espera, momento en el cual se generará una excepción de JavaScript.
  • El  lock() y unlock() funciones de UIATarget han sido reemplazados con el lockForDuration() función.
  • En iOS 5, ahora puede activar la ejecución de un script de automatización de la interfaz de usuario en un dispositivo iOS desde el terminal host mediante la herramienta de instrumentos. El comando es:
    • instruments -w <device id> -t <template> <application>
  • Al utilizar los instrumentos cli para la automatización de la interfaz de usuario, ahora puede apuntar a la plantilla de automatización predeterminada y pasar el script y la ruta de los resultados a la herramienta como opciones de variables de entorno. Por ejemplo:
    • instruments -w <device id> -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <application> -e UIASCRIPT <script> -e UIARESULTSPATH <results path>

kit de interfaz de usuario

  • Las devoluciones de llamada de rotación en iOS 5 no se aplican a los controladores de visualización que se presentan en pantalla completa. Lo que esto significa es que si su código presenta un controlador de vista sobre otro controlador de vista, y luego el usuario gira el dispositivo a una orientación diferente, al descartarlo, el controlador subyacente (es decir, el controlador de presentación) no recibirá ninguna devolución de llamada de rotación. Sin embargo, tenga en cuenta que el controlador presentador recibirá una viewWillLayoutSubviews llamar cuando se vuelva a mostrar, y el interfaceOrientation La propiedad se puede consultar desde este método y usarse para diseñar el controlador correctamente.
  • En iOS 5, el UIPickerView la clase no envía su pickerView:didSelectRow:inComponent: delegar mensaje en respuesta a la selección programática de un elemento.
  • Volviendo nil del desplegable tableView:viewForHeaderInSection: El método (o su equivalente de pie de página) ya no es suficiente para ocultar un encabezado. Debes anular tableView:heightForHeaderInSection: y volver0.0 para ocultar un encabezado.
  • En iOS 5, el UITableView La clase tiene dos métodos para mover una celda de una fila a otra con parámetros definidos. Estas API tienen:
  • Usando el  UIWebView clase en Interface Builder, es posible configurar un color de fondo transparente en iOS 5. Los desarrolladores que compilan con el nuevo SDK pueden verificar su XIB para ver UIWebView ajustes transparentes.
  • En iOS 5, el UINavigationBarUIToolbarUITabBar Las implementaciones han cambiado para que el drawRect: El método no se llama a menos que esté implementado en una subclase. Aplicaciones que se han reimplementadodrawRect: en una categoría en cualquiera de estas clases encontrará que el drawRect: El método no se llama. UIKit verifica los enlaces para evitar que se llame al método en aplicaciones vinculadas antes de iOS 5, pero no admite este diseño en iOS 5 o posterior. Las aplicaciones pueden:
    • Utilice la API de personalización para barras en iOS 5 y posterior, que es la forma preferida.
    • Subclase UINavigationBar (u otras clases de barras) y anular drawRect: en la subclase.
  • El  indexPathForRow:inSection:sectionrow métodos de NSIndexPath Ahora usa NSInteger en lugar de NSUInteger, para que estos tipos coincidan con los métodos definidos en UITableView.
  • El comportamiento de la UITableView clase scrollToRowAtIndexPath:atScrollPosition:animated: El método ha cambiado. Si una posición de desplazamiento de UITableViewScrollPositionTop orUITableViewScrollPositionBottom Si se especifica, el método ahora se ajusta a las partes superior e inferior del contentInset propiedad.
  • En versiones anteriores a iOS 5, el UIPopoverController La clase establecería incondicionalmente las máscaras de tamaño automático de los controladores de vista que proporcionaron el contenido para el controlador emergente. También establecería incondicionalmente las máscaras de tamaño automático de las vistas de los controladores de vista empujados a un UINavigationController objeto que era el controlador de vista de contenido del controlador emergente UIPopoverController La clase ya no hace esto para aplicaciones vinculadas con iOS 5 o posterior. Los desarrolladores deben asegurarse de que las máscaras de tamaño automático de las vistas estén configuradas correctamente para permitir un cambio de tamaño arbitrario dentro de cualquier contenedor, no solo los elementos emergentes. Una máscara fuera (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) es razonable.
  • El controlador de finalización para saveToURL:forSaveOperation:completionHandler: se llama fuera del bloque de escritura coordinada.
  • El  autosaveWithCompletionHandler: El método ahora solo se utiliza para ahorros basados ​​en períodos cuando es seguro regresar sin ahorrar. Sin embargo, los documentos deben guardarse si elsaveToURL:forSaveOperation:completionHandler: se invoca el método.

Safari y WebKit

  • En iOS 5, una nueva propiedad CSS heredada, -webkit-overflow-scrolling, está disponible. El valor touch permite al desarrollador web optar por el desplazamiento de estilo nativo en un overflow:scroll elementos. El valor predeterminado para esta propiedad es auto, que permite desplazarse con un solo dedo sin impulso.
  • El marco WebKit se ha actualizado a una versión que se asemeja mucho al motor utilizado por Safari 5.1 en el escritorio. Hay algunas áreas que se deben tener en cuenta con el nuevo marco WebKit en iOS 5. Específicamente, para sitios web y aplicaciones nativas que usan UIWebView:
    • Hay un nuevo analizador compatible con HTML5.
    • El ancho del diseño del texto puede cambiar ligeramente porque el comportamiento de redondeo de palabras ahora tiene una precisión basada en punto flotante.
    • Hay una validación mejorada de la <input type=number> campo de formulario, que incluye la eliminación de ceros a la izquierda y el formato de números.
    • Los eventos táctiles ahora son compatibles con los campos de entrada.
    • <input type=range> ahora es compatible.
    • window.onerror ahora es compatible.
    • Hay un nuevo agente de usuario que no tiene información local en la cadena del Agente de usuario.
    • Las URL ahora se canonizan haciendo que el esquema esté todo en minúsculas. Si se utiliza una URL falsa para pasar información de un UIWebView Volviendo al código nativo, asegúrese de que el esquema esté siempre en minúsculas o que el código nativo compare el esquema sin distinguir entre mayúsculas y minúsculas.

sincronización wifi

  • La compatibilidad con sincronización inalámbrica requiere Mac OS X 10.6.8 o Lion. Verá una opción para habilitar la sincronización inalámbrica cuando conecte su dispositivo a iTunes con el cable USB. Se recomienda que realice su sincronización inicial con un cable después de restaurar su dispositivo.
    • La sincronización inalámbrica se activa automáticamente cuando el dispositivo está conectado a la corriente y en la misma red que la computadora emparejada. O puede activar manualmente una sincronización desde iTunes o desde Configuración > General > Sincronización de iTunes (se requiere la misma red que la computadora emparejada).
    • Si encuentra problemas con las aplicaciones, los medios y/o las fotos sincronizadas con su dispositivo, puede restablecer y volver a sincronizar. En Configuración > General > Restablecer, elija Borrar todo el contenido y la configuración. Luego vuelva a conectarse a iTunes y sincronice nuevamente.

Herramientas Xcode

Para obtener información sobre los cambios en Xcode, Interface Builder, Instruments y iOS Simulator, consulte Notas de la versión de Xcode.