Código generado por el Asistente para notificaciones de inserción
Collapse the table of content
Expand the table of content

Código generado por el Asistente para notificaciones de inserción

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Usar un asistente en Visual Studio te permite generar notificaciones de inserción desde un servicio móvil creado con los Servicios móviles de Azure. El Asistente de Visual Studio genera código para ayudarte a empezar. En este tema se explica cómo el asistente modifica el proyecto, qué hace el código generado, cómo se usa este código y qué puedes hacer después para sacarle todo el partido a las notificaciones de inserción. Consulta la Introducción a los Servicios de notificaciones de inserción de Windows (WNS).

Cómo el asistente modifica tu proyecto

El Asistente para notificaciones de inserción modifica tu proyecto de estos modos:

  • Agrega una referencia al cliente administrado de los Servicios móviles (MobileServicesManagedClient.dll). No se aplica a proyectos de JavaScript.
  • Agrega un archivo a una subcarpeta de los servicios, y asigna un nombre al archivo push.register.cs, push.register.vb, push.register.cpp o push.register.js.
  • Crea una tabla del canal en el servidor de bases de datos para el servicio móvil. La tabla contiene información necesaria para enviar notificaciones de inserción a instancias de la aplicación.
  • Crea scripts para cuatro funciones: eliminar, insertar, leer y actualizar.
  • Crea un script con una API personalizada, notifyallusers.js, que envía una notificación de inserción a todos los clientes.
  • Agrega una declaración a tu archivo App.xaml.cs, App.xaml.vb o App.xaml.cpp, o agrega una declaración a un nuevo archivo, service.js, para proyectos JavaScript. La declaración declara un objeto MobileServiceClient que contiene la información necesaria para conectarse al servicio móvil. Puedes acceder a este objeto móvil MobileServiceClient, denominado MyServiceNameClient, desde cualquier página de la aplicación mediante el nombre App.MyServiceNameClient.

El archivo services.js contiene el siguiente código:



var <mobile-service-name>Client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
                "https://<mobile-service-name>.azure-mobile.net/",
                "<your client secret>");

Registro para notificaciones de inserción

En push.register.*, el método UploadChannel registra el dispositivo para recibir notificaciones de inserción. La Tienda Windows realiza un seguimiento de las copias de tu aplicación que hay instaladas y proporciona el canal de notificaciones de inserción. Consulta PushNotificationChannelManager.

El código de cliente es similar para tanto para el backend de JavaScript como para el backend de .NET. De manera predeterminada, al agregar notificaciones de inserción para un servicio backend de JavaScript, se inserta una llamada de ejemplo a la API personalizada notifyAllUsers en el método UploadChannel.



(function () {
    "use strict";

    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;

    app.addEventListener("activated", function (args) {
        if (args.detail.kind == activation.ActivationKind.launch) {
            Windows.Networking.PushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync()
                .then(function (channel) {
                    mymobileserviceclient1234Client.push.registerNative(channel.Uri, new Array("tag1", "tag2"))
                    return mymobileservice1234Client.push.registerNative(channel.uri);
                })
                .done(function (registration) {
                    return mymobileservice1234Client.invokeApi("notifyAllUsers");
                }, function (error) {
                    // Error

                });
        }
    });
})();


Las etiquetas de notificación de inserción proporcionan una forma de restringir las notificaciones para un subconjunto de clientes. Puedes usar el método registerNative (o RegisterNativeAsync) para registrarte para recibir todas las notificaciones de inserción sin especificar etiquetas, o bien puedes registrarte con etiquetas proporcionando el segundo argumento, una matriz de etiquetas. Si te registras con una o más etiquetas, solo recibirás notificaciones que coinciden con esas etiquetas.

Scripts del lado servidor (solo backend de JavaScript)

Para los servicios móviles que usan el backend de JavaScript, los scripts del lado servidor se ejecutan cuando se producen operaciones de eliminación, inserción, lectura o actualización. Los scripts no implementan estas operaciones, sino que se ejecutan cuando el cliente realiza una llamada a la API REST de los Servicios móviles de Windows que desencadena estos eventos. Después, los scripts pasan el control a las propias operaciones mediante una llamada a request.execute o request.respond para emitir una respuesta al contexto de llamada. Consulta Referencia de la API de REST de los Servicios móviles de Azure.

En el script del lado servidor hay disponible toda una variedad de funciones. Consulta Registrar operaciones de tabla en Servicios móviles de Azure. Puedes consultar una referencia de todas las funciones disponibles en Referencia de script de servidor de Servicios móviles.

También se crea el siguiente código de API personalizado en Notifyallusers.js:



exports.post = function(request, response) {
    response.send(statusCodes.OK,{ message : 'Hello World!' })
    
    // The following call is for illustration purpose only
    // The call and function body should be moved to a script in your app
    // where you want to send a notification
    sendNotifications(request);
};

// The following code should be moved to appropriate script in your app where notification is sent
function sendNotifications(request) {
    var payload = '<?xml version="1.0" encoding="utf-8"?><toast><visual><binding template="ToastText01">' +
        '<text id="1">Sample Toast</text></binding></visual></toast>';
    var push = request.service.push; 
    push.wns.send(null,
        payload,
        'wns/toast', {
            success: function (pushResponse) {
                console.log("Sent push:", pushResponse);
            }
        });
}

La función sendNotifications envía una sola notificación en forma de notificación del sistema. También puedes usar otros tipos de notificaciones de inserción.

Sugerencia  Para obtener información sobre cómo obtener ayuda durante la edición de scripts, consulta el tema sobre la habilitación de IntelliSense para JavaScript del lado servidor.
 

Tipos de notificaciones de inserción

Windows admite notificaciones de otro tipo además de notificaciones de inserción. Para obtener información general sobre las notificaciones, consulta Entrega de notificaciones programadas, periódicas y de inserción.

Las notificaciones del sistema son fáciles de usar; puedes ver un ejemplo en el código Insert.js, en la tabla del canal que se ha generado automáticamente. Si tienes previsto usar notificaciones de icono o de rótulo informativo, deberás crear una plantilla XML para el icono y el rótulo informativo, y deberás especificar la codificación de la información empaquetada en la plantilla. Consulta Trabajar con iconos, notificaciones y notificaciones del sistema.

Dado que Windows responde a las notificaciones del sistema, puede administrar la mayoría de estas notificaciones cuando la aplicación no se está ejecutando. Por ejemplo, una notificación de inserción permitiría al usuario saber cuándo ha recibido un nuevo mensaje de correo aunque la aplicación de correo local no se esté ejecutando. Windows administra las notificaciones del sistema mostrando un mensaje, como la primera línea de un mensaje de texto. Windows administra una notificación de icono o de rótulo informativo actualizando el icono dinámico de una aplicación para reflejar el número de mensajes de correo nuevos. De este modo, puedes solicitar a los usuarios de tu aplicación que la comprueben en busca de nueva información. Tu aplicación puede recibir notificaciones sin procesar mientras se está ejecutando y puedes usarlas para enviar datos a la aplicación. Si tu aplicación no se está ejecutando, puedes configurar una tarea en segundo plano para supervisar las notificaciones de inserción.

Debes usar las notificaciones de inserción siguiendo las directrices para aplicaciones de la Tienda Windows, ya que estas notificaciones usan los recursos de un usuario y pueden resultar una distracción si se abusa de ellas. Consulta Directrices y lista de comprobación de notificaciones de inserción.

Si vas a actualizar iconos dinámicos con notificaciones de inserción, también deberías seguir las directrices de Directrices y lista de comprobación para iconos y notificaciones.

Pasos siguientes

Usar WNS

Puedes llamar a WNS directamente si los Servicios móviles no ofrecen la suficiente flexibilidad, si quieres escribir tu código de servidor en C# o Visual Basic, o si ya tienes un servicio en la nube y quieres usarlo para enviar notificaciones de inserción desde él. Al llamar directamente a WNS, puedes enviar notificaciones de inserción desde tu propio servicio en la nube, como un rol de trabajador que supervisa los datos desde una base de datos u otro servicio web. El servicio en la nube debe autenticarse en WNS para enviar notificaciones de inserción a tus aplicaciones. Consulta Cómo autenticar con los Servicios de notificaciones de inserción de Windows (JavaScript) o (C#/C++/VB).

También puedes enviar notificaciones de inserción si ejecutas una tarea programada en tu servicio móvil. Consulta Programación de trabajos periódicos en Servicios móviles.

Advertencia  Cuando ya has ejecutado el Asistente para notificaciones de inserción una vez, no vuelvas a ejecutarlo de nuevo para agregar el código de registro para otro servicio móvil. Si ejecutas el asistente más de una vez por cada proyecto, se generará código que provocará llamadas superpuestas al método CreatePushNotificationChannelForApplicationAsync, que da lugar a una excepción en tiempo de ejecución. Si quieres registrar notificaciones de inserción para más de un servicio móvil, ejecuta el asistente una sola vez y, después, vuelve a escribir el código de registro para asegurarte de que las llamadas a CreatePushNotificationChannelForApplicationAsync no se ejecutan a la vez. Por ejemplo, para lograrlo puedes mover el código generado por el asistente en push.register.* (incluida la llamada a CreatePushNotificationChannelForApplicationAsync) fuera del evento OnLaunched, pero los detalles de esto dependerán de la arquitectura de la aplicación.
 

Temas relacionados

Introducción a WNS
Introducción a las notificaciones sin procesar
Conexión con los Servicios móviles de Microsoft Azure (JavaScript)
Conexión con los Servicios móviles de Microsoft Azure (C#/C++/VB)
Inicio rápido: agregar notificaciones de inserción para un servicio móvil (JavaScript)

 

 

Mostrar:
© 2016 Microsoft