Datos, Servicios y Live Tiles Jose Antonio Gallego Jefe de proyectos Eduardo Ortega MVP Device Application Development
Windows Phone 7.5 Isolated Storage
Opciones de almacenamiento Aplicación IsolatedStorageSettings (System.IO.IsolatedStorage) IsolatedStorageFile DataContext (System.Data.Linq) Almacenamiento Aislado Pares clave/valor Archivos y carpetas Base de datos local Datos almacenados en: Settings: almacén de pares clave/valor usando la clase IsolatedStorageSettings Archivos y carpetas: almacén de ficheros y carpetas utilizando la clase IsolatedStorageFile Datos relacionales: almacén en base de datos usando LINQ to SQL Linq to SQL runtime
Escribir en almacenamiento aislado // Obtener el almacén virtual de la aplicación IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); // Crear una nueva carpeta myStore.CreateDirectory("MiCarpeta"); // Especificar ruta y opciones para nuevo archivo using (var isoFileStream = new IsolatedStorageFileStream("MiCarpeta\\miArchivo.txt", FileMode.OpenOrCreate, myStore)) { // Escribir datos en el archivo using (var isoFileWriter = new StreamWriter(isoFileStream)) { isoFileWriter.WriteLine(txtWrite.Text); }
Leer del almacenamiento aislado // Obtener el almacén virtual de la aplicación IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); try { // Especificar el archivo del que leer y opciones de apertura del mismo using (var isoFileStream = new IsolatedStorageFileStream("MiCarpeta\\miArchivo.txt", FileMode.Open, myStore)) { // Lectura de datos del archivo using (var isoFileReader = new StreamReader(isoFileStream)) { txtRead.Text = isoFileReader.ReadLine(); } } catch (Exception exc) { // Mostrar mensaje en caso de error MessageBox.Show("O Ocurrió un error al leer el fichero: " + exc.Message);
Carpetas especiales Ruta Uso Notas Shared/transfers Almacén para archivos utilizados en transferencias en Background Carpeta creada durante la instalación de la aplicación. Puede ser eliminada. Shared/ShellContent Almacén para las imágenes de los Application Tiles. Shared Almacena las carpetas Transfers, ShellContents y sus subcarpetas.
Buenas prácticas Actualizar una App Desinstalar una App Quotas Almacenamiento aislado no varía en la actualización Comprobar que la migración/transformación de datos es correcta Desinstalar una App Elimina toda la carpeta de la App, incluido almacenamiento aislado Quotas Apps no restringidas a un límite de quota Uso apropiado almacén en función de requisitos de la App Objetos de IsolatedStorageSettings Automáticamente guardados por el SO cuando el usuario sale de la App
Windows Phone 7.5 Isolated Storage
Windows Phone 7.5 Sql Server Compact Edition
Almacenamiento aislado Arquitectura El acceso a datos se realiza mediante LINQ to SQL Aplicación DataContext (System.Data.Linq) Almacenamiento aislado base de datos local LINQ to SQL
LINQ to SQL LINQ es una implementación de Object Relational Mapping Mapea objetos relacionales en un modelo orientado a objetos para trabajar con datos Datos LINQ to SQL Objetos
LINQ to SQL LINQ permite realizar operaciones con objetos que después se persisten en la base de datos. La aplicación utiliza LINQ para manejar los datos. LINQ to SQL lo traduce a T-SQL para que se pueda ejecutar en la base de datos T-SQL LINQ Base de datos Aplicación LINQ to SQL T-SQL LINQ
Comparación con la versión de escritorio SQL Server Windows Phone Lugar de ejecución Servicio en background Proceso de aplicación Acceso a la base de datos Cualquier aplicación Sólo la aplicación que la utiliza Consultas T-SQL LINQ to SQL
DataContext LINQ permite realizar operaciones en la base de datos a través de un objeto DataContext asociado. El objeto principal es DataContext Representa la base de datos mediante entidades LINQ to SQL mapea una base de datos en un modelo de objetos Base de datos DataContext Tabla clase del DataContext Columna propiedad de la clase Relación propiedad de la clase La estructura de la base de datos se define en el objeto DataContext mediante atributos de mapeo
Crear la base de datos Una vez creado el objeto DataContext y conocida la cadena de conexión… // Crea la base de datos si todavía no existe. using (ToDoDataContext db = new ToDoDataContext("isostore:/ToDo.sdf")) { if (db.DatabaseExists() == false) // Crea la base de datos. db.CreateDatabase(); } Indica que el archivo de la base de datos está en el almacenamiento aislado
Utilizar la base de datos Seleccionar datos // Define la consulta para obtener todos los elementos ToDo var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems select todo; // Ejecuta la consulta y añade el resultado a la colección. ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);
Utilizar la base de datos Insertar datos // Crea un nuevo elemento to-do ToDoItem newToDo = new ToDoItem {ItemName = "nuevo"}; // Añade el elemento to-do a la colección. ToDoItems.Add(newToDo); // Añade el elemento to-do a la base de datos local. db.ToDoItems.InsertOnSubmit(newToDo); // Guarda los cambios en la base de datos. db.SubmitChanges(); Se añade el nuevo elemento a la colección Se inserta el elemento Hasta que no se realiza la llamada a SubmitChanges() no se insertan los datos en la BD
Windows Phone 7.5 SQL Server Compact Edition
Windows Phone 7.5 Live Tiles
Utilización de Live Tiles ¿Cómo se utilizan los Tiles? Las APIs ShellTile permiten crear y eliminar Tiles secundarios, así como actualizar todos los Tiles Pueden actualizarse mediante el servicio de notificaciones push de Microsoft Las APIs ShellTileSchedule permiten actualizar un Tile de forma programada con información de un recurso remoto La apariencia inicial del Tile de aplicación se establece en el Application Manifest de Windows Phone Tile de aplicación Actualizar Tiles secundarios Crear Actualizar Eliminar
Utilización de Live Tiles El Tile de aplicación siempre es el primero de la lista de Tiles activos Actualizar el Tile de aplicación ShellTile TileToFind = ShellTile.ActiveTiles.First(); StandardTileData NewTileData = new StandardTileData { Title = “Titulo del tile”, BackgroundImage = new Uri(“miImg.jpg”,UriKind.Relative), Count = 1, BackTitle = “Título trasero”, BackBackgroundImage = new Uri(“imgDetras.jpg”, UriKind.Relative), BackContent = “Texto de la parte trasera” }; TileToFind.Update(NewTileData); Se crea un nuevo Tile con los datos actualizados Se actualiza el Tile de la aplicación con el que tiene los datos actualizados
Utilización de Live Tiles Se crea un Tile con la información necesaria Crear un Tile secundario StandardTileData NewTileData = new StandardTileData { BackgroundImage = new Uri(“imgTrasera.jpg", UriKind.Relative), Title = "Tile secundario“, Count = 12, BackTitle = “Parte trasera del Tile“, BackContent = “Bienvenido a la parte de atrás ”, BackBackgroundImage = new Uri(“fondoTrasera.jpg", UriKind.Relative) }; ShellTile.Create(new Uri("/MiTileSecundaria.xaml?DefaultTitle=miTile", UriKind.Relative), NewTileData); URI de la Tile creada, (incluyendo parámetros) e información inicial
Utilización de Live Tiles Eliminar un Tile secundario ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DefaultTitle=miTile")) ; if (TileToFind != null) { TileToFind.Delete(); } Se busca el Tile a eliminar Se elimina el Tile
DEMO Windows Phone 7.5 Live Tiles
Windows Phone 7.5 Notificaciones Push
Notificaciones Push El servicio de notificaciones Push de Microsoft proporciona un canal para enviar datos a una aplicación Windows Phone desde un servicio web Hay 3 tipos de notificaciones Toast Tile Raw
Notificaciones Push
Limitaciones de uso 1 canal de notificaciones push por aplicación Válido para cualquier tipo de notificación 30 canales de notificaciones push por dispositivo En notificaciones toast, se debe pedir permiso al usuario para habilitar o deshabilitar la recepción de notificaciones Las notificaciones push no deberían contener información personal La recepción de notificaciones depende de la conexión y la configuración de la red El tamaño máximo de carga es 1KB
Notificaciones Toast Parte superior de la pantalla Duración: unos 10 segundos Se descarta con un flick hacia la derecha Al tocar la notificación, se lanza la aplicación que la lanzó
Notificaciones Toast Partes de una notificación toast Título Subtítulo (propiedad Text1) Subtítulo (propiedad Text2) Parámetro Se pasa a la aplicación si se acepta la notificación. Pueden ser pares nombre/valor, una página de la aplicación… (propiedad Param) Icono de la aplicación
Notificaciones Tile Pantalla de inicio de Windows Phone Tienen 2 partes: delantera y trasera 2 tipos Tile de la aplicación: aplicación anclada a Inicio Tile secundario: se crea con la interacción del usuario Puede existir sin necesidad de un Tile de aplicación Ejemplos: mostrar el tiempo en distintas ciudades, últimas noticias por tipos (deportes, cultura…), etc. delante 1 detrás Texto del tile
Notificaciones Tile Partes de una notificación Tile
Notificaciones Raw Envían información a la aplicación Si ésta no se está ejecutando, la notificación se descarta
Windows Phone 7.5 Notificaciones Push
Q&A
GRACIAS www.micmovilidad.es Jose Antonio Gallego http://geeks.ms/blogs/jagallego @lmovilero www.fiveflamesmobile.com Eduardo Ortega http://geeks.ms/blogs/eduardoortega www.mobilenug.es