Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med hjälp av en guide i Visual Studio kan du generera push-meddelanden från en mobiltjänst som har skapats med Azure Mobile Services. Visual Studio-guiden genererar kod som hjälper dig att komma igång. Det här avsnittet beskriver hur guiden ändrar ditt projekt, vad den genererade koden gör, hur du använder den här koden och vad du kan göra härnäst för att få ut mesta möjliga av push-meddelanden. Se Windows Push Notification Services (WNS) översikt.
Hur guiden ändrar ditt projekt
Guiden för push-meddelanden ändrar projektet på följande sätt:
- Lägger till en referens till Mobile Services Managed Client (MobileServicesManagedClient.dll). Gäller inte för JavaScript-projekt.
- Lägger till en fil i en undermapp under tjänster och namnger filen push.register.cs, push.register.vb, push.register.cpp eller push.register.js.
- Skapar en kanaltabell på databasservern för mobiltjänsten. Tabellen innehåller information som krävs för att skicka push-meddelanden till appinstanser.
- Skapar skript för fyra funktioner: ta bort, infoga, läsa och uppdatera.
- Skapar ett skript med ett anpassat API, notifyallusers.js, som skickar ett push-meddelande till alla klienter.
- Lägger till en deklaration i filen App.xaml.cs, App.xaml.vb eller App.xaml.cpp, eller lägger till en deklaration i en ny fil, service.js, för JavaScript-projekt. Deklarationen deklarerar ett MobileServiceClient-objekt som innehåller den information som krävs för att ansluta till mobiltjänsten. Du kan komma åt det här MobileServiceClient-objektet, som heter MyServiceName Client, från valfri sida i din app med hjälp av namnet App.MyServiceName Client.
Filen services.js innehåller följande kod:
var <mobile-service-name>Client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
"https://<mobile-service-name>.azure-mobile.net/",
"<your client secret>");
Registrering för push-meddelanden
I push.register.*registrerar metoden UploadChannel enheten för att ta emot push-meddelanden. Store spårar installerade instanser av din app och tillhandahåller push-meddelandekanalen. See PushNotificationChannelManager.
Klientkoden liknar både JavaScript-serverdelen och .NET-serverdelen. När du lägger till push-meddelanden för en JavaScript-serverdelstjänst infogas som standard ett exempelanrop till notifyAllUsers anpassade API i metoden UploadChannel.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json.Linq;
namespace App2
{
internal class mymobileservice1234Push
{
public async static void UploadChannel()
{
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
try
{
await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri);
await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers");
}
catch (Exception exception)
{
HandleRegisterException(exception);
}
}
private static void HandleRegisterException(Exception exception)
{
}
}
}
Imports Microsoft.WindowsAzure.MobileServices
Imports Newtonsoft.Json.Linq
Friend Class mymobileservice1234Push
Public Shared Async Sub UploadChannel()
Dim channel = Await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync()
Try
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri)
Await App.mymobileservice1234Client.GetPush().RegisterNativeAsync(channel.Uri, New String() {"tag1", "tag2"})
Await App.mymobileservice1234Client.InvokeApiAsync("notifyAllUsers")
Catch exception As Exception
HandleRegisterException(exception)
End Try
End Sub
Private Shared Sub HandleRegisterException(exception As Exception)
End Sub
End Class
#include "pch.h"
#include "services\mobile services\mymobileservice1234\mymobileservice1234Push.h"
using namespace AzureMobileHelper;
using namespace web;
using namespace concurrency;
using namespace Windows::Networking::PushNotifications;
void mymobileservice1234Push::UploadChannel()
{
create_task(PushNotificationChannelManager::CreatePushNotificationChannelForApplicationAsync()).
then([] (PushNotificationChannel^ newChannel)
{
return mymobileservice1234MobileService::GetClient().get_push().register_native(newChannel->Uri->Data());
}).then([]()
{
return mymobileservice1234MobileService::GetClient().invoke_api(L"notifyAllUsers");
}).then([](task<json::value> result)
{
try
{
result.wait();
}
catch(...)
{
HandleExceptionsComingFromTheServer();
}
});
}
void mymobileservice1234Push::HandleExceptionsComingFromTheServer()
{
}
(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
});
}
});
})();
Push-meddelandetaggar är ett sätt att begränsa meddelanden till en delmängd av klienter. Du kan använda metoden för registerNative-metoden (eller RegisterNativeAsync) för att antingen registrera dig för alla push-meddelanden utan att ange taggar, eller så kan du registrera med taggar genom att ange det andra argumentet, en matris med taggar. Om du registrerar dig med en eller flera taggar får du bara meddelanden som matchar taggarna.
Skript på serversidan (enbart JavaScript-backend)
För mobila tjänster som använder JavaScript-serverdelen körs skripten på serversidan vid borttagning, infogning, läsning eller uppdatering. Skripten implementerar inte dessa åtgärder, men de körs när ett anrop från klienten till Windows Mobile REST API utlöser dessa händelser. Skripten skickar sedan kontrollen till själva åtgärderna genom att anropa request.execute eller request.respond för att utfärda ett svar på samtalskontexten. Se REST API-referens för Azure Mobile Services.
Det finns en mängd olika funktioner i skriptet på serversidan. Se Registrera tabellåtgärder i Azure Mobile Services. En referens till alla tillgängliga funktioner finns i Referens för Mobile Services-serverskript.
Följande anpassade API-kod i Notifyallusers.js skapas också:
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);
}
});
}
Funktionen sendNotifications visar ett enda meddelande som en toast-notis. Du kan också använda andra typer av push-meddelanden.
Dricks Information om hur du får hjälp när du redigerar skript finns i Aktivera IntelliSense för JavaScript på serversidan.
Typer av push-meddelanden
Windows stöder meddelanden som inte är push-meddelanden. Allmän information om meddelanden finns i Välja en meddelandeleveransmetod.
Toastnotifikationer är enkla att använda och du kan granska ett exempel i koden Insert.js i tabellen för kanalen som genereras åt dig. Om du planerar att använda panel- eller märkesmeddelanden måste du skapa en XML-mall för panelen och märket, och du måste ange kodning av paketerad information i mallen. Se Arbeta med paneler, brickor och toastnotiser.
Eftersom Windows svarar på push-meddelanden kan det hantera de flesta av dessa meddelanden när appen inte körs. Ett push-meddelande kan till exempel meddela en användare när ett nytt e-postmeddelande är tillgängligt även när den lokala e-postappen inte körs. Windows hanterar en avisering genom att visa ett meddelande, till exempel den första raden i ett textmeddelande. Windows hanterar en panel eller ett märkesmeddelande genom att uppdatera appens livepanel för att återspegla antalet nya e-postmeddelanden. På så sätt kan du uppmana användarna av din app att söka efter ny information. Din app kan ta emot rådatameddelanden när den körs och du kan använda dem för att skicka data till din app. Om appen inte körs kan du konfigurera en bakgrundsaktivitet för att övervaka push-meddelanden.
Du bör använda push-meddelanden enligt riktlinjerna för Windows-appar, eftersom dessa meddelanden använder en användares resurser och kan vara störande om de används för mycket. Se Riktlinjer och checklista för push-meddelanden.
Om du uppdaterar livepaneler med push-meddelanden bör du också följa riktlinjerna i Riktlinjer och checklista för paneler och märken.
Next steps
Använda Windows meddelandetjänster för push notifieringar (WNS)
Du kan anropa Windows Push Notification Services (WNS) direkt om Mobile Services inte ger tillräckligt med flexibilitet, om du vill skriva serverkoden i C# eller Visual Basic, eller om du redan har en molntjänst och vill skicka push-meddelanden från den. Genom att anropa WNS direkt kan du skicka push-meddelanden från din egen molntjänst, till exempel en arbetsroll som övervakar data från en databas eller en annan webbtjänst. Molntjänsten måste autentisera med WNS för att skicka push-meddelanden till dina appar. Se Hur man autentiserar med Windows Push Notification Service (JavaScript) eller (C#/C++/VB).
Du kan också skicka push-meddelanden genom att köra en schemalagd aktivitet i din mobiltjänst. Se Schemalägg återkommande jobb i Mobile Services.
Varning När du har kört guiden för push-meddelanden en gång kör du inte guiden en andra gång för att lägga till registreringskod för en annan mobiltjänst. Om du kör guiden mer än en gång per projekt genereras kod som resulterar i överlappande anrop till metoden CreatePushNotificationChannelForApplicationAsync , vilket leder till ett körningsundantag. Om du vill registrera dig för push-meddelanden för mer än en mobiltjänst kör du guiden en gång och skriver sedan om registreringskoden för att säkerställa att anrop till CreatePushNotificationChannelForApplicationAsync inte körs samtidigt. Du kan till exempel åstadkomma detta genom att flytta den guidegenererade koden i push.register.* (inklusive anropet till CreatePushNotificationChannelForApplicationAsync) utanför händelsen OnLaunched, men detaljerna i detta beror på appens arkitektur.
Related topics
- Översikt över Windows Push Notification Services (WNS)
- Översikt över råa meddelanden
- Ansluta till Windows Azure Mobile Services (JavaScript)
- Ansluta till Windows Azure Mobile Services (C#/C++/VB)
- Snabbstart: Lägga till push-meddelanden för en mobiltjänst (JavaScript)
Windows developer