¿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.