Přidání nabízených oznámení do aplikace Xamarin.Forms

Přehled

V tomto kurzu přidáte nabízená oznámení do všech projektů, které byly výsledkem rychlého startu pro Xamarin.Forms. To znamená, že při každém vložení záznamu se všem klientům pro různé platformy odešle nabízené oznámení.

Pokud nepoužíváte stažený projekt serveru Rychlý start, budete potřebovat balíček rozšíření nabízených oznámení. Další informace najdete v tématu Práce se sadou SDK back-endového serveru .NET pro Azure Mobile Apps.

Požadavky

Pro iOS budete potřebovat členství v programu Apple Developer Program a fyzické zařízení s iOSem. Simulátor iOS nepodporuje nabízená oznámení.

Konfigurace centra oznámení

Funkce Mobile Apps Azure App Service používá k odesílání nabízených oznámení Azure Notification Hubs, takže budete konfigurovat centrum oznámení pro mobilní aplikaci.

  1. V Azure Portal přejděte na App Services a vyberte back-end vaší aplikace. V části Nastavení vyberte Nasdílení změn.

  2. Pokud chcete do aplikace přidat prostředek centra oznámení, vyberte Připojit. Můžete buď vytvořit centrum, nebo se připojit k existujícímu.

    Konfigurace centra

Teď jste připojili centrum oznámení k back-endu projektu Mobile Apps. Později nakonfigurujete toto centrum oznámení tak, aby se připojilo k systému oznámení platformy (PNS) za účelem nabízení změn do zařízení.

Aktualizace projektu serveru tak, aby odesílal nabízená oznámení

V této části aktualizujete kód v existujícím back-endovém projektu Mobile Apps tak, aby se při každém přidání nové položky odeslalo nabízené oznámení. Tento proces využívá funkci šablony služby Azure Notification Hubs, která umožňuje nabízení změn mezi platformami. Různí klienti jsou zaregistrovaní pro nabízená oznámení pomocí šablon a jedno univerzální nabízené oznámení se může dostat na všechny klientské platformy.

Zvolte jeden z následujících postupů, který odpovídá vašemu typu back-endového projektu – back-end .NET nebo Node.js back-endu.

Back-endový projekt .NET

  1. V sadě Visual Studio klikněte pravým tlačítkem na serverový projekt. Pak vyberte Spravovat balíčky NuGet. Vyhledejte Microsoft.Azure.NotificationHubsa pak vyberte Nainstalovat. Tento proces nainstaluje knihovnu Notification Hubs pro odesílání oznámení z back-endu.

  2. V projektu serveru otevřete Controllers>TodoItemController.cs. Pak přidejte následující příkazy using:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. V metodě PostTodoItem přidejte následující kód za volání InsertAsync:

    // Get the settings for the server project.
    HttpConfiguration config = this.Configuration;
    MobileAppSettingsDictionary settings =
        this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
    // Get the Notification Hubs credentials for the mobile app.
    string notificationHubName = settings.NotificationHubName;
    string notificationHubConnection = settings
        .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
    // Create a new Notification Hub client.
    NotificationHubClient hub = NotificationHubClient
    .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    
    // Send the message so that all template registrations that contain "messageParam"
    // receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations.
    Dictionary<string,string> templateParams = new Dictionary<string,string>();
    templateParams["messageParam"] = item.Text + " was added to the list.";
    
    try
    {
        // Send the push notification and log the results.
        var result = await hub.SendTemplateNotificationAsync(templateParams);
    
        // Write the success result to the logs.
        config.Services.GetTraceWriter().Info(result.State.ToString());
    }
    catch (System.Exception ex)
    {
        // Write the failure result to the logs.
        config.Services.GetTraceWriter()
            .Error(ex.Message, null, "Push.SendAsync Error");
    }
    

    Tento proces odešle oznámení šablony, které obsahuje položku. Text při vložení nové položky

  4. Znovu publikujte projekt serveru.

Node.js back-endový projekt

  1. Nastavte back-endový projekt.

  2. Nahraďte existující kód v todoitem.js následujícím kódem:

    var azureMobileApps = require('azure-mobile-apps'),
    promises = require('azure-mobile-apps/src/utilities/promises'),
    logger = require('azure-mobile-apps/src/logger');
    
    var table = azureMobileApps.table();
    
    table.insert(function (context) {
    // For more information about the Notification Hubs JavaScript SDK,
    // see https://aka.ms/nodejshubs.
    logger.info('Running TodoItem.insert');
    
    // Define the template payload.
    var payload = '{"messageParam": "' + context.item.text + '" }';  
    
    // Execute the insert. The insert returns the results as a promise.
    // Do the push as a post-execute action within the promise flow.
    return context.execute()
        .then(function (results) {
            // Only do the push if configured.
            if (context.push) {
                // Send a template notification.
                context.push.send(null, payload, function (error) {
                    if (error) {
                        logger.error('Error while sending push notification: ', error);
                    } else {
                        logger.info('Push notification sent successfully!');
                    }
                });
            }
            // Don't forget to return the results from the context.execute().
            return results;
        })
        .catch(function (error) {
            logger.error('Error while running context.execute: ', error);
        });
    });
    
    module.exports = table;  
    

    Tento proces odešle oznámení šablony, které obsahuje item.text při vložení nové položky.

  3. Při úpravách souboru v místním počítači znovu publikujte serverový projekt.

Konfigurace a spuštění projektu pro Android (volitelné)

Dokončete tuto část a povolte nabízená oznámení pro projekt Droid Xamarin.Forms pro Android.

Povolení služby Firebase Cloud Messaging (FCM)

  1. Přihlaste se ke konzole Firebase. Vytvořte nový projekt Firebase, pokud jej ještě nemáte.

  2. Po vytvoření projektu vyberte Add Firebase to your Android app (Přidat Firebase do aplikace pro Android).

    Přidání Firebase do aplikace pro Android

  3. Na stránce Přidat Firebase do aplikace pro Android proveďte následující kroky:

    1. Jako název balíčku pro Android zkopírujte hodnotu applicationId v souboru build.gradle vaší aplikace. V tomto příkladu je com.fabrikam.fcmtutorial1appto .

      Zadejte název balíčku.

    2. Vyberte Zaregistrovat aplikaci.

  4. Vyberte Stáhnout google-services.json, uložte soubor do složky aplikace vašeho projektu a pak vyberte Další.

    Stáhnout google-services.json

  5. Proveďte následující změny konfigurace projektu v Android Studiu.

    1. Do souboru build.gradle (<project>/build.gradle) na úrovni projektu přidejte do oddílu závislostí následující příkaz.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Do souboru build.gradle na úrovni aplikace (<project>/<app-module>/build.gradle) přidejte do oddílu závislostí následující příkazy .

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Na konec souboru build.gradle na úrovni aplikace za oddíl závislosti přidejte následující řádek.

      apply plugin: 'com.google.gms.google-services'
      
    4. Na panelu nástrojů vyberte Synchronizovat .

      změny konfigurace build.gradle

  6. Vyberte Další.

  7. Vyberte Přeskočit tento krok.

    Přeskočit poslední krok

  8. V konzole Firebase vyberte kolečko pro váš projekt. Potom vyberte Project Settings (Nastavení projektu).

    Výběr nastavení projektu

  9. Pokud jste si soubor google-services.json nestáhli do složky aplikace vašeho projektu android studia, můžete to udělat na této stránce.

  10. V horní části přepněte na cloudovou kartu Zasílání zpráv .

  11. Zkopírujte a uložte klíč serveru pro pozdější použití. Tuto hodnotu použijete ke konfiguraci centra.

Konfigurace back-endu Mobile Apps pro odesílání nabízených žádostí pomocí FCM

  1. V Azure Portal vyberte Procházet všechny>služby App Services. Pak vyberte back-end Mobile Apps.
  2. V části Nastavení vyberte Nasdílení změn. Pak vyberte Konfigurovat služby nabízených oznámení.
  3. Přejděte na Google (GCM). Zadejte klíč serveru FCM starší verze, který jste získali z konzoly Firebase, a pak vyberte Uložit.

Vaše služba je teď nakonfigurovaná tak, aby fungovala se službou Firebase Cloud Messaging.

Přidání nabízených oznámení do projektu pro Android

S back-endem nakonfigurovaným pomocí FCM můžete do klienta přidat komponenty a kódy pro registraci v FCM. Můžete si také zaregistrovat nabízená oznámení ve službě Azure Notification Hubs prostřednictvím back-endu Mobile Apps a přijímat oznámení.

  1. V projektu Droid klikněte pravým tlačítkem na Odkazy > Spravovat balíčky NuGet....
  2. V okně Správce balíčků NuGet vyhledejte balíček Xamarin.Firebase.Messaging a přidejte ho do projektu.
  3. Ve vlastnostech projektu Droid nastavte aplikaci tak, aby se zkompiloval pomocí Androidu verze 7.0 nebo vyšší.
  4. Přidejte soubor google-services.json stažený z konzoly Firebase do kořenového adresáře projektu Droid a nastavte jeho akci sestavení na GoogleServicesJson. Další informace najdete v tématu Přidání souboru JSON služeb Google.

Registrace ve službě Firebase Cloud Messaging

  1. Otevřete soubor AndroidManifest.xml a vložte následující elementy <receiver> do elementu <application>:

    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>
    

Implementace služby Id instance Firebase

  1. Do projektu Droid přidejte novou třídu s názvem FirebaseRegistrationServicea ujistěte se, že jsou v horní části souboru následující using příkazy:

    using System.Threading.Tasks;
    using Android.App;
    using Android.Util;
    using Firebase.Iid;
    using Microsoft.WindowsAzure.MobileServices;
    
  2. Nahraďte prázdnou FirebaseRegistrationService třídu následujícím kódem:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseRegistrationService : FirebaseInstanceIdService
    {
        const string TAG = "FirebaseRegistrationService";
    
        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;
            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
            SendRegistrationTokenToAzureNotificationHub(refreshedToken);
        }
    
        void SendRegistrationTokenToAzureNotificationHub(string token)
        {
            // Update notification hub registration
            Task.Run(async () =>
            {
                await AzureNotificationHubService.RegisterAsync(TodoItemManager.DefaultManager.CurrentClient.GetPush(), token);
            });
        }
    }
    

    Třída FirebaseRegistrationService zodpovídá za generování tokenů zabezpečení, které aplikaci autorizují pro přístup k FCM. Metoda OnTokenRefresh se vyvolá, když aplikace obdrží registrační token z FCM. Metoda načte token z FirebaseInstanceId.Instance.Token vlastnosti, která je asynchronně aktualizována FCM. Metoda OnTokenRefresh je vyvolána zřídka, protože token se aktualizuje pouze při instalaci nebo odinstalaci aplikace, když uživatel odstraní data aplikace, když aplikace vymaže ID instance nebo když došlo k ohrožení zabezpečení tokenu. Kromě toho bude služba FCM ID instance požadovat, aby aplikace pravidelně aktualizovala svůj token, obvykle každých 6 měsíců.

    Metoda OnTokenRefresh také vyvolá metodu SendRegistrationTokenToAzureNotificationHub , která slouží k přidružení registračního tokenu uživatele k Centru oznámení Azure.

Registrace ve službě Azure Notification Hub

  1. Do projektu Droid přidejte novou třídu s názvem AzureNotificationHubServicea ujistěte se, že jsou v horní části souboru následující using příkazy:

    using System;
    using System.Threading.Tasks;
    using Android.Util;
    using Microsoft.WindowsAzure.MobileServices;
    using Newtonsoft.Json.Linq;
    
  2. Nahraďte prázdnou AzureNotificationHubService třídu následujícím kódem:

    public class AzureNotificationHubService
    {
        const string TAG = "AzureNotificationHubService";
    
        public static async Task RegisterAsync(Push push, string token)
        {
            try
            {
                const string templateBody = "{\"data\":{\"message\":\"$(messageParam)\"}}";
                JObject templates = new JObject();
                templates["genericMessage"] = new JObject
                {
                    {"body", templateBody}
                };
    
                await push.RegisterAsync(token, templates);
                Log.Info("Push Installation Id: ", push.InstallationId.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(TAG, "Could not register with Notification Hub: " + ex.Message);
            }
        }
    }
    

    Metoda RegisterAsync vytvoří jednoduchou šablonu zprávy oznámení jako JSON a zaregistruje se pro příjem oznámení šablony z centra oznámení pomocí registračního tokenu Firebase. Tím se zajistí, že všechna oznámení odesílaná z centra oznámení Azure budou cílit na zařízení reprezentované registračním tokenem.

Zobrazení obsahu nabízeného oznámení

  1. Do projektu Droid přidejte novou třídu s názvem FirebaseNotificationServicea ujistěte se, že jsou v horní části souboru následující using příkazy:

    using Android.App;
    using Android.Content;
    using Android.Media;
    using Android.Support.V7.App;
    using Android.Util;
    using Firebase.Messaging;
    
  2. Nahraďte prázdnou FirebaseNotificationService třídu následujícím kódem:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class FirebaseNotificationService : FirebaseMessagingService
    {
        const string TAG = "FirebaseNotificationService";
    
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "From: " + message.From);
    
            // Pull message body out of the template
            var messageBody = message.Data["message"];
            if (string.IsNullOrWhiteSpace(messageBody))
                return;
    
            Log.Debug(TAG, "Notification message body: " + messageBody);
            SendNotification(messageBody);
        }
    
        void SendNotification(string messageBody)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            //Unique request code to avoid PendingIntent collision.
            var requestCode = new Random().Next();
            var pendingIntent = PendingIntent.GetActivity(this, requestCode, intent, PendingIntentFlags.OneShot);
            var notificationBuilder = new NotificationCompat.Builder(this)
                .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                .SetContentTitle("New Todo Item")
                .SetContentText(messageBody)
                .SetContentIntent(pendingIntent)
                .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                .SetAutoCancel(true);
    
            var notificationManager = NotificationManager.FromContext(this);
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    }
    

    Metoda OnMessageReceived , která je vyvolána, když aplikace obdrží oznámení z FCM, extrahuje obsah zprávy a volá metodu SendNotification . Tato metoda převede obsah zprávy na místní oznámení, které se spustí, když je aplikace spuštěná, přičemž oznámení se zobrazí v oznamovací oblasti.

Teď jste připravení testovat nabízená oznámení v aplikaci spuštěné na zařízení s Androidem nebo v emulátoru.

Testování nabízených oznámení v aplikaci pro Android

První dva kroky se vyžadují jenom při testování v emulátoru.

  1. Ujistěte se, že nasazujete nebo ladíte v zařízení nebo emulátoru, který je nakonfigurovaný se službami Google Play. To můžete ověřit tak, že zkontrolujete, jestli jsou aplikace Play nainstalované v zařízení nebo emulátoru.
  2. Přidejte do zařízení s Androidem účet Google kliknutím naNastavení>aplikací>Přidat účet. Pak podle pokynů přidejte do zařízení existující účet Google nebo vytvořte nový.
  3. V sadě Visual Studio nebo Xamarin Studio klikněte pravým tlačítkem na projekt Droid a klikněte na Nastavit jako spouštěný projekt.
  4. Kliknutím na Spustit sestavte projekt a spusťte aplikaci na zařízení s Androidem nebo emulátoru.
  5. V aplikaci zadejte úkol a klikněte na ikonu plus (+).
  6. Ověřte, že se při přidání položky přijalo oznámení.

Konfigurace a spuštění projektu iOS (volitelné)

Tato část se týká spuštění projektu Xamarin iOS pro zařízení s iOS. Můžete ji přeskočit, pokud s takovými zařízeními nepracujete.

Vygenerování souboru žádosti o podepsání certifikátu

Služba Apple Push Notification Service (APNs) používá k ověřování nabízených oznámení certifikáty. Pokud chcete vytvořit nabízený certifikát pro odesílání a přijímání oznámení, postupujte podle těchto pokynů. Další informace o těchto konceptech najdete v oficiální dokumentaci ke službě Apple Push Notification Service.

Vygenerujte soubor žádosti o podepsání certifikátu (CSR), který Apple používá k vygenerování podepsaného nabízeného certifikátu.

  1. V Macu spusťte nástroj Keychain Access. Můžete ho otevřít ze složky Utility nebo ze složky Další na hlavním panelu.

  2. Vyberte Přístup ke svazku klíčů, rozbalte Certificate Assistant a pak vyberte Požádat o certifikát od certifikační autority.

    Použití nástroje Keychain Access k vyžádání nového certifikátu

    Poznámka

    Ve výchozím nastavení vybere Přístup řetězce klíčů první položku v seznamu. To může být problém, pokud jste v kategorii Certifikáty a certifikační autorita Apple Worldwide Developer Relations Certification Authority není první položkou v seznamu. Než vygenerujete csr (žádost o podepsání certifikátu), ujistěte se, že máte položku, která není klíčem, nebo je vybraný klíč certifikační autority Apple Worldwide Developer Relations.

  3. Vyberte adresu Email uživatele, zadejte hodnotu Běžný název, ujistěte se, že jste zadali Uloženo na disk, a pak vyberte Pokračovat. Adresa certifikační autority Email ponechte prázdnou, protože není vyžadována.

    Požadované informace o certifikátu

  4. Do pole Uložit jako zadejte název souboru CSR, vyberte umístění v umístění Kam a pak vyberte Uložit.

    Zvolte název souboru pro certifikát.

    Tato akce uloží soubor CSR do vybraného umístění. Výchozí umístění je Desktop. Zapamatujte si umístění tohoto souboru.

Dále zaregistrujte aplikaci u Společnosti Apple, povolte nabízená oznámení a nahrajte exportovanou csr, abyste vytvořili certifikát nabízených oznámení.

Registrace aplikace pro nabízená oznámení

Pokud chcete odesílat nabízená oznámení do aplikace pro iOS, zaregistrujte aplikaci u společnosti Apple a také zaregistrujte nabízená oznámení.

  1. Pokud jste aplikaci ještě nezaregistrovali, přejděte na portál zřizování pro iOS v Centru pro vývojáře Apple. Přihlaste se k portálu pomocí svého Apple ID a vyberte Identifikátory. Pak vyberte + a zaregistrujte novou aplikaci.

    Stránka ID aplikací na portálu zřizování iOS

  2. Na obrazovce Register a New Identifier (Zaregistrovat nový identifikátor ) vyberte přepínač ID aplikací . Potom vyberte Pokračovat.

    Registrace nové stránky ID na portálu zřizování pro iOS

  3. Aktualizujte pro novou aplikaci následující tři hodnoty a pak vyberte Pokračovat:

    • Popis: Zadejte popisný název aplikace.

    • ID sady: Zadejte ID sady ve formátu Identifikátor organizace.Název produktu , jak je uvedeno v průvodci distribucí aplikací. Hodnoty Identifikátor organizace a Název produktu se musí shodovat s identifikátorem organizace a názvem produktu, který používáte při vytváření projektu Xcode. Na následujícím snímku obrazovky se hodnota NotificationHubs použije jako identifikátor organizace a jako název produktu se použije hodnota GetStarted . Ujistěte se, že hodnota Identifikátor balíčku odpovídá hodnotě v projektu Xcode, aby Xcode používal správný profil publikování.

      Stránka registrace ID aplikace na portálu zřizování pro iOS

    • Nabízená oznámení: V části Možnosti zaškrtněte možnost Nabízenáoznámení.

      Formulář pro registraci nového ID aplikace

      Tato akce vygeneruje ID aplikace a požádá o potvrzení informací. Vyberte Pokračovat a pak vyberte Zaregistrovat a potvrďte nové ID aplikace.

      Potvrzení nového ID aplikace

      Po výběru možnosti Zaregistrovat se nové ID aplikace zobrazí jako řádková položka na stránce Certifikáty, identifikátory & profily .

  4. Na stránce Certifikáty, identifikátory & profily vyhledejte v části Identifikátory položku řádku ID aplikace, kterou jste právě vytvořili, a výběrem jejího řádku zobrazte obrazovku Upravit konfiguraci ID aplikace .

Vytvoření certifikátu pro Notification Hubs

Aby centrum oznámení fungovalo se službou APNS, vyžaduje se certifikát. To lze provést jedním ze dvou způsobů:

  1. Vytvořte soubor .p12 , který se dá nahrát přímo do centra oznámení.
  2. Vytvořte soubor .p8 , který lze použít pro ověřování na základě tokenů (novější přístup).

Novější přístup má řadu výhod (ve srovnání s používáním certifikátů), jak je popsáno v ověřování APNS na základě tokenů (HTTP/2). Byly však poskytnuty kroky pro oba přístupy.

MOŽNOST 1: Vytvoření certifikátu push .p12, který se dá nahrát přímo do centra oznámení

  1. Posuňte se dolů na zaškrtnutou možnost Nabízená oznámení a pak vyberte Konfigurovat a vytvořte certifikát.

    Úprava stránky ID aplikace

  2. Zobrazí se okno Certifikáty SSL služby Apple Push Notification. V části Certifikát SSL pro vývoj vyberte tlačítko Vytvořit certifikát.

    Tlačítko Vytvořit certifikát pro ID aplikace

    Zobrazí se obrazovka Vytvořit nový certifikát .

    Poznámka

    Tento kurz používá vývojový certifikát. Stejný postup se používá při registraci produkčního certifikátu. Dejte pozor, abyste při odesílání oznámení používali stejný typ certifikátu.

  3. Vyberte Zvolit soubor, přejděte do umístění, kam jste uložili soubor CSR z prvního úkolu, a potom poklikáním na název certifikátu ho načtěte. Potom vyberte Pokračovat.

  4. Jakmile portál vytvoří certifikát, vyberte tlačítko Stáhnout . Uložte certifikát a zapamatujte si umístění, do kterého je uložený.

    Stránka pro stažení vygenerovaného certifikátu

    Certifikát se stáhne a uloží do počítače ve složce Stažené soubory .

    Vyhledání souboru certifikátu ve složce stažených souborů

    Poznámka

    Ve výchozím nastavení má stažený vývojový certifikát název aps_development.cer.

  5. Poklikejte na stažený nabízený certifikát aps_development.cer. Tato akce nainstaluje nový certifikát do Klíčenky, jak je znázorněno na následujícím obrázku:

    Seznam certifikátů nástroje Keychain Access zobrazující nový certifikát

    Poznámka

    I když se název v certifikátu může lišit, bude mít před název předponu Apple Development iOS Push Services.

  6. V nástroji Keychain Access, klikněte pravým tlačítkem na nový nabízený certifikát, který jste vytvořili v kategorii Certifikáty. Vyberte Exportovat, pojmenujte soubor, vyberte formát .p12 a pak vyberte Uložit.

    Export certifikátu ve formátu p12

    Certifikát můžete chránit heslem, ale tato možnost je volitelná. Pokud chcete obejít vytváření hesla, klikněte na OK . Poznamenejte si název souboru a umístění exportovaného certifikátu .p12. Používají se k povolení ověřování pomocí APN.

    Poznámka

    Název a umístění vašeho souboru .p12 se může lišit od toho, co je znázorněno v tomto kurzu.

MOŽNOST 2: Vytvoření certifikátu .p8, který se dá použít k ověřování na základě tokenů

  1. Poznamenejte si následující podrobnosti:

    • Předpona ID aplikace (toto je ID týmu)
    • ID sady prostředků
  2. Zpět v části Certifikáty, Identifikátory & Profily klikněte na Klíče.

    Poznámka

    Pokud už máte klíč nakonfigurovaný pro APNS, můžete znovu použít certifikát .p8, který jste si stáhli hned po jeho vytvoření. Pokud ano, můžete kroky 35 ignorovat.

  3. Kliknutím na + tlačítko (nebo na tlačítko Vytvořit klíč ) vytvořte nový klíč.

  4. Zadejte vhodnou hodnotu Název klíče , zaškrtněte možnost Služba Apple Push Notifications (APNs) a na další obrazovce klikněte na Pokračovat a pak na Zaregistrovat .

  5. Klikněte na Stáhnout , přesuňte soubor .p8 (s předponou AuthKey_) do zabezpečeného místního adresáře a pak klikněte na Hotovo.

    Poznámka

    Nezapomeňte mít soubor .p8 na bezpečném místě (a uložit zálohu). Po stažení není možné klíč znovu stáhnout, protože se odebere serverová kopie.

  6. V části Klíče klikněte na klíč, který jste právě vytvořili (nebo na existující klíč, pokud jste se ho rozhodli použít).

  7. Poznamenejte si hodnotu ID klíče .

  8. Otevřete certifikát .p8 ve vhodné aplikaci podle vašeho výběru, jako je Visual Studio Code , a poznamenejte si hodnotu klíče. Jedná se o hodnotu mezi hodnotami -----BEGIN PRIVATE KEY----- a -----END PRIVATE KEY----- .

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Poznámka

    Toto je hodnota tokenu , která se později použije ke konfiguraci centra oznámení.

Na konci těchto kroků byste měli mít následující informace pro pozdější použití v části Konfigurace centra oznámení s informacemi apNs:

  • ID týmu (viz krok 1)
  • ID sady prostředků (viz krok 1)
  • ID klíče (viz krok 7)
  • Hodnota tokenu , tj. hodnota klíče .p8 (viz krok 8)

Vytvoření zřizovacího profilu pro aplikaci

  1. Vraťte se na portál pro zřizování iOS, vyberte Certifikáty, identifikátory & profily, v nabídce vlevo vyberte Profily a pak výběrem vytvořte + nový profil. Zobrazí se obrazovka Zaregistrovat nový zřizovací profil .

  2. Jako typ zřizovacího profilu v části Vývoj vyberte Vývoj aplikací pro iOS a pak vyberte Pokračovat.

    Seznam zřizovacích profilů

  3. Pak v rozevíracím seznamu ID aplikace vyberte ID aplikace, které jste vytvořili, a vyberte Pokračovat.

    Výběr ID aplikace

  4. V okně Vybrat certifikáty vyberte certifikát pro vývoj, který používáte k podepisování kódu, a vyberte Pokračovat. Tento certifikát není certifikátem push, který jste vytvořili. Pokud neexistuje, musíte ho vytvořit. Pokud certifikát existuje, přejděte k dalšímu kroku. Vytvoření vývojového certifikátu, pokud neexistuje:

    1. Pokud se zobrazí Možnost Nejsou k dispozici žádné certifikáty, vyberte Vytvořit certifikát.
    2. V části Software vyberte Vývoj Apple. Potom vyberte Pokračovat.
    3. Na obrazovce Vytvořit nový certifikát vyberte Zvolit soubor.
    4. Přejděte na certifikát žádosti o podepsání certifikátu , který jste vytvořili dříve, vyberte ho a pak vyberte Otevřít.
    5. Vyberte Pokračovat.
    6. Stáhněte si certifikát pro vývoj a zapamatujte si umístění, do kterého je uložený.
  5. Vraťte se na stránku Certifikáty, identifikátory & profily , v nabídce vlevo vyberte Profily a pak výběrem vytvořte + nový profil. Zobrazí se obrazovka Zaregistrovat nový zřizovací profil .

  6. V okně Vybrat certifikáty vyberte certifikát pro vývoj, který jste právě vytvořili. Potom vyberte Pokračovat.

  7. Dále vyberte zařízení, která chcete použít k testování, a vyberte Pokračovat.

  8. Nakonec zvolte název profilu v části Název zřizovacího profilu a vyberte Vygenerovat.

    Volba názvu zřizovacího profilu

  9. Po vytvoření nového zřizovacího profilu vyberte Stáhnout. Zapamatujte si umístění, do kterého se uloží.

  10. Přejděte do umístění zřizovacího profilu a poklikáním ho nainstalujte na vývojový počítač Xcode.

Vytvoříte centrum oznámení.

V této části vytvoříte centrum oznámení a nakonfigurujete ověřování pomocí služby APNs pomocí nabízeného certifikátu .p12 nebo ověřování založeného na tokenech. Pokud chcete použít centrum oznámení, které jste už vytvořili, můžete přeskočit ke kroku 5.

  1. Přihlaste se k webu Azure Portal.

  2. V nabídce vlevo vyberte Všechny služby a pak vyberte Notification Hubs v části Mobilní . Výběrem ikony star vedle názvu služby přidejte službu do části OBLÍBENÉ v nabídce vlevo. Jakmile přidáte Notification Hubs k oblíbeným položkám, vyberte ho v nabídce vlevo.

    Azure Portal – vyberte Notification Hubs.

  3. Na stránce Notification Hubs vyberte na panelu nástrojů Přidat .

    Notification Hubs – tlačítko Přidat panel nástrojů

  4. Na stránce Centrum oznámení proveďte následující kroky:

    1. Zadejte název v Centru oznámení.

    2. Zadejte název do pole Vytvořit nový obor názvů. Obor názvů obsahuje jedno nebo více center.

    3. V rozevíracím seznamu Umístění vyberte hodnotu. Tato hodnota určuje umístění, ve kterém chcete centrum vytvořit.

    4. Vyberte existující skupinu prostředků ve skupině prostředků nebo vytvořte název nové skupiny prostředků.

    5. Vyberte Vytvořit.

      Azure Portal – nastavení vlastností centra oznámení

  5. Vyberte Oznámení (ikona zvonku) a pak vyberte Přejít k prostředku. Můžete také aktualizovat seznam na stránce Notification Hubs a vybrat centrum.

    Azure Portal - oznámení -> Přejít k prostředku

  6. Vyberte ze seznamu Zásady přístupu. Všimněte si, že tyto dva připojovací řetězce máte k dispozici. Později je budete potřebovat ke zpracování nabízených oznámení.

    Důležité

    Nepoužívejte ve své aplikaci zásadu DefaultFullSharedAccessSignature. To se má používat jenom v back-endu.

    Azure Portal – připojovací řetězce centra oznámení

Konfigurace centra oznámení s využitím informací apNs

V části Notification Services vyberte Apple (APNS) a pak postupujte podle postupu, který jste zvolili dříve v části Vytvoření certifikátu pro Notification Hubs .

Poznámka

Produkčnírežim pro aplikační režim používejte jenom v případě, že chcete odesílat nabízená oznámení uživatelům, kteří zakoupili vaši aplikaci z obchodu.

MOŽNOST 1: Použití nabízeného certifikátu .p12

  1. Vyberte Certifikát.

  2. Vyberte ikonu souboru.

  3. Vyberte soubor .p12, který jste vyexportovali dříve, a pak vyberte Otevřít.

  4. V případě potřeby zadejte správné heslo.

  5. Vyberte režim Izolovaný prostor.

    Konfigurace certifikace APNs v Azure Portal

  6. Vyberte Uložit.

MOŽNOST 2: Použití ověřování na základě tokenů

  1. Vyberte Token.

  2. Zadejte následující hodnoty, které jste získali dříve:

    • ID klíče
    • ID sady prostředků
    • ID týmu
    • Token
  3. Zvolte Sandbox.

  4. Vyberte Uložit.

Teď jste v centru oznámení nakonfigurovali služby APN. Máte také připojovací řetězce pro registraci aplikace a odesílání nabízených oznámení.

Konfigurace centra oznámení pro APNS

  1. Na počítači Mac spusťte Klíčenky. V levém navigačním panelu v části Category (Kategorie) otevřete My Certificates (Moje certifikáty). Vyhledejte certifikát SSL, který jste si stáhli v předchozí části, a pak odhalte jeho obsah. Vyberte pouze certifikát (nevybírejte privátní klíč). Pak ho vyexportujte.
  2. V Azure Portal vyberte Procházet všechny>služby App Services. Pak vyberte back-end Mobile Apps.
  3. V části Nastavení vyberte App Service Nasdílení změn. Pak vyberte název centra oznámení.
  4. Přejděte na Apple Push Notification Services>Upload Certificate. Nahrajte soubor .p12 a vyberte správný režim (v závislosti na tom, jestli je váš klientský certifikát SSL z dřívější verze produkční nebo sandbox). Uložte všechny změny.

Vaše služba je teď nakonfigurovaná tak, aby fungovala s nabízenými oznámeními v iOSu.

Dále nakonfigurujete nastavení projektu pro iOS v Xamarin Studiu nebo sadě Visual Studio.

Konfigurace projektu iOS v Xamarin Studiu

  1. V Xamarin.Studiu otevřete Soubor Info.plist a aktualizujte identifikátor sady na ID sady, které jste vytvořili dříve, s použitím nového ID aplikace.

  2. Posuňte se dolů na Režimy pozadí. Zaškrtněte políčka Povolit režimy pozadí a Vzdálená oznámení .

  3. Poklikáním na projekt na panelu řešení otevřete Možnosti projektu.

  4. V části Sestavení zvolte Podepisování sady prostředků iOS a vyberte odpovídající profil identity a zřizování, který jste právě nastavili pro tento projekt.

    Tím se zajistí, že projekt použije nový profil pro podepisování kódu. Oficiální dokumentaci ke zřizování zařízení Xamarin najdete v tématu Zřizování zařízení Xamarin.

Konfigurace projektu pro iOS v sadě Visual Studio

  1. V sadě Visual Studio klikněte pravým tlačítkem na projekt a potom klikněte na Vlastnosti.

  2. Na stránkách vlastností klikněte na kartu Aplikace pro iOS a aktualizujte identifikátor pomocí ID, které jste vytvořili dříve.

  3. Na kartě Podepisování sady prostředků iOS vyberte odpovídající profil identity a zřizovací profil, který jste právě nastavili pro tento projekt.

    Tím se zajistí, že projekt použije nový profil pro podepisování kódu. Oficiální dokumentaci ke zřizování zařízení Xamarin najdete v tématu Zřizování zařízení Xamarin.

  4. Poklikáním otevřete soubor Info.plist a povolte vzdálené oznámení v části Režimy pozadí.

Přidání nabízených oznámení do aplikace pro iOS

  1. V projektu pro iOS otevřete soubor AppDelegate.cs a na začátek souboru kódu přidejte následující příkaz.

    using Newtonsoft.Json.Linq;
    
  2. Ve třídě AppDelegate přidejte přepsání události RegisteredForRemoteNotifications pro registraci oznámení:

    public override void RegisteredForRemoteNotifications(UIApplication application,
        NSData deviceToken)
    {
        const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
            {
                {"body", templateBodyAPNS}
            };
    
        // Register for push with your mobile app
        Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
        push.RegisterAsync(deviceToken, templates);
    }
    
  3. V AppDelegate také přidejte následující přepsání pro obslužnou rutinu události DidReceiveRemoteNotification :

    public override void DidReceiveRemoteNotification(UIApplication application,
        NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
    
        string alert = string.Empty;
        if (aps.ContainsKey(new NSString("alert")))
            alert = (aps[new NSString("alert")] as NSString).ToString();
    
        //show alert
        if (!string.IsNullOrEmpty(alert))
        {
            UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
            avAlert.Show();
        }
    }
    

    Tato metoda zpracovává příchozí oznámení, když je aplikace spuštěná.

  4. Ve třídě AppDelegate přidejte následující kód do metody FinishedLaunching :

    // Register for push notifications.
    var settings = UIUserNotificationSettings.GetSettingsForTypes(
        UIUserNotificationType.Alert
        | UIUserNotificationType.Badge
        | UIUserNotificationType.Sound,
        new NSSet());
    
    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
    UIApplication.SharedApplication.RegisterForRemoteNotifications();
    

    To umožňuje podporu vzdálených oznámení a žádostí o nabízenou registraci.

Vaše aplikace je teď aktualizovaná, aby podporovala nabízená oznámení.

Testování nabízených oznámení v aplikaci pro iOS

  1. Klikněte pravým tlačítkem na projekt pro iOS a klikněte na Nastavit jako projekt po spuštění.

  2. Stisknutím tlačítka Spustit nebo F5 v sadě Visual Studio sestavte projekt a spusťte aplikaci na zařízení s iOSem. Potom kliknutím na OK přijměte nabízená oznámení.

    Poznámka

    Musíte explicitně přijímat nabízená oznámení z vaší aplikace. K tomuto požadavku dojde pouze při prvním spuštění aplikace.

  3. V aplikaci zadejte úkol a klikněte na ikonu plus (+).

  4. Ověřte, že je přijato oznámení, a kliknutím na OK oznámení zavřete.

Konfigurace a spouštění projektů pro Windows (volitelné)

Tato část je určená pro spuštění projektů WinApp a WinPhone81 v Xamarin.Forms pro zařízení s Windows. Tyto kroky také podporují projekty Univerzální platforma Windows (UPW). Můžete ji přeskočit, pokud s takovými zařízeními nepracujete.

Registrace aplikace pro Windows pro nabízená oznámení ve Službě oznámení Windows (WNS)

  1. V sadě Visual Studio Průzkumník řešení klikněte pravým tlačítkem na projekt aplikace pro Windows Store. Pak vyberte Store>Přidružit aplikaci ke Storu.

    Přidružení aplikace k Windows Storu

  2. V průvodci vyberte Další. Pak se přihlaste pomocí svého účtu Microsoft. V části Rezervovat nový název aplikace zadejte název aplikace a pak vyberte Rezervovat.

  3. Po úspěšném vytvoření registrace aplikace vyberte název nové aplikace. Vyberte Další a pak vyberte Přidružit. Tento proces přidá požadované registrační informace pro Windows Store do manifestu aplikace.

  4. Opakujte kroky 1 a 3 pro projekt aplikace Windows Phone Store pomocí stejné registrace, kterou jste předtím vytvořili pro aplikaci pro Windows Store.

  5. Přejděte na web Windows Dev Center a přihlaste se pomocí účtu Microsoft. V části Moje aplikace vyberte registraci nové aplikace. Pak rozbalte MožnostNabízená oznámeníslužeb>.

  6. Na stránce Nabízená oznámení v části Služby nabízených oznámení systému Windows (WNS) a Microsoft Azure Mobile Apps vyberte Live Services web. Poznamenejte si hodnoty identifikátoru SID balíčku a aktuální hodnoty v tajném kódu aplikace.

    Nastavení aplikace v centru pro vývojáře

    Důležité

    Tajný klíč aplikace a SID balíčku jsou důležité přihlašovací údaje zabezpečení. Tyto hodnoty s nikým nesdílejte ani je nedistribuujte s vaší aplikací.

Konfigurace centra oznámení pro službu WNS

  1. V Azure Portal vyberte Procházet všechny>služby App Services. Pak vyberte back-end Mobile Apps. V části Nastavení vyberte App Service Nasdílení změn. Pak vyberte název centra oznámení.

  2. Přejděte na Windows (WNS). Potom zadejte klíč zabezpečení (tajný klíč klienta) a identifikátor SID balíčku, který jste získali z lokality Live Services. Pak vyberte Uložit.

    Nastavení klíče WNS na portálu

Váš back-end je teď nakonfigurovaný tak, aby k odesílání nabízených oznámení používal službu WNS.

Přidání nabízených oznámení do aplikace pro Windows

  1. V sadě Visual Studio otevřete soubor App.xaml.cs v projektu pro Windows a přidejte následující příkazy.

    using Newtonsoft.Json.Linq;
    using Microsoft.WindowsAzure.MobileServices;
    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    using <your_TodoItemManager_portable_class_namespace>;
    

    Nahraďte <your_TodoItemManager_portable_class_namespace> oborem názvů přenosného projektu, který obsahuje TodoItemManager třídu .

  2. V souboru App.xaml.cs přidejte následující metodu InitNotificationsAsync :

    private async Task InitNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager
            .CreatePushNotificationChannelForApplicationAsync();
    
        const string templateBodyWNS =
            "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";
    
        JObject headers = new JObject();
        headers["X-WNS-Type"] = "wns/toast";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
        {
            {"body", templateBodyWNS},
            {"headers", headers} // Needed for WNS.
        };
    
        await TodoItemManager.DefaultManager.CurrentClient.GetPush()
            .RegisterAsync(channel.Uri, templates);
    }
    

    Tato metoda získá kanál nabízených oznámení a zaregistruje šablonu pro příjem oznámení šablony z centra oznámení. Tomuto klientovi se doručí oznámení šablony, které podporuje messageParam .

  3. V souboru App.xaml.cs aktualizujte definici metody obslužné rutiny události OnLaunched přidáním modifikátoru async . Pak na konec metody přidejte následující řádek kódu:

    await InitNotificationsAsync();
    

    Tím se zajistí, že se registrace nabízených oznámení vytvoří nebo aktualizuje při každém spuštění aplikace. Je důležité to udělat, abyste zajistili, že kanál nabízených oznámení WNS bude vždy aktivní.

  4. V Průzkumník řešení pro Visual Studio otevřete soubor Package.appxmanifest a v části Oznámení nastavte Možnost informační zprávy na Ano.

  5. Sestavte aplikaci a ověřte, že nemáte žádné chyby. Vaše klientská aplikace by se teď měla zaregistrovat pro oznámení šablon z back-endu Mobile Apps. Tuto část opakujte pro každý projekt pro Windows ve vašem řešení.

Testování nabízených oznámení v aplikaci pro Windows

  1. V sadě Visual Studio klikněte pravým tlačítkem na projekt windows a klikněte na Nastavit jako spouštěný projekt.
  2. Stiskněte tlačítko Spustit a sestavte projekt a spusťte aplikaci.
  3. V aplikaci zadejte název nové položky a kliknutím na ikonu se znaménkem plus (+) ho přidejte.
  4. Ověřte, že je při přidání položky přijato oznámení.

Další kroky

Další informace o nabízených oznámeních:

Můžete také pokračovat jedním z následujících kurzů:

  • Přidání ověřování do aplikace
    Zjistěte, jak ověřovat uživatele vaší aplikace pomocí zprostředkovatele identity.
  • Povolení offline synchronizace u aplikace
    Zjistěte, jak pomocí back-endu Mobile Apps přidat do aplikace podporu offline režimu. Díky offline synchronizaci můžou uživatelé pracovat s mobilní aplikací – prohlížet, přidávat nebo upravovat data – i když není k dispozici síťové připojení.