Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Za pomocą kreatora w programie Visual Studio można generować powiadomienia push z usługi mobilnej utworzonej w Azure Mobile Services. Kreator programu Visual Studio generuje kod ułatwiający rozpoczęcie pracy. W tym temacie wyjaśniono, jak kreator modyfikuje projekt, jak działa wygenerowany kod, jak używać tego kodu i co można zrobić dalej, aby jak najlepiej wykorzystać powiadomienia push. Zobacz Omówienie usługi powiadomień push systemu Windows (WNS).
Jak kreator modyfikuje projekt
Asystent konfiguracji powiadomień push modyfikuje projekt w następujący sposób:
- Dodaje odwołanie do zarządzanego klienta usług Mobile Services (MobileServicesManagedClient.dll). Nie dotyczy projektów JavaScript.
- Dodaje plik w podfolderze w obszarze usług i nazywa plik push.register.cs, push.register.vb, push.register.cpp lub push.register.js.
- Tworzy tabelę kanałów na serwerze bazy danych dla usługi mobilnej. Tabela zawiera informacje wymagane do wysyłania powiadomień push do instancji aplikacji.
- Tworzy skrypty dla czterech funkcji: usuwanie, wstawianie, odczytywanie i aktualizowanie.
- Tworzy skrypt z niestandardowym interfejsem API notifyallusers.js, który wysyła powiadomienie push do wszystkich klientów.
- Dodaje deklarację do pliku App.xaml.cs, App.xaml.vb lub App.xaml.cpp albo dodaje deklarację do nowego pliku service.jsdla projektów JavaScript. Deklaracja deklaruje obiekt MobileServiceClient, który zawiera informacje wymagane do nawiązania połączenia z usługą mobilną. Dostęp do tego obiektu MobileServiceClient o nazwie MyServiceNameClient można uzyskać z dowolnej strony w aplikacji przy użyciu nazwy App.MyServiceNameClient.
Plik services.js zawiera następujący kod:
var <mobile-service-name>Client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient(
"https://<mobile-service-name>.azure-mobile.net/",
"<your client secret>");
Rejestracja powiadomień push
W kontekście push.register.*, metoda UploadChannel rejestruje urządzenie w celu odbierania powiadomień push. Sklep śledzi zainstalowane wystąpienia aplikacji i udostępnia kanał powiadomień push. See PushNotificationChannelManager.
Kod klienta jest podobny zarówno dla zaplecza JavaScript, jak i zaplecza platformy .NET. Domyślnie po dodaniu powiadomień push dla usługi backend JavaScript przykładowe wywołanie niestandardowego interfejsu API notifyAllUsers jest wstawione do metody 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
});
}
});
})();
Tagi powiadomień push umożliwiają ograniczenie powiadomień do podzestawu klientów. Można użyć metody registerNative (lub RegisterNativeAsync), aby zarejestrować się na wszystkie powiadomienia wypychane bez określania tagów albo z tagami, podając tablicę tagów jako drugi argument. Jeśli zarejestrujesz się przy użyciu co najmniej jednego tagu, otrzymasz tylko powiadomienia pasujące do tych tagów.
Skrypty po stronie serwera (tylko zaplecze języka JavaScript)
W przypadku usług mobilnych korzystających z zaplecza języka JavaScript skrypty po stronie serwera są uruchamiane po wystąpieniu operacji usuwania, wstawiania, odczytu lub aktualizacji. Skrypty nie implementują tych operacji, ale są uruchamiane, gdy wywołanie od klienta do interfejsu API REST systemu Windows Mobile wyzwala te zdarzenia. Następnie skrypty przekazują kontrolę do samych operacji przez wywołanie metody request.execute lub request.respond w celu wystawienia odpowiedzi na kontekst wywołujący. Zobacz Dokumentacja interfejsu API REST usługi Azure Mobile Services.
Różne funkcje są dostępne w skryscie po stronie serwera. Zobacz Rejestrowanie operacji tabeli w usłudze Azure Mobile Services. Aby zapoznać się ze wszystkimi dostępnymi funkcjami, zobacz Dokumentacja skryptu serwera usługi Mobile Services.
Tworzony jest również następujący niestandardowy kod interfejsu API w 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);
}
});
}
Funkcja sendNotifications wysyła pojedyncze powiadomienie jako wyskakujące powiadomienie. Możesz również użyć innych typów powiadomień push.
Porada Aby uzyskać informacje na temat sposobu uzyskiwania pomocy podczas edytowania skryptów, zobacz Włączanie funkcji IntelliSense dla języka JavaScript po stronie serwera.
Typy powiadomień push
System Windows obsługuje powiadomienia inne niż powiadomienia push. Aby uzyskać ogólne informacje o powiadomieniach, zobacz Wybieranie metody dostarczania powiadomień.
Powiadomienia toast są łatwe w użyciu, a przykładowy kod Insert.js możesz przejrzeć w tabeli kanału, która została wygenerowana dla Ciebie. Jeśli planujesz używać powiadomień dotyczących kafelków lub znaczków, musisz utworzyć szablon XML dla kafelka i znaczka. Musisz określić kodowanie informacji spakowanych w szablonie. Zobacz Praca z kafelkami, z odznakami i z wyskakującymi powiadomieniami.
Ponieważ Windows reaguje na powiadomienia push, może obsłużyć większość z nich, gdy aplikacja nie jest uruchomiona. Na przykład powiadomienie push może poinformować użytkownika, że nowa wiadomość e-mail jest dostępna, nawet gdy lokalna aplikacja poczty nie jest uruchomiona. System Windows obsługuje wyskakujące powiadomienie, wyświetlając komunikat, taki jak pierwszy wiersz wiadomości SMS. System Windows obsługuje kafelek lub powiadomienie znaczka, aktualizując dynamiczny kafelek aplikacji w celu odzwierciedlenia liczby nowych wiadomości e-mail. W ten sposób można monitować użytkowników aplikacji o sprawdzenie jej pod kątem nowych informacji. Aplikacja może otrzymywać nieprzetworzone powiadomienia, gdy jest uruchomiona, i można ich użyć do wysyłania danych do aplikacji. Jeśli aplikacja nie jest uruchomiona, możesz skonfigurować zadanie w tle w celu monitorowania powiadomień wypychanych.
Należy używać powiadomień wypychanych zgodnie z wytycznymi dotyczącymi aplikacji systemu Windows, ponieważ powiadomienia te korzystają z zasobów użytkownika i mogą rozpraszać uwagę w przypadku nadmiernego użycia. Zobacz Wytyczne i lista kontrolna powiadomień push.
Jeśli aktualizujesz na żywo kafelki przy użyciu powiadomień push, należy również postępować zgodnie z zaleceniami i listą kontrolną w Wytyczne i lista kontrolna dla kafelków i odznak.
Next steps
Korzystanie z usług powiadomień wypychanych systemu Windows (WNS)
Usługi powiadomień wypychanych systemu Windows (WNS) można wywołać bezpośrednio, jeśli usługi Mobile Services nie zapewniają wystarczającej elastyczności, jeśli chcesz napisać kod serwera w języku C# lub Visual Basic albo jeśli masz już usługę w chmurze i chcesz wysyłać z niej powiadomienia wypychane. Bezpośrednie wywoływanie usługi WNS umożliwia wysyłanie powiadomień push z własnej usługi w chmurze, takich jak rola robocza, która monitoruje dane z bazy danych lub innej usługi internetowej. Usługa w chmurze musi uwierzytelniać się w WNS, aby wysyłać powiadomienia push do aplikacji. Zobacz Jak uwierzytelniać się przy użyciu Usługi Powiadomień Push systemu Windows (JavaScript) lub (C#/C++/VB).
Powiadomienia push można również wysyłać, uruchamiając zaplanowane zadanie w usłudze mobilnej. Zobacz Planowanie zadań cyklicznych w usłudze Mobile Services.
Ostrzeżenie Po uruchomieniu kreatora powiadomień push nie uruchamiaj go po raz drugi, aby dodać kod rejestracji dla innej usługi mobilnej. Uruchomienie kreatora więcej niż raz w projekcie generuje kod, który powoduje nakładanie się wywołań do metody CreatePushNotificationChannelForApplicationAsync, co prowadzi do wyjątku środowiska uruchomieniowego. Jeśli chcesz zarejestrować się w celu otrzymywania powiadomień push dla więcej niż jednej usługi mobilnej, uruchom kreatora raz, a następnie przepisz kod rejestracji, aby upewnić się, że wywołania metody CreatePushNotificationChannelForApplicationAsync nie są uruchamiane w tym samym czasie. Można to zrobić na przykład, przenosząc wygenerowany przez kreatora kod w pliku push.register.* (w tym wywołanie metody CreatePushNotificationChannelForApplicationAsync) poza zdarzeniem OnLaunched, ale specyfika tej czynności będzie zależeć od architektury aplikacji.
Related topics
- Omówienie usługi powiadomień push systemu Windows (WNS)
- Szczegółowe omówienie powiadomienia
- Nawiązywanie połączenia z usługami Windows Azure Mobile Services (JavaScript)
- Nawiązywanie połączenia z usługami Windows Azure Mobile Services (C#/C++/VB)
- Szybki przewodnik: dodawanie powiadomień push dla usługi mobilnej w JavaScript