¿De cuántas maneras diferentes puede un usuario acceder a mi app en Windows Phone 8?
El otro día di una sesión en el TechDay Tour Madrid sobre integración de apps con Windows Phone, en la que planteaba las siguientes preguntas al principio de la misma: ¿De cuántas maneras diferentes puede el usuario acceder a mi app? ¿Con qué partes del sistema operativo puedo integrar mi app para que sea lo más accesible posible para el usuario? ¿De cuántas maneras diferentes puede ser lanzada mi app, y cómo puedo actuar en consecuencia?
La idea es que si integramos nuestra app con Windows Phone la haremos parte de la experiencia del usuario con el teléfono, será más accesible y conseguiremos mayor visibilidad para ella.
Como vas a ver he encontrado unas cuantas maneras de lanzar una app. Para cada una de ellas he añadido un pequeño comentario de en qué consiste, y he indicado con qué URI se lanzará la app y dónde puedes encontrar más documentación y ejemplos.
1. Lista de Apps
Podemos lanzar una app directamente desde la lista de apps del teléfono. Esta acción nos llevará a la página principal de la app. La URI que se proporcionará a la app al iniciarse contendrá únicamente el nombre de dicha página.
URI de ejemplo: /MainPage.xaml
2. Tile Principal
Podemos anclar una app a la página de inicio del teléfono y lanzarla desde ahí. Esta acción nos llevará una vez más a la página principal de la app.
URI de ejemplo: /MainPage.xaml
Más información: Tiles for Windows Phone
3. Tiles Secundarios
Una app puede tener más de un Tile. Los Tiles secundarios nos permiten acceder a diferentes partes de la app sin necesidad de pasar por su página principal. Si creamos un Tile secundario con una llamada a ShellTile.Create, podremos proporcionar una URI con la página de la app a la que queremos que se navegue al pulsar dicho Tile, y qué parámetros de navegación le queremos pasar (para poder así distinguir un Tile de otro y realizar diferentes acciones).
URI de ejemplo: /SecondaryTilePage.xaml?ID=Some Value From Secondary Tile
Más información: Tiles for Windows Phone
4. Configuración de la Pantalla de Bloqueo
Una app puede registrarse para poder cambiar el fondo de la pantalla de bloqueo y mostrar información de su estado. Cuando vamos a la configuración de la pantalla de bloqueo en el teléfono y elegimos la app como aquella que puede cambiar el fondo, aparece un botón que nos permite abrir la app desde la configuración. A la app se le pasará una URI especial que le indicará que tiene que mostrar una página específica de configuración de la pantalla de bloqueo. La app podrá detectar esa URI y navegar directamente a una página de configuración.
URI de ejemplo: /MainPage.xaml?WallpaperSettings=1
Más información: Lock screen for Windows Phone 8
5. Recordatorios
Una app puede mostrar recordatorios al usuario, al igual que hace el calendario del teléfono. Si el usuario pulsa en el recordatorio se abrirá la app y se le pasará la URI que hayamos especificado al crear el recordatorio en la propiedad Reminder.NavigationUri. La URI indica la página a la que queremos navegar y los parámetros que queremos pasarle.
URI de ejemplo: /ReminderPage.xaml?ID=Some Value From Reminder
Más información: Notifications for Windows Phone, Local notifications for Windows Phone
6. Notificaciones Locales de tipo Toast
Aunque una app no se esté ejecutando, puede que sí lo esté haciendo una de sus tareas de fondo. Estas tareas pueden mostrar mensajes de tipo Toast al usuario. Si el usuario pulsa uno de estos mensajes se abrirá la app y se le pasará la URI que hayamos especificado al crear el Toast en la propiedad ShellToast.NavigationUri. La URI indica la página a la que navegar y sus parámetros.
URI de ejemplo: /LocalToastPage.xaml?ID=Some Value From Local Toast
Más información: Notifications for Windows Phone, Local notifications for Windows Phone
7. Notificaciones Push de tipo Toast
Los mensajes Toast también pueden enviarse directamente a una app desde un servidor mediante un mensaje Push. Si la app no está abierta, éstos se mostrarán al usuario. Si el usuario pulsa uno de ellos se abrirá la app y se le pasará la URI especificada en el XML que nos ha llegado del servidor. La URI indica la página a la que navegar y sus parámetros.
URI de ejemplo: /PushToastPage.xaml?ID=Some Value From Push Toast
Más información: Notifications for Windows Phone, Push notifications for Windows Phone
8. Asociación de Ficheros
Una app puede registrarse para manejar ficheros de una extensión determinada. Cuando otra app quiere abrir un fichero y se lanza esta app registrada para abrirlo, se le pasa una URI específica con un token que identifica al fichero. La app podrá detectar esa URI y navegar a una página donde acceda con el token al fichero.
URI de ejemplo: /FileTypeAssociation?fileToken=818CF118-8A6A-4500-BA82-35A8DE160DD3
Más información: Auto-launching apps using file and URI associations for Windows Phone 8
9. Asociación de Protocolo/URI
Una app puede asociarse a un protocolo determinado con una URI específica. Si por ejemplo la app se registra para manejar el protocolo "demo:", y otra app lanza la URI "demo:ShowSomething?ID=Some Value From Demo Companion" (donde "ShowSomething" sería una acción cualquiera e "ID" uno de los parámetros que puedo pasarle), la app registrada se abrirá y se le pasará una URI específica con esa información. La app podrá detectar esa URI y navegar a una página donde procese la información.
URI de ejemplo: /Protocol?encodedLaunchUri=demo:ShowSomething?ID=Some Value From Demo Companion
Más información: Auto-launching apps using file and URI associations for Windows Phone 8
10. Asociación de Protocolo/URI + NFC
Una app en un teléfono puede lanzar una URI a otro teléfono mediante NFC. Si una app está asociada al protocolo en cuestión y se encuentra instalada en el teléfono de destino se abrirá de igual manera que en el punto anterior, recibirá la URI con el protocolo, la acción a realizar y los parámetros. Podrá entonces navegar a una página que sepa procesar la información.
URI de ejemplo: /Protocol?encodedLaunchUri=demo:ShowSomething?ID=Some Value From Demo Companion
Más información: Proximity for Windows Phone 8, Auto-launching apps using file and URI associations for Windows Phone 8
11. Comandos de Voz
Podemos lanzar una app directamente con comandos de voz. En el XML en el que se definen los comandos que admite y que despertarán a la app, podemos especificar directamente a qué página queremos navegar según el comando identificado. A esa página se le pasarán varios parámetros: qué ha dicho el usuario en su conjunto ("reco=..." en la URI de ejemplo), qué comando ha sido utilizado exactamente ("voiceCommandName=..."), y qué parámetro ha utilizado con el comando ("widgetViews=...").
URI de ejemplo: /SpeechPage.xaml?voiceCommandName=showWidgets&reco=Extensibility Demo Show today's specials&widgetViews=today's specials
Más información: Speech for Windows Phone 8, Voice commands for Windows Phone 8
12. Búsquedas
Cuando realizamos una búsqueda con Bing en el teléfono, y buscamos por hoteles, restaurantes, películas, etc., una app puede registrarse para recibir información de dichas búsquedas. A la app se le pasará una URI especial con los resultados de la búsqueda (p.ej. información de un hotel). La app podrá detectar esa URI y navegar directamente a una página donde se procese esa información.
URI de ejemplo: /SearchExtras?PlaceName=Redmond Marriott Town Center&PlaceLatitude=47.670893&PlaceLongitude=-122.121661&PlaceAddress=7401 164th Ave Ne, Redmond, WA, 98052, US&PhoneNumber=(425) 498-4000&Category=Bing_Places_Travel
Más información: Search extensibility for Windows Phone
13. App Instant Answer
Cuando realizamos una búsqueda cualquiera con Bing en el teléfono, Bing puede sugerirnos apps relacionadas con la búsqueda. Si el usuario pulsa en una de las apps, ésta se abrirá y se le pasará una URI con las palabras que utilizó el usuario al buscar en Bing. La app podrá detectar esa URI y navegar a una página donde procese esa información.
URI de ejemplo: /MainPage.xaml?bing_query=Extensibility Search Demo
Más información: Search extensibility for Windows Phone, How to integrate with App Instant Answer for Windows Phone
14. Lentes
Una app puede registrarse como lente de la cámara. Cuando el usuario vaya a tomar por ejemplo una foto con la app de cámara que viene por defecto en el teléfono, podrá elegir esta app de entre todas las lentes disponibles. La app se abrirá y se le pasará una URI específica. Podrá detectar la URI y navegar a una página donde se pueda capturar la imagen con la cámara. A esta imagen se le podrán aplicar efectos diversos, o ponerle una capa de realidad aumentada por encima, etc.
URI de ejemplo: /MainPage.xaml?Action=ViewfinderLaunch
Más información: Camera and photos for Windows Phone, Lenses for Windows Phone 8, Lens extensibility for Windows Phone 8, Capturing photos for Windows Phone, How to create a base camera app for Windows Phone
15. Apps del Hub de Fotos
Una app puede registrarse para aparecer en la lista de apps del Hub de Fotos del teléfono. Si el usuario lanza la app desde ahí ésta se abrirá directamente en su página principal.
URI de ejemplo: /MainPage.xaml
Más información: Photo extensibility for Windows Phone, Extending the Photos Hub for Windows Phone
16. Compartición de Fotos
Una app puede registrase para recibir las fotos que el usuario comparta desde el Hub de Fotos o desde una app (usando la clase ShareMediaTask). Si el usuario elige la app para compartir una foto, ésta se abrirá y se le pasará una URI específica con un token que identifica a la foto. La app podrá detectar esa URI y navegar a una página donde acceda con el token a la foto y la suba a alguna red social, por ejemplo.
URI de ejemplo: /MainPage.xaml?Action=ShareContent&FileId={DDF4E3CA-0C3D-48EF-9B5F-EF13FFF82952}
Más información: Photo extensibility for Windows Phone, Extending the share picker for Windows Phone
17. Edición de Fotos con Rich Media
Una app que captura imágenes puede registrarse como una app de Rich Media. Estas apps guardan información adicional en local o en la web sobre las imágenes que capturan. Cuando vemos las imágenes capturadas en el Hub de Fotos, éstas aparecen con el nombre de la app que las capturó. Si el usuario decide lanzar la app asociada a la foto desde el Hub de Fotos, la app se abrirá y se le pasará una URI específica con un token que identifica a la foto. La app podrá detectar esa URI y navegar a una página donde acceda con el token a la foto y permita verla o editarla de manera especial con esa información que guardó al tomarla.
URI de ejemplo: /MainPage.xaml?Action=RichMediaEdit&token={ddf4e3ca-0c3d-48ef-9b5f-ef13fff82952}
Más información: Photo extensibility for Windows Phone, Rich media extensibility for Windows Phone 8
18. Edición de Fotos
Una app puede registrarse como editora de fotos. Si el usuario va a editar una foto en el Hub de Fotos y elige esta app para hacerlo, la app se abrirá y se le pasará una URI específica con un token que identifica a la foto. La app podrá detectar esa URI y navegar a una página donde acceda con el token a la foto y permita su edición.
URI de ejemplo: /MainPage.xaml?Action=EditPhotoContent&FileId={ddf4e3ca-0c3d-48ef-9b5f-ef13fff82952}
Más información: Photo extensibility for Windows Phone, Extending the photo edit picker for Windows Phone 8
19. Subida de Fotos Automática
Una app puede automáticamente subir fotos a un servicio de almacenamiento en la nube mediante una tarea de fondo intensiva (ResourceIntensiveTask). Si tiene esta funcionalidad se puede registrar para poder ser lanzada desde la sección de configuración de Cámara y Fotos en el teléfono. Si la app es lanzada desde ahí, se abrirá y se le pasará una URI específica. La app podrá detectar esa URI y navegar directamente a una página de configuración de la subida de fotos.
URI de ejemplo: /MainPage.xaml?Action=ConfigurePhotosUploadSettings
Más información: Camera and photos for Windows Phone, Auto-upload apps for Windows Phone 8
20. Apps del Hub de Música+Videos
Si una app cumple los requisitos de certificación y utiliza las clases MediaHistory and MediaHistoryItem, podrá aparecer en la lista de apps del Hub de Música y Videos. Si el usuario lanza la app desde ahí, ésta se abrirá directamente en su página principal.
URI de ejemplo: /MainPage.xaml
How to integrate with the Music and Videos Hub for Windows Phone
21. Historial del Hub de Música+Videos
Una app integrada con el Hub de Música+Videos puede actualizar la sección de Historial con el método MediaHistory.WriteRecentPlay. A este método se le pasa un objeto de tipo MediaHistoryItem. Si el usuario pulsa en el elemento creado en Historial, se abrirá la app y se le pasará una URI cuyos parámetros serán la información de contexto proporcionada en la propiedad MediaHistoryItem.PlayerContext. La app podrá detectar esa URI y navegar directamente a una página que sepa qué hacer con esos parámetros.
URI de ejemplo: /MainPage.xaml?MusicHistoryKey=One song from 'history' page
Más información: How to integrate with the Music and Videos Hub for Windows Phone
22. Novedades del Hub de Música+Videos
Una app integrada con el Hub de Música+Videos puede actualizar la sección de Novedades con el método MediaHistory.WriteAcquiredItem. A este método se le pasa un objeto de tipo MediaHistoryItem. Si el usuario pulsa en el elemento creado en Novedades, se abrirá la app y se le pasará una URI cuyos parámetros serán la información de contexto proporcionada en la propiedad MediaHistoryItem.PlayerContext. La app podrá detectar esa URI y navegar directamente a una página que sepa qué hacer con esos parámetros.
URI de ejemplo: /MainPage.xaml?MusicNewKey=One song from 'new' page
Más información: How to integrate with the Music and Videos Hub for Windows Phone
23. Apps de la Cartera
Una app puede registrase para aparecer en la lista de apps de la Cartera. Si el usuario lanza la app desde ahí, ésta se abrirá directamente en su página principal.
URI de ejemplo: /MainPage.xaml
Más información: Wallet for Windows Phone 8
24. Ítems de la Cartera
Una app puede crear un ítem en la Cartera, por ejemplo una tarjeta de pago, con la clase AddWalletItemTask. El usuario puede ir al ítem en su Cartera y abrir la app asociada al mismo. A la app se le pasará la URI que se especificó en la propiedad WalletItem.NavigationUri al crear dicho ítem. La URI indica la página a la que queremos navegar y los parámetros que queremos pasarle.
URI de ejemplo: /WalletItemPage.xaml?Display Name=Extensibility Demo Card&Nickname=Alex's Card&Customer Name=Alejandro Campos Magencio&Display Available Balance=Not much&Expiration Date=12/15/2014 12:00:00 AM
Más información: Wallet for Windows Phone 8, How to use the add Wallet item task for Windows Phone
25. Mensajes de los Ítems de la Cartera
Una app puede especificar un mensaje que quiere que aparezca al lado de uno de los ítems que ha creado en la Cartera, por ejemplo para indicar que hay ofertas asociadas a ese ítem. El usuario poder pulsar ese mensaje y abrir la app. A la app se le pasará la URI que se especificó en la propiedad WalletItem.MessageNavigationUri de ese ítem. La URI indica la página a la que queremos navegar y los parámetros que queremos pasarle.
URI de ejemplo: /WalletOfferPage.xaml?Display Name=Extensibility Demo Card&Nickname=Alex's Card&Offer=There is a very nice offer for you!
Más información: Wallet for Windows Phone 8, How to use the add Wallet item task for Windows Phone
26. Transacciones de los Ítems de la Cartera
Una app puede especificar transacciones realizadas con los ítems que ha creado en la Cartera. El usuario poder pulsar en una de esas transacciones y abrir la app. A la app se le pasará la URI que se especificó en la propiedad WalletTransaction.NavigationUri al crear la transacción para su ítem correspondiente. La URI indica la página a la que queremos navegar y los parámetros que queremos pasarle.
URI de ejemplo: /WalletTransactionPage.xaml?Display Name=Extensibility Demo Card&Nickname=Alex's Card&Description=Cheese purchase&Display Ammount=10€&Location=Mercadona&Transaction Date=2/19/2014 2:23:35 AM
Más información: Wallet for Windows Phone 8, How to use the add Wallet item task for Windows Phone
27. Wallet Item Transactions History
Una app puede mostrar el histórico de transacciones realizadas con los ítems que ha creado en la Cartera. Para ello el usuario tiene que indicar que quiere ver el histórico de un ítem. La app se abrirá y se le pasará la URI que se especificó en la propiedad WalletTransactionItemBase.TransactionHistoryNavigationUri de ese ítem. La URI indica la página a la que queremos navegar y los parámetros que queremos pasarle.
URI de ejemplo: /WalletTransactionsHistoryPage.xaml?Display Name=Extensibility Demo Card&Nickname=Alex's Card
Más información: Wallet for Windows Phone 8, How to use the add Wallet item task for Windows Phone
En total he encontrado 27 maneras diferentes de lanzar una app en Windows Phone 8. ¿Son unas pocas no? :-) Ahora, puedo haberme dejado alguna. Si es el caso no dudes en contactar conmigo y la incluiré en el artículo.
Aquí puedes encontrar más información sobre todo esto y más: Integrating with Windows Phone. También puedes bajarte la presentación que utilicé en el pasado TechDay Tour Madrid donde hablé sobre todo esto.
Un saludo,
Alejandro Campos Magencio (@alejacma)
Microsoft Technical Evangelist
PD: Mantente informado de todas las novedades de Microsoft para los desarrolladores españoles a través del Twitter de MSDN, el Facebook de MSDN, el Blog de MSDN y la Newsletter MSDN Flash.
Comments
- Anonymous
April 20, 2014
Buenas, no dispongo de dispositivo con WP, pero me gustaría saber si WP puede lanzar una tarea de fondo sin el permiso del usuario y que este se arranque en el inicio o algo similar. Gracias.