SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
19/09/2011




                                                                                      Nuevos servicios en
                                                                                         Background

                                                                                     Background                    Background
                                                                                    Notifications                   Transfers


                                                                                                    Multitasking


                                                                                     Background                    Background
                                                                                       Agents                         Audio




          Transferencia de archivos en Background                               Requisitos de la aplicación

 Descargas archivos ejecutándose segundo plano                           Transferencias iniciadas por el usuario o consciente
 Continúan aunque aplicación no esté ejecutándose primer                  de que se están ejecutando
  plano
                                                                          Posibilidad de mostrar transferencias en proceso
 Posibilidad de encolar transferencias (subidas o descargas)
                                                                          Posibilidad de cancelar transferencias activas o
 APIs consulta estado transferencias e indicadores de
  progreso
                                                                           pendientes
 Nombre de espacio:
      Microsoft.Phone.BackgroundTransferService                           Posibilidad forzar transferencias sólo cuando haya
      •   BackgroundTransferService gestión transferencias existentes     WiFi
      •   BackgroundTransferRequest  una única petición
      •   GET HTTP descarga y POST HTTP subida                                                                        Obligatorio
                                                                                                                      Recomendado




                                                                                                                                             1
19/09/2011




                Restricciones del sistema de archivos                                                                                          Cabeceras reservadas

 Transferencias requieren ruta archivo local                                                                                      BackgroundTransferRequest.Headers almacena
  •     Descargas ruta específica de almacenamiento                                                                                caberas HTTP
  •     Subidas  ruta en la que se encuentra el archivo a enviar
                                                                                                                                   Cabeceras reservadas al SO
• Todas las rutas locales en almacenamiento aislado en                                                                                    If-Modified-Since
                                                                                                                                          If-None-Match
  directorio Transfers                                                                                                                    If-Range
                                                                                                                                          Range
       • Creado por el SO durante instalación
                                                                                                                                          Unless-Modified-Since
       • Puede albergar estructura de directorio adicional

                                                                                                                                   Agregar alguna a la colección de cabeceras 
• Iniciar transferencia fuera directorio Transfers                                                                                 NotSupportedException !!
  Exception!!




                Políticas de transferencia de archivos                                                                                         Políticas de transferencia de archivos

 Transferencias iniciadas cuando se cumplan requisitos                                                                            SO obliga a cumplir restricciones
  BackgroundTransferRequest.TransferPreferences                                                                                                 Máximo número total de transferencias concurrentes
                                                                                                                                                                                                     2
                                                                                                                                                (de todas las aplicaciones del dispositivo)
                                                                                                                                                Máximo número total de transferencias encoladas
                                                                                                                                                                                                     500
 SO obliga a cumplir restricciones                                                                                                  Límites
                                                                                                                                                (de todas las aplicaciones del dispositivo)

                                                                                                                                                Máximo número de cabeceras HTTP por petición         10

                 Máximo archivo subida                              5MB                                                                         Máximo tamaño de cabeceras HTTP                      16K cada una
                                                                    20 MB (Si se sobrepasa  TransferPreferenc es cambia a
                Máximo tamaño de descarga en conexión de datos

                Máximo tamaño de descarga sobre WiFi sin
                                                                    AllowBattery  se precisa WiFi para la transferencia)
                                                                                                                                   Servicio de transferencia segundo plano
                                                                    100MB
      Tamaños
                alimentación externa                                                                                                   No se ejecuta en redes
                Máximo tamaño de descarga sobre WiFi con
                alimentación externa y TransferPreferences = None   Sin límite                                                            •    2G
                o AllowCellular                                                                                                           •    EDGE
                                                                    5 ( transferencias no eliminadas de la cola automáticamente
                Máximo número de peticiones en cola (activas y
                                                                     aplicaciones deben llamar al método
                                                                                                                                          •    GPRS Estándar
                pendientes) / aplicación
                                                                    Remove(backgroundTransferR equest)                                 Requiere redes 3G o superiores




                                                                                                                                                                                                                            2
19/09/2011




          Mejores prácticas                                                              Mejores prácticas

 Tras lanzar la aplicación                                                   Al agregar nuevas transferencias
  o Recorrer cada transferencia en background mediante                         o Comprobar si se ha llegado al límite de 5 transferencias simultáneas
    BackgroundTransferenceService.Request                                          • Límite alcanzado  alertar al usuario y esperar
                                                                                                        cancelar alguna transferencia
                                                                                                        guardar en almacenamiento aislado información de la nueva
  o Registrar evento TransferStatusChanged en cada una
                                                                                                        transferencia y lanzarla después
      •   Útil para responder a cambios de estado
                                                                               o Llamar al método BackgroundTransferenceService.Add() en bloque
                                                                                 try catch  Mostrar mensaje si excepción
  o Registrar evento TransferProgressChanged en cada una
                                                                               o Utilizar /Shared/Transfers como directorio raíz
      •   Útil para informar acerca del progreso de transferencias activas
                                                                                     •   Especificar propiedad DownloadLocation en archivos de descarga
                                                                                     •   Especificar propiedad UploadLocation en archivos de subida
  o Comprobar si ha finalizado o cambiado el estado de cada una
                                                                               o Especificar dirección del servidor remoto en la propiedad RequestUri
    en la propiedad TransferStatus
                                                                                 escapar caracteres especiales con Uri.EscapeUriString




          Mejores prácticas                                                              Mejores prácticas

 Cuando una transferencia finaliza                                           Interfaz de Usuario
                                                                               o Transferencia iniciada por el usuario  ej. mediante un botón
  o Propiedad TransferStatus tendrá valor Completed                            o Transferencia iniciada por la app  informar al usuario
                                                                               o Vista del estado y progreso de todas las transferencias
  o Comprobar en StatusCode si fue exitosa (200 ó 206)                         o Mecanismo para cancelar cualquiera o todas las transferencias
                                                                               o Restringir transferencias a la existencia de alimentación externa y
  o Comprobar TransferError si no se completó correctamente                      WiFi
                                                                               o Ofrecer al usuario opción de permitir transferencias sobre redes de
  o Llamar al método BackgroundTransferenceService.Remove() para                 datos y sin alimentación externa (TransferPreferences)
    eliminarla de la cola (límite 5 transferencias)                            o Si la transferencia está en un estado de espera  notificar al
                                                                                 usuario con un mensaje la razón, posibilidad de cancelar




                                                                                                                                                                    3
19/09/2011




                Mejores prácticas                                                                                                  Mejores prácticas

 Otras                                                                                                                      En el servidor
    o No modificar archivo destino del directorio /Shared/transfers hasta                                                      o Incluir en las cabeceras de respuesta Content-lenght
      fin de transferencia
                                                                                                                                  indica tamaño y progreso
    o Propiedad Tag para almacenar datos personalizados asociados a
      una transferencia
                                                                                                                                o Debe soportar peticiones Range  soporte para
    o Manejadores de evento TransferStatusChanged y                                                                               pausar y resumir transferencias
      TransferProgressChanged deben retornar rápido

    o Acceso almacenamiento aislado en otro hijo                                                                                o Probar funcionalidad del servidor desde una
                                                                                                                                  aplicación distinta a la de transferencias
    o TotalBytesToReceive tamaño del archivo
                                                                                                                                  (navegador…)




               Requisitos adicionales de certificación                                                                             Transferencia de archivos en Background

Requisito                                           Pruebas
                                                    1.   Lanzar la applicación.                                              Demo
Minimizar consumo batería con pantalla              2.   Bloquear el dispositivo.
bloqueada                                           3.   Verificar que la aplicacación detiene alizaciones del UI, timers
                                                         activos y demás actividades no críticas.
                                                                                                                              How to: Implement Background File Transfers for
                                                    1.   Lanzar la applicación.                                               Windows Phone
                         Batería superior a 6       2.   Reproducir un archivo de música.
                         horas                      3.   Bloquear el dispositivo.
Apps que reproducen                                 4.   Comprobar que el tiempo de batería es superior a 6 horas.
audio bajo pantalla                                 1.   Lanzar la applicación.
bloqueada                App en estado idle si no   2.   Verificar que no se está reproduciéndo ningún archivo de música.
                         estaba reproduciendo       3.   Bloquear el dispositivo.
                         música al bloquear         4.   Comprobar que la aplicación no reproduce música y está en
                                                         estado idle.
                                                    1.   Cargar el dispositivo al 100%.
Apps que no                                         2.   Activar modo vuelo.
                         Batería superior a 120
reproducen audio bajo                               3.   Lanzar la applicación.
                         horas
pantalla bloqueada                                  4.   Bloquear el dispositivo.
                                                    5.   Comprobar que el tiempo de batería es superior a 120 horas.




                                                                                                                                                                                        4
19/09/2011




         Recursos

 Centro de desarrollo de WP7 en MSDN
http://msdn.microsoft.com/es-es/windowsphone/default.aspx

 AppHub
http://create.msdn.com/

 Windows Phone Developer Blog
http://windowsteamblog.com/windows_phone/b/wpdev
 MobileNUG
http://www.mobilenug.es

 Forums
http://forums.create.msdn.com/forums/




                                                                    5

Mais conteúdo relacionado

Mais de Eduardo

Modulo9 Background Agents
Modulo9 Background AgentsModulo9 Background Agents
Modulo9 Background AgentsEduardo
 
Modulo8 Servicio De Notificaciones
Modulo8 Servicio De NotificacionesModulo8 Servicio De Notificaciones
Modulo8 Servicio De NotificacionesEduardo
 
Modulo7 Bases de Datos
Modulo7 Bases de DatosModulo7 Bases de Datos
Modulo7 Bases de DatosEduardo
 
Modulo5 Trucos Web Browser
Modulo5 Trucos Web BrowserModulo5 Trucos Web Browser
Modulo5 Trucos Web BrowserEduardo
 
Modulo4 Indicadores De Progreso
Modulo4 Indicadores De ProgresoModulo4 Indicadores De Progreso
Modulo4 Indicadores De ProgresoEduardo
 
Modulo3 Launchers&Choosers
Modulo3 Launchers&ChoosersModulo3 Launchers&Choosers
Modulo3 Launchers&ChoosersEduardo
 
Modulo 2 Modelo Ejecucion
Modulo 2 Modelo EjecucionModulo 2 Modelo Ejecucion
Modulo 2 Modelo EjecucionEduardo
 
Modulo1 Herramientas De Desarrollo Wp7 1
Modulo1 Herramientas De Desarrollo Wp7 1Modulo1 Herramientas De Desarrollo Wp7 1
Modulo1 Herramientas De Desarrollo Wp7 1Eduardo
 

Mais de Eduardo (8)

Modulo9 Background Agents
Modulo9 Background AgentsModulo9 Background Agents
Modulo9 Background Agents
 
Modulo8 Servicio De Notificaciones
Modulo8 Servicio De NotificacionesModulo8 Servicio De Notificaciones
Modulo8 Servicio De Notificaciones
 
Modulo7 Bases de Datos
Modulo7 Bases de DatosModulo7 Bases de Datos
Modulo7 Bases de Datos
 
Modulo5 Trucos Web Browser
Modulo5 Trucos Web BrowserModulo5 Trucos Web Browser
Modulo5 Trucos Web Browser
 
Modulo4 Indicadores De Progreso
Modulo4 Indicadores De ProgresoModulo4 Indicadores De Progreso
Modulo4 Indicadores De Progreso
 
Modulo3 Launchers&Choosers
Modulo3 Launchers&ChoosersModulo3 Launchers&Choosers
Modulo3 Launchers&Choosers
 
Modulo 2 Modelo Ejecucion
Modulo 2 Modelo EjecucionModulo 2 Modelo Ejecucion
Modulo 2 Modelo Ejecucion
 
Modulo1 Herramientas De Desarrollo Wp7 1
Modulo1 Herramientas De Desarrollo Wp7 1Modulo1 Herramientas De Desarrollo Wp7 1
Modulo1 Herramientas De Desarrollo Wp7 1
 

Modulo15 Background File Transfers

  • 1. 19/09/2011 Nuevos servicios en Background Background Background Notifications Transfers Multitasking Background Background Agents Audio Transferencia de archivos en Background Requisitos de la aplicación  Descargas archivos ejecutándose segundo plano  Transferencias iniciadas por el usuario o consciente  Continúan aunque aplicación no esté ejecutándose primer de que se están ejecutando plano  Posibilidad de mostrar transferencias en proceso  Posibilidad de encolar transferencias (subidas o descargas)  Posibilidad de cancelar transferencias activas o  APIs consulta estado transferencias e indicadores de progreso pendientes  Nombre de espacio: Microsoft.Phone.BackgroundTransferService  Posibilidad forzar transferencias sólo cuando haya • BackgroundTransferService gestión transferencias existentes WiFi • BackgroundTransferRequest  una única petición • GET HTTP descarga y POST HTTP subida  Obligatorio  Recomendado 1
  • 2. 19/09/2011 Restricciones del sistema de archivos Cabeceras reservadas  Transferencias requieren ruta archivo local  BackgroundTransferRequest.Headers almacena • Descargas ruta específica de almacenamiento caberas HTTP • Subidas  ruta en la que se encuentra el archivo a enviar  Cabeceras reservadas al SO • Todas las rutas locales en almacenamiento aislado en  If-Modified-Since  If-None-Match directorio Transfers  If-Range  Range • Creado por el SO durante instalación  Unless-Modified-Since • Puede albergar estructura de directorio adicional  Agregar alguna a la colección de cabeceras  • Iniciar transferencia fuera directorio Transfers  NotSupportedException !! Exception!! Políticas de transferencia de archivos Políticas de transferencia de archivos  Transferencias iniciadas cuando se cumplan requisitos  SO obliga a cumplir restricciones BackgroundTransferRequest.TransferPreferences Máximo número total de transferencias concurrentes 2 (de todas las aplicaciones del dispositivo) Máximo número total de transferencias encoladas 500  SO obliga a cumplir restricciones Límites (de todas las aplicaciones del dispositivo) Máximo número de cabeceras HTTP por petición 10 Máximo archivo subida 5MB Máximo tamaño de cabeceras HTTP 16K cada una 20 MB (Si se sobrepasa  TransferPreferenc es cambia a Máximo tamaño de descarga en conexión de datos Máximo tamaño de descarga sobre WiFi sin AllowBattery  se precisa WiFi para la transferencia)  Servicio de transferencia segundo plano 100MB Tamaños alimentación externa  No se ejecuta en redes Máximo tamaño de descarga sobre WiFi con alimentación externa y TransferPreferences = None Sin límite • 2G o AllowCellular • EDGE 5 ( transferencias no eliminadas de la cola automáticamente Máximo número de peticiones en cola (activas y  aplicaciones deben llamar al método • GPRS Estándar pendientes) / aplicación Remove(backgroundTransferR equest)  Requiere redes 3G o superiores 2
  • 3. 19/09/2011 Mejores prácticas Mejores prácticas  Tras lanzar la aplicación  Al agregar nuevas transferencias o Recorrer cada transferencia en background mediante o Comprobar si se ha llegado al límite de 5 transferencias simultáneas BackgroundTransferenceService.Request • Límite alcanzado  alertar al usuario y esperar cancelar alguna transferencia guardar en almacenamiento aislado información de la nueva o Registrar evento TransferStatusChanged en cada una transferencia y lanzarla después • Útil para responder a cambios de estado o Llamar al método BackgroundTransferenceService.Add() en bloque try catch  Mostrar mensaje si excepción o Registrar evento TransferProgressChanged en cada una o Utilizar /Shared/Transfers como directorio raíz • Útil para informar acerca del progreso de transferencias activas • Especificar propiedad DownloadLocation en archivos de descarga • Especificar propiedad UploadLocation en archivos de subida o Comprobar si ha finalizado o cambiado el estado de cada una o Especificar dirección del servidor remoto en la propiedad RequestUri en la propiedad TransferStatus escapar caracteres especiales con Uri.EscapeUriString Mejores prácticas Mejores prácticas  Cuando una transferencia finaliza  Interfaz de Usuario o Transferencia iniciada por el usuario  ej. mediante un botón o Propiedad TransferStatus tendrá valor Completed o Transferencia iniciada por la app  informar al usuario o Vista del estado y progreso de todas las transferencias o Comprobar en StatusCode si fue exitosa (200 ó 206) o Mecanismo para cancelar cualquiera o todas las transferencias o Restringir transferencias a la existencia de alimentación externa y o Comprobar TransferError si no se completó correctamente WiFi o Ofrecer al usuario opción de permitir transferencias sobre redes de o Llamar al método BackgroundTransferenceService.Remove() para datos y sin alimentación externa (TransferPreferences) eliminarla de la cola (límite 5 transferencias) o Si la transferencia está en un estado de espera  notificar al usuario con un mensaje la razón, posibilidad de cancelar 3
  • 4. 19/09/2011 Mejores prácticas Mejores prácticas  Otras  En el servidor o No modificar archivo destino del directorio /Shared/transfers hasta o Incluir en las cabeceras de respuesta Content-lenght fin de transferencia  indica tamaño y progreso o Propiedad Tag para almacenar datos personalizados asociados a una transferencia o Debe soportar peticiones Range  soporte para o Manejadores de evento TransferStatusChanged y pausar y resumir transferencias TransferProgressChanged deben retornar rápido o Acceso almacenamiento aislado en otro hijo o Probar funcionalidad del servidor desde una aplicación distinta a la de transferencias o TotalBytesToReceive tamaño del archivo (navegador…) Requisitos adicionales de certificación Transferencia de archivos en Background Requisito Pruebas 1. Lanzar la applicación.  Demo Minimizar consumo batería con pantalla 2. Bloquear el dispositivo. bloqueada 3. Verificar que la aplicacación detiene alizaciones del UI, timers activos y demás actividades no críticas. How to: Implement Background File Transfers for 1. Lanzar la applicación. Windows Phone Batería superior a 6 2. Reproducir un archivo de música. horas 3. Bloquear el dispositivo. Apps que reproducen 4. Comprobar que el tiempo de batería es superior a 6 horas. audio bajo pantalla 1. Lanzar la applicación. bloqueada App en estado idle si no 2. Verificar que no se está reproduciéndo ningún archivo de música. estaba reproduciendo 3. Bloquear el dispositivo. música al bloquear 4. Comprobar que la aplicación no reproduce música y está en estado idle. 1. Cargar el dispositivo al 100%. Apps que no 2. Activar modo vuelo. Batería superior a 120 reproducen audio bajo 3. Lanzar la applicación. horas pantalla bloqueada 4. Bloquear el dispositivo. 5. Comprobar que el tiempo de batería es superior a 120 horas. 4
  • 5. 19/09/2011 Recursos  Centro de desarrollo de WP7 en MSDN http://msdn.microsoft.com/es-es/windowsphone/default.aspx  AppHub http://create.msdn.com/  Windows Phone Developer Blog http://windowsteamblog.com/windows_phone/b/wpdev  MobileNUG http://www.mobilenug.es  Forums http://forums.create.msdn.com/forums/ 5