Tutorial: Senden standortbasierter Pushbenachrichtigungen mit Azure Notification Hubs und Bing Spatial DataTutorial: Send location-based push notifications with Azure Notification Hubs and Bing Spatial Data

In diesem Tutorial erfahren Sie, wie Sie standortbasierte Pushbenachrichtigungen mit Azure Notification Hubs und Bing Spatial Data bereitstellen.In this tutorial, you learn how to deliver location-based push notifications with Azure Notification Hubs and Bing Spatial Data.

In diesem Tutorial führen Sie die folgenden Schritte aus:In this tutorial, you take the following steps:

  • Einrichten der DatenquelleSet up the data source
  • Einrichten der UWP-AnwendungSet up the UWP application
  • Einrichten des Back-EndsSet up the backend
  • Testen von Pushbenachrichtigungen in der UWP-App (Universelle Windows-Plattform)Test push notifications in the Universal Windows Platform (UWP) app

VoraussetzungenPrerequisites

Einrichten der DatenquelleSet up the data source

  1. Melden Sie sich beim Bing Maps Dev Center an.Log in to the Bing Maps Dev Center.

  2. Klicken Sie in der oberen Navigationsleiste auf Datenquellen, und wählen Sie Datenquellen verwalten aus.In the top navigation bar, select Data sources, and select Manage Data Sources.

  3. Wenn Sie noch nicht über eine Datenquelle verfügen, wird ein Link angezeigt, über den Sie eine Datenquelle erstellen können.If you don't have an existing data source, you see a link to create a data source. Wählen Sie Daten als Datenquelle hochladen aus.Select Upload data as a data source. Sie können auch das Menü Datenquellen > Daten hochladen verwenden.You can also use Data sources > Upload data menu.

  4. Erstellen Sie auf Ihrer Festplatte eine Datei namens NotificationHubsGeofence.pipe mit folgendem Inhalt: In diesem Tutorial verwenden Sie eine pipebasierte Beispieldatei, die einen Teil des Hafengebiets von San Francisco eingrenzt:Create a file NotificationHubsGeofence.pipe on your hard drive with the following content: In this tutorial, you use a sample pipe-based file that frames an area of the San Francisco waterfront:

    Bing Spatial Data Services, 1.0, TestBoundaries
    EntityID(Edm.String,primaryKey)|Name(Edm.String)|Longitude(Edm.Double)|Latitude(Edm.Double)|Boundary(Edm.Geography)
    1|SanFranciscoPier|||POLYGON ((-122.389825 37.776598,-122.389438 37.773087,-122.381885 37.771849,-122.382186 37.777022,-122.389825 37.776598))
    

    Die Pipedatei stellt diese Entität dar:The pipe file represents this entity:

  5. Führen Sie auf der Seite Datenquelle hochladen die folgenden Aktionen aus:In the Upload a data source page, do the following actions:

    1. Wählen Sie Pipe als Datenformat aus.Select pipe for Data format.

    2. Navigieren Sie zu der Datei NotificationHubGeofence.pipe, die Sie im vorherigen Schritt erstellt haben, und wählen Sie sie aus.Browse and select the NotificationHubGeofence.pipe file that you created in the previous step.

    3. Klicken Sie auf die Schaltfläche Hochladen.Select Upload button.

      Hinweis

      Unter Umständen werden Sie aufgefordert, einen neuen Schlüssel als Hauptschlüssel anzugeben, der sich vom Abfrageschlüssel unterscheidet.You might be prompted to specify a new key for the Master Key that is different from the Query Key. Erstellen Sie im Dashboard einfach einen neuen Schlüssel, und aktualisieren Sie die Seite zum Hochladen der Datenquelle.Simply create a new key through the dashboard and refresh the data source upload page.

  6. Nachdem Sie die Datendatei hochgeladen haben, müssen Sie sicherstellen, dass Sie die Datenquelle veröffentlichen.Once you upload the data file, you need to make sure that you publish the data source. Wählen Sie wie zuvor Datenquellen -> Datenquellen verwalten aus.Select Data sources -> Manage Data Sources like you did before.

  7. Wählen Sie in der Liste Ihre Datenquelle aus, und klicken Sie in der Spalte Aktionen auf Veröffentlichen.Select your data source in the list, and choose Publish in the Actions column.

  8. Wechseln Sie zur Registerkarte Veröffentlichte Datenquellen, und vergewissern Sie sich, dass Ihre Datenquelle in der Liste angezeigt wird.Switch to the Published Data Sources tab, and confirm that you see your data source in the list.

  9. Wählen Sie Bearbeiten aus.Select Edit. Sie sehen auf einen Blick, welche Standorte Sie in die Daten eingeschlossen haben.You see (at a glance) what locations you introduced in the data.

    An diesem Punkt werden die Grenzen für den von Ihnen erstellten Geofence nicht angezeigt. Sie benötigen lediglich die Bestätigung, dass sich der angegebene Standort in der richtigen Umgebung befindet.At this point, the portal does not show you the boundaries for the geofence that you created – all you need is confirmation that the location specified is in the right vicinity.

  10. Sie verfügen nun über alle Anforderungen für die Datenquelle.Now you have all the requirements for the data source. Wählen Sie zum Abrufen der Details zur Anforderungs-URL für den API-Aufruf im Bing Maps Dev Center die Option Datenquellen und dann Datenquelleninformationen.To get the details on the request URL for the API call, in the Bing Maps Dev Center, choose Data sources and select Data Source Information.

    Die Abfrage-URL ist der Endpunkt, für den Sie Abfragen ausführen können, um zu überprüfen, ob sich das Gerät derzeit innerhalb der Grenzen eines Standorts befindet.The Query URL is the endpoint against which you can execute queries to check whether the device is currently within the boundaries of a location or not. Zur Überprüfung führen Sie einfach einen GET-Aufruf mit den folgenden angefügten Parametern für die Abfrage-URL aus:To perform this check, you just execute a GET call against the query URL, with the following parameters appended:

    ?spatialFilter=intersects(%27POINT%20LONGITUDE%20LATITUDE)%27)&$format=json&key=QUERY_KEY
    

    Bing Maps führt automatisch die notwendigen Berechnungen durch, um zu ermitteln, ob sich das Gerät innerhalb des Geofence befindet.Bing Maps automatically performs the calculations to see whether the device is within the geofence. Nachdem Sie die Anforderung über einen Browser (oder cURL) ausgeführt haben, erhalten Sie eine JSON-Standardantwort:Once you execute the request through a browser (or cURL), you get a standard JSON response:

    Diese Antwort erfolgt nur, wenn sich der Punkt tatsächlich innerhalb der festgelegten Grenzen befindet.This response only happens when the point is actually within the designated boundaries. Andernfalls erhalten Sie einen leeren results-Bucket:If it is not, you get an empty results bucket:

Einrichten der UWP-AnwendungSet up the UWP application

  1. Starten Sie in Visual Studio ein neues Projekt vom Typ Leere App (Universelle Windows-App) .In Visual Studio, start a new project of type Blank App (Universal Windows).

    Nachdem die Projekterstellung abgeschlossen ist, sollten Sie über das Grundgerüst der App verfügen.Once the project creation is complete, you should have the harness for the app itself. Nun führen wir die Einrichtung für die Geofencing-Infrastruktur durch.Now let’s set up everything for the geo-fencing infrastructure. Da Sie für diese Lösung Bing-Dienste verwenden, ist ein öffentlicher REST-API-Endpunkt vorhanden, mit dem Sie spezielle Standortrahmen abfragen können:Because you are going to use Bing services for this solution, there is a public REST API endpoint that allows you to query specific location frames:

    http://spatial.virtualearth.net/REST/v1/data/
    

    Geben Sie die folgenden Parameter an:Specify the following parameters to get it working:

    • Datenquellen-ID und Datenquellenname: In der Bing Maps-API enthalten Datenquellen Metadaten in verschiedenen „Buckets“, z. B. Standorte und Geschäftszeiten.Data Source ID and Data Source Name – in Bing Maps API, data sources contain various bucketed metadata, such as locations and business hours of operation.

    • Entitätsname : Gibt die Entität an, die Sie als Referenzpunkt für die Benachrichtigung verwenden möchten.Entity Name – the entity you want to use as a reference point for the notification.

    • Bing Maps-API-Schlüssel: Dies ist der Schlüssel, den Sie beim Erstellen des Bing Dev Center-Kontos abgerufen haben.Bing Maps API Key – The key that you obtained earlier when you created the Bing Dev Center account.

      Da die Datenquelle jetzt bereitsteht, können Sie mit der Arbeit an der UWP-Anwendung beginnen.Now that you have the data source ready, you can start working on the UWP application.

  2. Aktivieren Sie Standortdienste für Ihre Anwendung.Enable location services for your application. Öffnen Sie im Projektmappen-Explorer die Datei Package.appxmanifest.Open the Package.appxmanifest file in Solution Explorer.

  3. Wechseln Sie auf der Registerkarte mit den Paketeigenschaften, die geöffnet wird, zu Funktionen, und wählen Sie Standort aus.In the package properties tab that just opened, switch to the Capabilities tab, and select Location.

  4. Erstellen Sie in Ihrer Projektmappe einen neuen Ordner mit dem Namen Core und fügen diesem eine neue Datei namens LocationHelper.cs hinzu:Create a new folder in your solution named Core, and add a new file within it, named LocationHelper.cs:

    In der LocationHelper-Klasse ist Code vorhanden, um den Benutzerstandort über die System-API abzurufen:The LocationHelper class has code to obtain the user location through the system API:

    using System;
    using System.Threading.Tasks;
    using Windows.Devices.Geolocation;
    
    namespace NotificationHubs.Geofence.Core
    {
        public class LocationHelper
        {
            private static readonly uint AppDesiredAccuracyInMeters = 10;
    
            public async static Task<Geoposition> GetCurrentLocation()
            {
                var accessStatus = await Geolocator.RequestAccessAsync();
                switch (accessStatus)
                {
                    case GeolocationAccessStatus.Allowed:
                        {
                            Geolocator geolocator = new Geolocator { DesiredAccuracyInMeters = AppDesiredAccuracyInMeters };
    
                            return await geolocator.GetGeopositionAsync();
                        }
                    default:
                        {
                            return null;
                        }
                }
            }
    
        }
    }
    

    Weitere Informationen zum Abrufen des Standorts von Benutzern in UWP-Apps finden Sie unter Abrufen der Position eines Benutzers.To learn more about getting the user’s location in UWP apps, seeGet the user's location.

  5. Um zu überprüfen, ob die Standorterfassung funktioniert, öffnen Sie die Codeseite der Hauptseite (MainPage.xaml.cs).To check that the location acquisition is actually working, open the code side of your main page (MainPage.xaml.cs). Erstellen Sie einen neuen Ereignishandler für das Loaded-Ereignis im MainPage-Konstruktor.Create a new event handler for the Loaded event in the MainPage constructor.

    public MainPage()
    {
        this.InitializeComponent();
        this.Loaded += MainPage_Loaded;
    }
    

    Die Implementierung des Ereignishandlers lautet wie folgt:The implementation of the event handler is as follows:

    private async void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        var location = await LocationHelper.GetCurrentLocation();
    
        if (location != null)
        {
            Debug.WriteLine(string.Concat(location.Coordinate.Longitude,
                " ", location.Coordinate.Latitude));
        }
    }
    
  6. Führen Sie die Anwendung aus, und gewähren Sie ihr Zugriff auf Ihren Standort.Run the application and allow it to access your location.

  7. Nach dem Starten der Anwendung sollten die Koordinaten im Fenster Ausgabe angezeigt werden:Once the application launches, you should be able to see the coordinates in the Output window:

    Jetzt wissen Sie, dass die Standorterfassung funktioniert. Wenn Sie möchten, können Sie den Testereignishandler „Loaded“ jetzt entfernen, da er nicht mehr benötigt wird.Now you know that location acquisition works, you can remove the Loaded event handler if you like because you won’t be using it anymore.

  8. Der nächste Schritt ist das Erfassen der Standortänderungen.The next step is to capture location changes. Fügen Sie in der LocationHelper-Klasse den Ereignishandler für PositionChanged hinzu:In the LocationHelper class, add the event handler for PositionChanged:

    geolocator.PositionChanged += Geolocator_PositionChanged;
    

    Die Implementierung zeigt die Standortkoordinaten im Fenster Ausgabe an:The implementation shows the location coordinates in the Output window:

    private static async void Geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
    {
        await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            Debug.WriteLine(string.Concat(args.Position.Coordinate.Longitude, " ", args.Position.Coordinate.Latitude));
        });
    }
    

Einrichten des Back-EndsSet up the backend

  1. Laden Sie das .NET-Back-End-Beispiel von GitHub herunter.Download the .NET Backend Sample from GitHub.

  2. Öffnen Sie nach Abschluss des Downloads den Ordner NotifyUsers, und öffnen Sie dann die Datei NotifyUsers.sln in Visual Studio.Once the download completes, open the NotifyUsers folder, and then open NotifyUsers.sln file in Visual Studio.

  3. Geben Sie das Projekt AppBackend mit der Option Als Startprojekt festlegen als Startprojekt an, und starten Sie es.Set the AppBackend project as the StartUp Project and launch it.

    Das Projekt ist bereits zum Senden von Pushbenachrichtigungen an Zielgeräte konfiguriert, sodass Sie nur noch zwei Dinge tun müssen: die richtige Verbindungszeichenfolge für den Notification Hub angeben und eine Grenzidentifizierung hinzufügen, damit die Benachrichtigung nur dann gesendet wird, wenn sich der Benutzer innerhalb des Geofence befindet.The project is already configured to send push notifications to target devices, so you need to do only two things – specify right connection string for the notification hub and add boundary identification to send the notification only when the user is within the geofence.

  4. Öffnen Sie zum Konfigurieren der Verbindungszeichenfolge im Ordner Models die Datei Notifications.cs.To configure the connection string, in the Models folder open Notifications.cs. Die Funktion NotificationHubClient.CreateClientFromConnectionString sollte die Informationen zu Ihrem Notification Hub enthalten, die Sie im Azure-Portal abrufen können (Seite Zugriffsrichtlinien in den Einstellungen).The NotificationHubClient.CreateClientFromConnectionString function should contain the information about your notification hub that you can get in the Azure portal (look inside the Access Policies page in Settings). Speichern Sie die aktualisierte Konfigurationsdatei.Save the updated configuration file.

  5. Erstellen Sie ein Modell für das Bing Maps-API-Ergebnis.Create a model for the Bing Maps API result. Die einfachste Möglichkeit besteht darin, den Ordner Models zu öffnen und Hinzufügen > Klasse auszuwählen.The easiest way to do that is to open the Models folder and choose Add > Class. Vergeben Sie den Namen GeofenceBoundary.cs.Name it GeofenceBoundary.cs. Wenn dies erledigt ist, kopieren Sie die JSON aus der API-Antwort, die Sie im ersten Abschnitt erhalten haben.Once done, copy the JSON from the API response that you got in the first section. Verwenden Sie in Visual Studio die Optionen Bearbeiten > Inhalte einfügen > JSON als Klassen einfügen.In Visual Studio, use Edit > Paste Special > Paste JSON as Classes.

    Auf diese Weise stellen Sie sicher, dass das Objekt genau wie gewünscht deserialisiert wird.This way you ensure that the object is deserialized exactly as it was intended. Der resultierende Klassensatz sollte wie die folgende Klasse aussehen:Your resulting class set should resemble the following class:

    namespace AppBackend.Models
    {
        public class Rootobject
        {
            public D d { get; set; }
        }
    
        public class D
        {
            public string __copyright { get; set; }
            public Result[] results { get; set; }
        }
    
        public class Result
        {
            public __Metadata __metadata { get; set; }
            public string EntityID { get; set; }
            public string Name { get; set; }
            public float Longitude { get; set; }
            public float Latitude { get; set; }
            public string Boundary { get; set; }
            public string Confidence { get; set; }
            public string Locality { get; set; }
            public string AddressLine { get; set; }
            public string AdminDistrict { get; set; }
            public string CountryRegion { get; set; }
            public string PostalCode { get; set; }
        }
    
        public class __Metadata
        {
            public string uri { get; set; }
        }
    }
    
  6. Öffnen Sie nun Controllers > NotificationsController.cs.Next, open Controllers > NotificationsController.cs. Aktualisieren Sie den POST-Aufruf, sodass der Längen- und Breitengrad des Ziels einbezogen werden.Update the Post call to account for the target longitude and latitude. Fügen Sie der Funktionssignatur zu diesem Zweck zwei Zeichenfolgen hinzu: latitude und longitude.To do so, add two strings to the function signature – latitude and longitude.

    public async Task<HttpResponseMessage> Post(string pns, [FromBody]string message, string to_tag, string latitude, string longitude)
    
  7. Erstellen Sie im Projekt eine neue Klasse mit dem Namen ApiHelper.cs. Sie verwenden diese Klasse zum Herstellen der Verbindung mit Bing, um Grenzschnittpunkte zu überprüfen.Create a new class within the project called ApiHelper.cs – you use it to connect to Bing to check point boundary intersections. Implementieren Sie eine IsPointWithinBounds-Funktion, wie im folgenden Code veranschaulicht:Implement a IsPointWithinBounds function as shown in the following code:

    public class ApiHelper
    {
        public static readonly string ApiEndpoint = "{YOUR_QUERY_ENDPOINT}?spatialFilter=intersects(%27POINT%20({0}%20{1})%27)&$format=json&key={2}";
        public static readonly string ApiKey = "{YOUR_API_KEY}";
    
        public static bool IsPointWithinBounds(string longitude,string latitude)
        {
            var json = new WebClient().DownloadString(string.Format(ApiEndpoint, longitude, latitude, ApiKey));
            var result = JsonConvert.DeserializeObject<Rootobject>(json);
            if (result.d.results != null && result.d.results.Count() > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    

    Wichtig

    Stellen Sie sicher, dass Sie den API-Endpunkt durch die Abfrage-URL ersetzen, die Sie weiter oben aus Bing Dev Center abgerufen haben (dasselbe gilt für den API-Schlüssel).Make sure to substitute the API endpoint with the query URL that you obtained earlier from the Bing Dev Center (same applies to the API key).

    Wenn die Abfrage zu Ergebnissen führt, bedeutet dies, dass sich der angegebene Punkt innerhalb der Grenzen des Geofence befindet. Die Funktion gibt also true zurück.If there are results to the query, that means that the specified point is within the boundaries of the geofence, so the function returns true. Wenn keine Ergebnisse vorliegen, teilt Bing Ihnen mit, dass sich der Punkt außerhalb des Suchbereichs befindet. Die Funktion gibt also false zurück.If there are no results, Bing is telling you that the point is outside the lookup frame, so the function returns false.

  8. Erstellen Sie in NotificationsController.cs direkt vor der switch-Anweisung eine Überprüfung:In NotificationsController.cs, create a check right before the switch statement:

    if (ApiHelper.IsPointWithinBounds(longitude, latitude))
    {
        switch (pns.ToLower())
        {
            case "wns":
                //// Windows 8.1 / Windows Phone 8.1
                var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
                            "From " + user + ": " + message + "</text></binding></visual></toast>";
                outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);
    
                // Windows 10 specific Action Center support
                toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
                            "From " + user + ": " + message + "</text></binding></visual></toast>";
                outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);
    
                break;
        }
    }
    

Testen von Pushbenachrichtigungen in der UWP-AppTest push notifications in the UWP app

  1. Sie sollten in der UWP-App jetzt Benachrichtigungen testen können.In the UWP app, you should now be able to test notifications. Erstellen Sie in der LocationHelper-Klasse die neue Funktion SendLocationToBackend:Within the LocationHelper class, create a new function – SendLocationToBackend:

    public static async Task SendLocationToBackend(string pns, string userTag, string message, string latitude, string longitude)
    {
        var POST_URL = "http://localhost:8741/api/notifications?pns=" +
            pns + "&to_tag=" + userTag + "&latitude=" + latitude + "&longitude=" + longitude;
    
        using (var httpClient = new HttpClient())
        {
            try
            {
                await httpClient.PostAsync(POST_URL, new StringContent("\"" + message + "\"",
                    System.Text.Encoding.UTF8, "application/json"));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
    }
    

    Hinweis

    Legen Sie die POST_URL auf den Speicherort Ihrer bereitgestellten Webanwendung fest.Set the POST_URL to the location of your deployed web application. Für den Zweck dieses Tutorials ist die lokale Ausführung in Ordnung. Wenn Sie jedoch eine öffentliche Version bereitstellen möchten, müssen Sie diese über einen externen Anbieter hosten.For now, it’s OK to run it locally, but as you work on deploying a public version, you need to host it with an external provider.

  2. Registrieren Sie die UWP-App für Pushbenachrichtigungen.Register the UWP app for push notifications. Wählen Sie in Visual Studio Projekt > Store > App mit Store verknüpfen.In Visual Studio, choose Project > Store > Associate app with the store.

  3. Stellen Sie nach dem Anmelden an Ihrem Entwicklerkonto sicher, dass Sie eine vorhandene App auswählen oder eine neue App erstellen und ihr das Paket zuordnen.Once you sign in to your developer account, make sure you select an existing app or create a new one and associate the package with it.

  4. Wechseln Sie zum Dev Center, und öffnen Sie die erstellte App.Go to the Dev Center and open the app that you created. Wählen Sie Dienste > Pushbenachrichtigungen > Live Services-Website.Choose Services > Push Notifications > Live Services site.

  5. Notieren Sie sich von der Website den geheimen Schlüssel der Anwendung und die Paket-SID.On the site, take note of the Application Secret and the Package SID. Sie benötigen beide Angaben im Azure-Portal. Öffnen Sie Ihren Notification Hub, wählen Sie Einstellungen > Notification Services > Windows (WNS) aus, und geben Sie die Informationen in die erforderlichen Felder ein.You need both in the Azure portal – open your notification hub, choose Settings > Notification Services > Windows (WNS) and enter the information in the required fields.

  6. Wählen Sie Speichern aus.Choose Save.

  7. Öffnen Sie im Projektmappen-Explorer die Option Verweise, und wählen Sie NuGet-Pakete verwalten.Open References in Solution Explorer and select Manage NuGet Packages. Fügen Sie einen Verweis auf die verwaltete Microsoft Azure Service Bus-Bibliothek hinzu. Suchen Sie einfach nach WindowsAzure.Messaging.Managed, und fügen Sie das Element zum Projekt hinzu.Add a reference to the Microsoft Azure Service Bus managed library – simply search for WindowsAzure.Messaging.Managed and add it to your project.

  8. Erstellen Sie den Ereignishandler MainPage_Loaded zu Testzwecken noch einmal und fügen diesen Codeausschnitt hinzu:For testing purposes, create the MainPage_Loaded event handler once again, and add this code snippet to it:

    var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    
    var hub = new NotificationHub("HUB_NAME", "HUB_LISTEN_CONNECTION_STRING");
    var result = await hub.RegisterNativeAsync(channel.Uri);
    
    // Displays the registration ID so you know it was successful
    if (result.RegistrationId != null)
    {
        Debug.WriteLine("Reg successful.");
    }
    

    Der Code registriert die App beim Notification Hub.The code registers the app with the notification hub. Sie sind fertig!You are ready to go!

  9. Im LocationHelper-Element im Handler Geolocator_PositionChanged können Sie Testcode hinzufügen, der die Festlegung des Standorts innerhalb des Geofence erzwingt:In LocationHelper, inside the Geolocator_PositionChanged handler, you can add a piece of test code that forcefully puts the location inside the geofence:

    await LocationHelper.SendLocationToBackend("wns", "TEST_USER", "TEST", "37.7746", "-122.3858");
    
  10. Da Sie nicht die echten Koordinaten übergeben (die sich derzeit ggf. nicht innerhalb der Grenzen befinden) und vordefinierte Testwerte verwenden, wird beim Aktualisieren eine Benachrichtigung angezeigt:Because you are not passing the real coordinates (which might not be within the boundaries at the moment) and are using predefined test values, you see a notification show up on update:

Nächste SchritteNext steps

Es gibt einige Schritte, deren Ausführung unter Umständen erforderlich ist, um sicherzustellen, dass die Lösung bereit für die Produktion ist.There are a couple of steps that you might need to follow to make the solution production-ready.

  1. Zunächst sollten Sie sicherstellen, dass die Geofences dynamisch sind.First, you need to ensure that geofences are dynamic. Hierfür ist etwas zusätzliche Arbeit mit der Bing-API erforderlich, um neue Grenzen innerhalb der vorhandenen Datenquelle hochladen zu können.It requires some extra work with the Bing API to be able to upload new boundaries within the existing data source. Weitere Informationen finden Sie in der Dokumentation zur Bing Spatial Data Services-API.For more information, see Bing Spatial Data Services API documentation.
  2. Außerdem kann es bei der Sicherstellung, dass die Bereitstellung für die richtigen Teilnehmer erfolgt, ratsam sein, das Taggingzu verwenden.Second, as you are working to ensure that the delivery is done to the right participants, you might want to target them via tagging.

Die in diesem Tutorial vorgestellte Lösung beschreibt ein Szenario, in dem Sie viele verschiedene Plattformen nutzen können, sodass das Geofencing nicht auf systemspezifische Funktionen beschränkt ist.The solution shown in this tutorial describes a scenario in which you might have a wide variety of target platforms, so it does not limit the geofencing to system-specific capabilities. Die universelle Windows-Plattform verfügt aber standardmäßig über Funktionen zum Erkennen von Geofences.That said, the Universal Windows Platform offers capabilities to detect geofences right out-of-the-box.