modulo15 background file transfers

5

Click here to load reader

Upload: eduardo

Post on 03-Jul-2015

1.837 views

Category:

Documents


0 download

DESCRIPTION

En este vídeo veremos cómo realizar transferencia de ficheros en Background para que un fichero se siga descargando en Background aunque la aplicación no esté ejecutándose. También veremos que capacidades de comunicación por sockets nos deja a nuestra disposición Windows Phone.

TRANSCRIPT

Page 1: Modulo15 Background File Transfers

19/09/2011

1

Nuevos servicios en

Background

Background

Notifications

Background Transfers

Background Agents

Background Audio

Multitasking

Transferencia de archivos en Background

Descargas archivos ejecutándose segundo plano

Continúan aunque aplicación no esté ejecutándose primer plano

Posibilidad de encolar transferencias (subidas o descargas)

APIs consulta estado transferencias e indicadores de

progreso

Nombre de espacio:

Microsoft.Phone.BackgroundTransferService • BackgroundTransferService gestión transferencias existentes

• BackgroundTransferRequest una única petición

• GET HTTP descarga y POST HTTP subida

Requisitos de la aplicación

Transferencias iniciadas por el usuario o consciente

de que se están ejecutando

Posibilidad de mostrar transferencias en proceso

Posibilidad de cancelar transferencias activas o

pendientes

Posibilidad forzar transferencias sólo cuando haya

WiFi

Obligatorio

Recomendado

Page 2: Modulo15 Background File Transfers

19/09/2011

2

Restricciones del sistema de archivos

Transferencias requieren ruta archivo local

• Descargas ruta específica de almacenamiento

• Subidas ruta en la que se encuentra el archivo a enviar

• Todas las rutas locales en almacenamiento aislado en

directorio Transfers • Creado por el SO durante instalación

• Puede albergar estructura de directorio adicional

• Iniciar transferencia fuera directorio Transfers

Exception!!

Cabeceras reservadas

BackgroundTransferRequest.Headers almacena

caberas HTTP

Cabeceras reservadas al SO If-Modified-Since

If-None-Match

If-Range

Range

Unless-Modified-Since

Agregar alguna a la colección de cabeceras

NotSupportedException !!

Políticas de transferencia de archivos

Transferencias iniciadas cuando se cumplan requisitos BackgroundTransferRequest.TransferPreferences

SO obliga a cumplir restricciones

Tamaños

Máximo archivo subida 5MB

Máximo tamaño de descarga en conexión de datos 20 MB (Si se sobrepasa TransferPreferenc es cambia a

AllowBattery se precisa WiFi para la transferencia)

Máximo tamaño de descarga sobre WiFi sin

alimentación externa 100MB

Máximo tamaño de descarga sobre WiFi con

alimentación externa y TransferPreferences = None

o AllowCellular

Sin límite

Máximo número de peticiones en cola (activas y

pendientes) / aplicación

5 ( transferencias no eliminadas de la cola automáticamente

aplicaciones deben llamar al método

Remove(backgroundTransferR equest)

Políticas de transferencia de archivos

SO obliga a cumplir restricciones

Servicio de transferencia segundo plano No se ejecuta en redes

• 2G

• EDGE

• GPRS Estándar

Requiere redes 3G o superiores

Límites

Máximo número total de transferencias concurrentes

(de todas las aplicaciones del dispositivo) 2

Máximo número total de transferencias encoladas

(de todas las aplicaciones del dispositivo) 500

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

Máximo tamaño de cabeceras HTTP 16K cada una

Page 3: Modulo15 Background File Transfers

19/09/2011

3

Mejores prácticas

Tras lanzar la aplicación

o Recorrer cada transferencia en background mediante

BackgroundTransferenceService.Request

o Registrar evento TransferStatusChanged en cada una

• Útil para responder a cambios de estado

o Registrar evento TransferProgressChanged en cada una

• Útil para informar acerca del progreso de transferencias activas

o Comprobar si ha finalizado o cambiado el estado de cada una

en la propiedad TransferStatus

Mejores prácticas

Al agregar nuevas transferencias

o Comprobar si se ha llegado al límite de 5 transferencias simultáneas

• Límite alcanzado alertar al usuario y esperar

cancelar alguna transferencia

guardar en almacenamiento aislado información de la nueva

transferencia y lanzarla después

o Llamar al método BackgroundTransferenceService.Add() en bloque

try catch Mostrar mensaje si excepción

o Utilizar /Shared/Transfers como directorio raíz • Especificar propiedad DownloadLocation en archivos de descarga

• Especificar propiedad UploadLocation en archivos de subida

o Especificar dirección del servidor remoto en la propiedad RequestUri

escapar caracteres especiales con Uri.EscapeUriString

Mejores prácticas

Cuando una transferencia finaliza

o Propiedad TransferStatus tendrá valor Completed

o Comprobar en StatusCode si fue exitosa (200 ó 206)

o Comprobar TransferError si no se completó correctamente

o Llamar al método BackgroundTransferenceService.Remove() para

eliminarla de la cola (límite 5 transferencias)

Interfaz de Usuario

o Transferencia iniciada por el usuario ej. mediante un botón

o Transferencia iniciada por la app informar al usuario

o Vista del estado y progreso de todas las transferencias

o Mecanismo para cancelar cualquiera o todas las transferencias

o Restringir transferencias a la existencia de alimentación externa y

WiFi

o Ofrecer al usuario opción de permitir transferencias sobre redes de

datos y sin alimentación externa (TransferPreferences)

o Si la transferencia está en un estado de espera notificar al

usuario con un mensaje la razón, posibilidad de cancelar

Mejores prácticas

Page 4: Modulo15 Background File Transfers

19/09/2011

4

Otras

o No modificar archivo destino del directorio /Shared/transfers hasta

fin de transferencia

o Propiedad Tag para almacenar datos personalizados asociados a

una transferencia

o Manejadores de evento TransferStatusChanged y

TransferProgressChanged deben retornar rápido

o Acceso almacenamiento aislado en otro hijo

o TotalBytesToReceive tamaño del archivo

Mejores prácticas Mejores prácticas

En el servidor

o Incluir en las cabeceras de respuesta Content-lenght

indica tamaño y progreso

o Debe soportar peticiones Range soporte para

pausar y resumir transferencias

o Probar funcionalidad del servidor desde una

aplicación distinta a la de transferencias

(navegador…)

Requisitos adicionales de certificación

Requisito Pruebas

Minimizar consumo batería con pantalla bloqueada

1. Lanzar la applicación. 2. Bloquear el dispositivo. 3. Verificar que la aplicacación detiene alizaciones del UI, timers

activos y demás actividades no críticas.

Apps que reproducen audio bajo pantalla bloqueada

Batería superior a 6 horas

1. Lanzar la applicación. 2. Reproducir un archivo de música. 3. Bloquear el dispositivo.

4. Comprobar que el tiempo de batería es superior a 6 horas.

App en estado idle si no estaba reproduciendo música al bloquear

1. Lanzar la applicación. 2. Verificar que no se está reproduciéndo ningún archivo de música. 3. Bloquear el dispositivo.

4. Comprobar que la aplicación no reproduce música y está en estado idle.

Apps que no reproducen audio bajo pantalla bloqueada

Batería superior a 120 horas

1. Cargar el dispositivo al 100%. 2. Activar modo vuelo. 3. Lanzar la applicación.

4. Bloquear el dispositivo. 5. Comprobar que el tiempo de batería es superior a 120 horas.

Transferencia de archivos en Background

Demo How to: Implement Background File Transfers for

Windows Phone