Megosztás a következőn keresztül:


Leküldéses értesítések hozzáadása a Xamarin.Forms alkalmazáshoz

Áttekintés

Ebben az oktatóanyagban leküldéses értesítéseket ad hozzá a Xamarin.Forms gyorsindításából eredő összes projekthez. Ez azt jelenti, hogy a rendszer minden rekord beszúrásakor leküldéses értesítést küld minden platformfüggetlen ügyfélnek.

Ha nem használja a letöltött gyorsindítási kiszolgálói projektet, szüksége lesz a leküldéses értesítési bővítménycsomagra. További információ: Az Azure Mobile Appshez készült .NET háttérkiszolgáló SDK használata.

Előfeltételek

iOS esetén Apple Developer Program-tagságra és fizikai iOS-eszközre lesz szüksége. Az iOS-szimulátor nem támogatja a leküldéses értesítéseket.

Értesítési központ konfigurálása

Az Azure App Service Mobile Apps funkciója az Azure Notification Hubs- segítségével küld értesítéseket, ezért értesítési központot fog konfigurálni mobilalkalmazásához.

  1. A Azure Portal-ban lépjen az App Services lehetőségre, majd válassza ki az alkalmazás háttérrendszerét. A Beállításokterületen válassza a Pushlehetőséget.

  2. Ha értesítési központ-erőforrást szeretne hozzáadni az alkalmazáshoz, válassza a Csatlakozáslehetőséget. Létrehozhat egy központot, vagy csatlakozhat egy meglévőhöz.

    Hub konfigurálása

Most már csatlakoztatott egy értesítési központot a Mobile Apps háttérprojektjéhez. Később úgy konfigurálja ezt az értesítési központot, hogy csatlakozzon egy platformértesítő rendszerhez (PNS) az eszközökre való leküldéshez.

A kiszolgálóprojektet frissíteni a leküldéses értesítések küldésére

Ebben a szakaszban frissítenie kell a meglévő Mobile Apps háttérprojekt kódját, hogy minden új elem hozzáadásakor leküldéses értesítést küldjön. Ezt a folyamatot az Azure Notification Hubs sablonjának funkciója hajtja, amely platformfüggetlen leküldéseket tesz lehetővé. A különböző ügyfelek sablonokkal regisztrálnak push értesítésekhez, és egyetlen univerzális push elérhet minden ügyfélplatformot.

Válasszon a háttérrendszer típusának megfelelő alábbi eljárások közül – vagy .NET háttérrendszer, vagy Node.js háttérrendszer.

.NET háttérprojekt

  1. A Visual Studióban kattintson a jobb gombbal a kiszolgálóprojektre. Ezután válassza NuGet-csomagok kezeléselehetőséget. Keresse meg a Microsoft.Azure.NotificationHubs, majd válassza a Telepítéslehetőséget. Ez a folyamat telepíti a Notification Hubs-kódtárat, amely értesítéseket küld a háttérrendszerből.

  2. A kiszolgálóprojektben nyissa meg a Kontrollerek>TodoItemController.cs. Ezután adja hozzá a következő using utasításokat:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. A PostTodoItem metódusban adja hozzá a következő kódot a InsertAsynchívása után:

    // 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");
    }
    

    Ez a folyamat egy sablonértesítést küld, amely tartalmazza az elemet. Új elem beszúrásakor megjelenő szöveg.

  4. Tegye közzé újra a kiszolgálóprojektet.

Node.js háttérprojekt

  1. Állítsa be a háttérprojektet.

  2. Cserélje le a todoitem.js meglévő kódját a következő kódra:

    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;  
    

    Ez a folyamat egy sablonértesítést küld, amely egy új elem beszúrásakor tartalmazza az item.text szöveget.

  3. Miután szerkeszti a fájlt a saját számítógépén, publikálja újra a kiszolgálóprojektet.

Az Android-projekt konfigurálása és futtatása (nem kötelező)

Töltse ki ezt a szakaszt az Android Xamarin.Forms Droid projekt leküldéses értesítéseinek engedélyezéséhez.

Firebase Cloud Messaging (FCM) engedélyezése

  1. Jelentkezzen be a Firebase konzoljába. Hozzon létre egy új Firebase-projektet, ha nem rendelkezik még ilyennel.

  2. A projekt létrehozása után válassza az Add Firebase to your Android app (A Firebase hozzáadása az Android-alkalmazáshoz) lehetőséget.

    Firebase hozzáadása Android-alkalmazáshoz

  3. Az Android-alkalmazáshoz a Firebase hozzáadása lapon hajtsa végre a következő lépéseket:

    1. Android-csomagnév esetén másolja az applicationId értékét az alkalmazás build.gradle fájljában. Ebben a példában ez com.fabrikam.fcmtutorial1app.

      A csomag nevének megadása

    2. Válassza a Regisztrálás alkalmazást.

  4. Válassza a Letöltés google-services.json lehetőséget, mentse a fájlt a projekt alkalmazásmappájába, majd válassza a Tovább gombot.

    Google-services.json letöltése

  5. Végezze el az alábbi konfigurációs módosításokat a projekten az Android Studióban.

    1. A projektszintű build.gradle fájlban (<project>/build.gradle) adja hozzá a következő utasítást a függőségek szakaszhoz.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Az alkalmazásszintű build.gradle fájlban (<project>/<app-module>/build.gradle) adja hozzá a következő utasításokat a függőségek szakaszhoz.

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Adja hozzá a következő sort az alkalmazásszintű build.gradle fájl végéhez a függőségek szakasz után.

      apply plugin: 'com.google.gms.google-services'
      
    4. Válassza a Szinkronizálás lehetőséget az eszköztáron.

      build.gradle konfigurációs módosítások

  6. Válassza a Következőlehetőséget.

  7. Válassza e lépés kihagyása lehetőséget.

    Az utolsó lépés kihagyása

  8. A Firebase konzolján kattintson a projektjéhez tartozó fogaskerékre. Ezután kattintson a Project Settings (Projektbeállítások) elemre.

    A projektbeállítások kiválasztása

  9. Ha még nem töltötte le a google-services.json fájlt az Android Studio-projekt alkalmazásmappájába , ezt ezen a lapon teheti meg.

  10. Váltson a felső Cloud Messaging lapra.

  11. Másolja és mentse a kiszolgálókulcsot későbbi használatra. Ezt az értéket használja a központ konfigurálásához.

A Mobile Apps háttérrendszerének konfigurálása leküldéses kérelmek küldésére az FCM használatával

  1. Az Azure portálon válassza az Összes tallózása>App Services lehetőséget. Ezután válassza ki a Mobile Apps háttéralkalmazásait.
  2. A Beállításokterületen válassza a Pushlehetőséget. Ezután válassza a Leküldéses értesítési szolgáltatások konfigurálása lehetőséget.
  3. Lépjen a Google (GCM) webhelyre. Adja meg a Firebase-konzolból beszerzett FCM örökölt kiszolgálókulcsot, majd válassza a Mentés lehetőséget.

A szolgáltatás most már úgy van konfigurálva, hogy működjön a Firebase Cloud Messaging szolgáltatással.

Leküldéses értesítések hozzáadása az Android-projekthez

Az FCM-hez konfigurált háttérrendszerrel összetevőket és kódokat adhat hozzá az ügyfélhez az FCM-ben való regisztrációhoz. Leküldéses értesítésekre is regisztrálhat az Azure Notification Hubsban a Mobile Apps háttérrendszerén keresztül, és értesítéseket fogadhat.

  1. A Droid-projektben kattintson a jobb gombbal a Hivatkozások > NuGet csomagok kezelése ....
  2. A NuGet Package Manager ablakban keresse meg a Xamarin.Firebase.Messaging csomagot, és adja hozzá a projekthez.
  3. A Droid projekt projekttulajdonságaiban állítsa be az alkalmazást az Android 7.0-s vagy újabb verziójával való fordításra.
  4. Adja hozzá a Firebase-konzolról letöltött google-services.json fájlt a Droid-projekt gyökeréhez, és állítsa a buildelési műveletet a GoogleServicesJsonra. További információt a Google Services JSON-fájljának hozzáadása című témakörben talál.

Regisztráció a Firebase Cloud Messagingben

  1. Nyissa meg a AndroidManifest.xml fájlt, és szúrja be a következő <receiver> elemeket az <application> elembe:

    <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>
    

A Firebase-példányazonosító szolgáltatás implementálása

  1. Adjon hozzá egy új osztályt a Droid-projekthez , FirebaseRegistrationServiceés győződjön meg arról, hogy a fájl tetején az alábbi using utasítások szerepelnek:

    using System.Threading.Tasks;
    using Android.App;
    using Android.Util;
    using Firebase.Iid;
    using Microsoft.WindowsAzure.MobileServices;
    
  2. Cserélje le az üres FirebaseRegistrationService osztályt a következő kódra:

    [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);
            });
        }
    }
    

    Az FirebaseRegistrationService osztály feladata olyan biztonsági jogkivonatok létrehozása, amelyek engedélyezik az alkalmazás számára az FCM elérését. A OnTokenRefresh metódus akkor lesz meghívva, ha az alkalmazás egy regisztrációs jogkivonatot kap az FCM-től. A módszer lekéri a jogkivonatot a FirebaseInstanceId.Instance.Token tulajdonságból, amelyet az FCM aszinkron módon frissít. A OnTokenRefresh metódust ritkán hívja meg a rendszer, mert a jogkivonat csak az alkalmazás telepítésekor vagy eltávolításakor, az alkalmazás adatainak törlésekor, az alkalmazás példányazonosítójának törlésekor vagy a jogkivonat biztonságának sérülése esetén frissül. Emellett az FCM Instance ID szolgáltatás kérni fogja, hogy az alkalmazás meghatározott időközönként, általában 6 havonta frissítse a tokenjét.

    A OnTokenRefresh metódus meghívja a SendRegistrationTokenToAzureNotificationHub metódust is, amely a felhasználó regisztrációs jogkivonatának az Azure Notification Hubhoz való társítására szolgál.

Regisztráció az Azure Notification Hubon

  1. Adjon hozzá egy új osztályt a Droid-projekthez , AzureNotificationHubServiceés győződjön meg arról, hogy a fájl tetején az alábbi using utasítások szerepelnek:

    using System;
    using System.Threading.Tasks;
    using Android.Util;
    using Microsoft.WindowsAzure.MobileServices;
    using Newtonsoft.Json.Linq;
    
  2. Cserélje le az üres AzureNotificationHubService osztályt a következő kódra:

    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);
            }
        }
    }
    

    A RegisterAsync metódus JSON-ként létrehoz egy egyszerű értesítési üzenetsablont, és regisztrál, hogy sablonértesítéseket fogadjon az értesítési központtól a Firebase regisztrációs jogkivonatával. Ez biztosítja, hogy az Azure Notification Hubról küldött értesítések a regisztrációs jogkivonat által képviselt eszközre irányulnak.

Leküldéses értesítés tartalmának megjelenítése

  1. Adjon hozzá egy új osztályt a Droid-projekthez , FirebaseNotificationServiceés győződjön meg arról, hogy a fájl tetején az alábbi using utasítások szerepelnek:

    using Android.App;
    using Android.Content;
    using Android.Media;
    using Android.Support.V7.App;
    using Android.Util;
    using Firebase.Messaging;
    
  2. Cserélje le az üres FirebaseNotificationService osztályt a következő kódra:

    [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());
        }
    }
    

    A OnMessageReceived metódus, amely akkor lesz meghívva, amikor egy alkalmazás értesítést kap az FCM-től, kinyeri az üzenet tartalmát, és meghívja a metódust SendNotification . Ez a módszer az üzenet tartalmát helyi értesítéssé alakítja, amely az alkalmazás futása közben indul el, és az értesítési területen megjelenik az értesítés.

Most már készen áll a leküldéses értesítések tesztelésére az Android-eszközön vagy az emulátoron futó alkalmazásban.

Leküldéses értesítések tesztelése Android-alkalmazásban

Az első két lépésre csak akkor van szükség, ha emulátoron tesztel.

  1. Győződjön meg arról, hogy olyan eszközön vagy emulátoron hajtja végre az üzembe helyezést vagy végez hibakeresést, amely a Google Play Services szolgáltatással van konfigurálva. Ezt úgy ellenőrizheti, hogy a Play-alkalmazások telepítve vannak-e az eszközön vagy az emulátoron.
  2. Google-fiók hozzáadása az Android-eszközhöz az Alkalmazások>beállításai>fiók hozzáadása elemre kattintva. Ezután az utasításokat követve vegyen fel egy meglévő Google-fiókot az eszközre, vagy hozzon létre egy újat.
  3. A Visual Studióban vagy a Xamarin Studióban kattintson a jobb gombbal a Droid projektre, és válassza a Beállítás indítási projektként parancsot.
  4. Kattintson a Futtatás gombra a projekt létrehozásához, és indítsa el az alkalmazást androidos eszközén vagy emulátorán.
  5. Az alkalmazásban írjon be egy feladatot, majd kattintson a plusz (+) ikonra.
  6. Ellenőrizze, hogy egy elem hozzáadásakor értesítés érkezik-e.

Az iOS-projekt konfigurálása és futtatása (nem kötelező)

Ez a szakasz az iOS-eszközökhöz készült Xamarin iOS-projekt futtatására vonatkozik. Ezt a szakaszt kihagyhatja, ha nem iOS-eszközökkel dolgozik.

A tanúsítvány-aláírási kérelemfájl létrehozása

Az Apple Push Notification Service (APN-ek) tanúsítványokkal hitelesítik a leküldéses értesítéseket. Kövesse ezeket az utasításokat az értesítések küldéséhez és fogadásához szükséges leküldéses tanúsítvány létrehozásához. További információért lásd az Apple Push Notification szolgáltatás hivatalos dokumentációját.

Hozza létre a tanúsítvány-aláírási kérelem (CSR) fájlt, amelyet az Apple egy aláírt leküldéses tanúsítvány létrehozásához használ.

  1. A Mac gépén futtassa a Kulcskarika hozzáférés alkalmazást. Megnyitható a Utilities mappából vagy a Launchpad Másik mappájából.

  2. Válassza a Kulcskarika-hozzáférés lehetőséget, bontsa ki a Tanúsítványsegédet, majd válassza a Tanúsítvány kérése hitelesítésszolgáltatótól lehetőséget.

    Új tanúsítvány kérése a Keychain Access használatával

    Megjegyzés

    Alapértelmezés szerint a Keychain Access kiválasztja a lista első elemét. Ez akkor lehet probléma, ha a Tanúsítványok kategóriában van, és az Apple Worldwide Developer Relations hitelesítésszolgáltató nem az első elem a listában. A CSR (tanúsítvány-aláírási kérelem) létrehozása előtt győződjön meg arról, hogy rendelkezik egy nem kulcselemként szolgáló tárggyal, vagy hogy ki van választva az Apple Worldwide Developer Relations Certification Authority kulcs.

  3. Válassza ki a felhasználói e-mail-címét, adja meg a Közös név értékét, győződjön meg arról, hogy a Lemezre mentett értéket adja meg, majd válassza a Folytatás lehetőséget. Hagyja CA e-mail-cím üresen, mert nincs rá szükség.

    Szükséges tanúsítványadatok

  4. Adja meg a CSR-fájl nevét a Mentés másként mezőben, válassza ki a Hol mezőben a helyet, majd kattintson a Mentés gombra.

    Válasszon egy fájlnevet a tanúsítványhoz

    Ez a művelet a CSR-fájlt a kijelölt helyre menti. Az alapértelmezett hely az Asztal. Jegyezze meg a fájlhoz választott helyet.

Ezután regisztrálja az alkalmazást az Apple-ben, engedélyezze a leküldéses értesítéseket, és töltse fel az exportált CSR-t leküldéses tanúsítvány létrehozásához.

Regisztrálja az alkalmazását a leküldéses értesítésekhez

Ha leküldéses értesítéseket szeretne küldeni egy iOS-alkalmazásnak, regisztrálja az alkalmazást az Apple-ben, és regisztráljon leküldéses értesítésekre is.

  1. Ha még nem regisztrálta az alkalmazását, keresse fel az Apple Developer Center iOS Provisioning Portalját. Jelentkezzen be a portálra az Apple ID azonosítójával, és válassza az Azonosítók lehetőséget. Ezután válassza ki + az új alkalmazás regisztrálását.

    iOS Kiépítő Portál App ID-k lapja

  2. Az „Új azonosító regisztrálása” képernyőn válassza az Alkalmazásazonosítók választógombot. Ezután válassza a Folytatás elemet.

    Új azonosító regisztrálása az iOS kiépítési portálon

  3. Frissítse a következő három értéket az új alkalmazáshoz, majd válassza a Folytatás lehetőséget:

    • Leírás: Írja be az alkalmazás leíró nevét.

    • Csomagazonosító: Adja meg a Szervezeti azonosító.Terméknév űrlap csomagazonosítóját az alkalmazásterjesztési útmutatóban leírtak szerint. A szervezetazonosító és a terméknév értékének meg kell egyeznie az Xcode-projekt létrehozásakor használt szervezeti azonosítóval és terméknévvel. Az alábbi képernyőképen a NotificationHubs-érték lesz a szervezet azonosítója, a GetStarted érték pedig a terméknév. Győződjön meg arról, hogy a Csomagazonosító érték megegyezik az Xcode-projektben lévő értékkel, hogy az Xcode a megfelelő közzétételi profilt használja.

      iOS Provisioning Portal alkalmazásazonosító regisztrációs oldal

    • Leküldéses értesítések: Ellenőrizze a Leküldéses értesítések lehetőséget a Képességek szakaszban.

      Űrlap új alkalmazásazonosító regisztrálásához

      Ez a művelet létrehozza az alkalmazásazonosítót, és kéri, hogy erősítse meg az információkat. Válassza a Folytatás lehetőséget, majd a Regisztráció elemet az új alkalmazásazonosító megerősítéséhez.

      Új alkalmazásazonosító megerősítése

      A Regisztráció lehetőség kiválasztása után az új alkalmazásazonosító sorelemként jelenik meg a Tanúsítványok, azonosítók és profilok lapon.

  4. A Tanúsítványok, azonosítók & profilok lap Azonosítók területén keresse meg az imént létrehozott alkalmazásazonosító sorelemet, és válassza ki annak sorát az Alkalmazásazonosító konfigurációjának szerkesztése képernyő megjelenítéséhez.

Tanúsítvány létrehozása a Notification Hubshoz

Tanúsítvány szükséges ahhoz, hogy az értesítési központ működjön az APNS-sel. Ez kétféleképpen végezhető el:

  1. Hozzon létre egy .p12-t , amely közvetlenül a Notification Hubra tölthető fel.
  2. Hozzon létre egy .p8-at , amely a jogkivonatalapú hitelesítéshez (az újabb megközelítéshez) használható.

Az újabb megközelítés számos előnnyel rendelkezik (a tanúsítványok használatával szemben) az APNS tokenalapú (HTTP/2) hitelesítésében dokumentált módon. A lépések azonban mindkét megközelítés esetében meg lettek adva.

1. LEHETŐSÉG: Közvetlenül a Notification Hubra feltölthető .p12 leküldéses tanúsítvány létrehozása

  1. Görgessen le a kijelölt Push értesítések lehetőséghez, majd válassza a Konfigurálás gombot a tanúsítvány létrehozásához.

    Alkalmazásazonosító lap szerkesztése

  2. Megjelenik az Apple Push Notification szolgáltatás SSL-tanúsítványainak ablaka . Válassza a Tanúsítvány létrehozása gombot a Fejlesztési SSL-tanúsítvány szakasz alatt.

    Tanúsítvány létrehozása alkalmazásazonosítóhoz gomb

    Megjelenik az Új tanúsítvány létrehozása képernyő.

    Megjegyzés

    Ez az oktatóprogram fejlesztési tanúsítványt használ. Ugyanez a folyamat használatos a termelési tanúsítvány regisztrálásához is. Csak győződjön meg arról, hogy ugyanazt a tanúsítványtípust használja az értesítések küldésekor.

  3. Válassza a Fájl kiválasztása lehetőséget, keresse meg azt a helyet, ahová az első feladatból mentette a CSR-fájlt, majd a betöltéshez kattintson duplán a tanúsítvány nevére. Ezután válassza a Folytatás elemet.

  4. Miután a portál létrehozta a tanúsítványt, válassza a Letöltés gombot. Mentse a tanúsítványt, és jegyezze meg a mentés helyét.

    Létrehozott tanúsítvány letöltési lapja

    A rendszer letölti és menti a tanúsítványt a számítógépre a Letöltések mappában.

    Tanúsítványfájl megkeresése a Letöltések mappában

    Megjegyzés

    Alapértelmezés szerint a letöltött fejlesztési tanúsítvány neve aps_development.cer.

  5. Kattintson duplán a letöltött aps_development.cer leküldéses tanúsítványra. Ez a művelet telepíti az új tanúsítványt a kulcskarikán, ahogy az az alábbi képen is látható:

    Kulcskarika-hozzáférési tanúsítványok listája új tanúsítvánnyal

    Megjegyzés

    Bár a tanúsítványban szereplő név eltérő lehet, az Apple Development iOS Push Services előtagja lesz.

  6. A kulcslánc-hozzáférési oldalon kattintson a jobb egérgombbal az új leküldéses tanúsítványra, melyet a Certificates (Tanúsítványok) kategóriában létrehozott. Válassza az Exportálás lehetőséget, nevezze el a fájlt, válassza a .p12 formátumot, majd válassza a Mentés lehetőséget.

    Tanúsítvány exportálása p12 formátumban

    Dönthet úgy, hogy jelszóval védi a tanúsítványt, de ez nem kötelező. Ha meg szeretné kerülni a jelszó létrehozását, kattintson az OK gombra . Jegyezze fel az exportált .p12 tanúsítvány nevét és helyét. ApN-ekkel történő hitelesítés engedélyezésére szolgálnak.

    Megjegyzés

    Előfordulhat, hogy a .p12 fájl neve és helye eltér az oktatóanyagban láthatótól.

2. LEHETŐSÉG: Jogkivonatalapú hitelesítéshez használható .p8-tanúsítvány létrehozása

  1. Jegyezze fel a következő részleteket:

    • Alkalmazásazonosító-előtag (ez egy csapatazonosító)
    • Csomagazonosító
  2. Lépjen vissza a Tanúsítványok, azonosítók és profilok oldalra, majd kattintson a Kulcsok elemre.

    Megjegyzés

    Ha már rendelkezik az APNS-hez konfigurált kulccsal, használhatja újra a .p8 tanúsítványt, amelyet közvetlenül a létrehozása után töltött le. Ha igen, figyelmen kívül hagyhatja a 35. lépést.

  3. Kattintson a + gombra (vagy a Kulcs létrehozása gombra) egy új kulcs létrehozásához.

  4. Adjon meg egy megfelelő kulcsnévértéket , majd ellenőrizze az Apple Push Notifications szolgáltatás (APNs) beállítását, majd kattintson a Folytatás gombra, majd a következő képernyőn a Regisztráció elemre.

  5. Kattintson a Letöltés gombra, majd helyezze át a .p8 fájlt ( AuthKey_ előtaggal) egy biztonságos helyi könyvtárba, majd kattintson a Kész gombra.

    Megjegyzés

    Ügyeljen arra, hogy a .p8 fájl biztonságos helyen maradjon (és mentsen biztonsági másolatot). A kulcs letöltése után nem tölthető le újra a kiszolgálópéldány eltávolításakor.

  6. A Kulcsok területen kattintson az imént létrehozott kulcsra (vagy egy meglévő kulcsra, ha ezt választotta).

  7. Jegyezze fel a kulcsazonosító értékét.

  8. Nyissa meg a .p8-tanúsítványt egy tetszőleges alkalmazásban, például a Visual Studio Code-ban , majd jegyezze fel a kulcs értékét. Ez az érték -----BEGIN PRIVATE KEY----- és -----END PRIVATE KEY----- között található.

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

    Megjegyzés

    Ez az a tokenérték , amelyet később a Notification Hub konfigurálásához használunk.

A lépések végén a következő információkkal kell rendelkeznie az értesítési központ apNs-adatokkal való konfigurálásához:

  • Csapatazonosító (lásd: 1. lépés)
  • Csomagazonosító (lásd: 1. lépés)
  • Kulcsazonosító (lásd a 7. lépést)
  • Jogkivonat értéke , azaz a .p8 kulcs értéke (lásd a 8. lépést)

Kiépítési profil létrehozása az alkalmazáshoz

  1. Térjen vissza az iOS kiépítési portálra, válassza a Tanúsítványok, Azonosítók és profilok lehetőséget, válassza a Profilok lehetőséget a bal oldali menüből, majd válasszon + egy új profil létrehozásához. Megjelenik az Új kiépítési profil regisztrálása képernyő.

  2. A kiépítési profil típusaként válassza az iOS-alkalmazásfejlesztést a Fejlesztés területen, majd válassza a Folytatás lehetőséget.

    Felügyeleti profilok listája

  3. Ezután válassza ki az alkalmazásazonosító legördülő listából létrehozott alkalmazásazonosítót , majd válassza a Folytatás lehetőséget.

    Válassza ki az alkalmazásazonosítót

  4. A Tanúsítványok kiválasztása ablakban válassza ki a kódaláíráshoz használt fejlesztési tanúsítványt, és válassza a Folytatás lehetőséget. Ez a tanúsítvány nem az a push tanúsítvány, amelyet létrehoztál. Ha nem létezik, létre kell hozni. Ha létezik tanúsítvány, ugorjon a következő lépésre. Fejlesztési tanúsítvány létrehozása, ha nem létezik:

    1. Ha azt látja , hogy nem érhetők el tanúsítványok, válassza a Tanúsítvány létrehozása lehetőséget.
    2. A Szoftver szakaszban válassza az Apple Development lehetőséget. Ezután válassza a Folytatás elemet.
    3. Az Új tanúsítvány létrehozása képernyőn válassza a Fájl kiválasztása lehetőséget.
    4. Keresse meg a korábban létrehozott tanúsítvány-aláírási kérelem tanúsítványát, jelölje ki, majd válassza a Megnyitás lehetőséget.
    5. Válassza a Folytatáslehetőséget.
    6. Töltse le a fejlesztési tanúsítványt, és jegyezze meg a mentés helyét.
  5. Térjen vissza a Tanúsítványok, Azonosítók &profilok lapra, válassza a Bal oldali menü Profilok elemét, majd válasszon + új profil létrehozásához. Megjelenik az Új kiépítési profil regisztrálása képernyő.

  6. A Tanúsítványok kiválasztása ablakban válassza ki az imént létrehozott fejlesztési tanúsítványt. Ezután válassza a Folytatás elemet.

  7. Ezután válassza ki a teszteléshez használni kívánt eszközöket, majd válassza a Folytatás lehetőséget.

  8. Végül válassza ki a profil nevét a Kiépítési profil neve területen, majd válassza a Létrehozás lehetőséget.

    Válasszon hozzáférési profil nevet

  9. Az új kiépítési profil létrehozásakor válassza a Letöltés lehetőséget. Jegyezze meg a mentés helyét.

  10. Keresse meg a provisioning profil helyét, majd kattintson rá duplán, hogy telepítse azt az Xcode fejlesztői gépére.

Értesítési központ létrehozása

Ebben a szakaszban létrehoz egy értesítési központot, és apN-ekkel konfigurálja a hitelesítést a .p12 leküldéses tanúsítvány vagy a tokenalapú hitelesítés használatával. Ha már létrehozott értesítési központot szeretne használni, ugorjon az 5. lépésre.

  1. Jelentkezzen be a Azure portalra.

  2. Válassza a bal oldali menü Minden szolgáltatás elemét, majd a Mobil szakaszban válassza a Notification Hubs lehetőséget. A szolgáltatás neve melletti csillag ikonnal felveheti a szolgáltatást a kedvencek szakaszba a bal oldali menüben. Miután hozzáadta a Notification Hubsot a KEDVENCekhez, válassza ki a bal oldali menüben.

    Azure Portal – a Notification Hubs kiválasztása

  3. A Notification Hubs lapon válassza a Hozzáadás lehetőséget az eszköztáron.

    Notification Hubs – Eszköztár hozzáadása gomb

  4. A Notification Hub lapon hajtsa végre a következő lépéseket:

    1. Adjon meg egy nevet a Notification Hubban.

    2. Adjon meg egy nevet az Új névtér létrehozása mezőben. A névtér egy vagy több központot tartalmaz.

    3. Válasszon egy értéket a Hely legördülő listából. Ez az érték határozza meg azt a helyet, ahol létre szeretné hozni a központot.

    4. Válasszon ki egy meglévő erőforráscsoportot az Erőforráscsoportban, vagy hozzon létre egy nevet egy új erőforráscsoportnak.

    5. Válassza a Create gombot.

      Azure Portal – értesítési központ tulajdonságainak beállítása

  5. Válassza az Értesítések (a harang ikon), majd az Erőforrás megnyitása lehetőséget. A Notification Hubs lapon is frissítheti a listát, és kiválaszthatja a központot.

    Azure Portal – értesítések –> Ugrás az erőforrásra

  6. A listáról válassza a Hozzáférési szabályzatok lehetőséget. Vegye figyelembe, hogy a két kapcsolati karakterlánc elérhető. Később szüksége lesz rájuk a leküldéses értesítések kezeléséhez.

    Fontos

    ** Ne használja az alkalmazásában a DefaultFullSharedAccessSignature házirendet. Ezt kizárólag a háttérrendszerben szabad használni.

    Azure Portal – Értesítési Hub kapcsolati karakterláncai

Az értesítési központ konfigurálása APN-adatokkal

A Notification Services területen válassza az Apple (APNS) lehetőséget, majd kövesse a megfelelő lépéseket a Korábban a Tanúsítvány létrehozása a Notification Hubshoz szakaszban kiválasztott módszer alapján.

Megjegyzés

Csak akkor használja a Production for Application Mód, ha push értesítéseket szeretne küldeni azoknak a felhasználóknak, akik az áruházból vásárolták meg az alkalmazását.

1. LEHETŐSÉG: .p12 leküldéses tanúsítvány használata

  1. Válassza a Tanúsítvány elemet.

  2. Válassza a fájl ikont.

  3. Válassza ki a korábban exportált .p12 fájlt, majd válassza a Megnyitás lehetőséget.

  4. Ha szükséges, adja meg a megfelelő jelszót.

  5. Válassza a Védőfal módot.

    APN-tanúsítvány konfigurálása az Azure Portalon

  6. Válassza az Mentésgombot.

2. LEHETŐSÉG: Tokenalapú hitelesítés használata

  1. Válassza a Token lehetőséget.

  2. Adja meg a korábban beszerzett alábbi értékeket:

    • kulcsazonosító
    • Csomagazonosító
    • Csapatazonosító
    • Jogkivonat
  3. Válaszd a Sandbox lehetőséget

  4. Válassza az Mentésgombot.

Most már konfigurálta az értesítési központot az APNs-sel. A kapcsolati karakterláncokkal regisztrálhatja az alkalmazást, és küldhet értesítéseket.

Az APNS értesítési központjának konfigurálása

  1. Mac gépén indítsa el Keychain Access. A bal oldali navigációs sáv Kategóriaalatt nyissa meg Saját tanúsítványok. Keresse meg az előző szakaszban letöltött SSL-tanúsítványt, majd tegye közzé annak tartalmát. Csak a tanúsítványt jelölje ki (ne válassza ki a titkos kulcsot). Ezután exportáld.
  2. Az Azure portálon válassza az Összes tallózása>App Services lehetőséget. Ezután válassza ki a Mobile Apps háttéralkalmazásait.
  3. A Beállításokterületen válassza App Service Pushlehetőséget. Ezután válassza ki az értesítési központ nevét.
  4. Lépjen be a Apple Push Notification Services>tanúsítvány feltöltése pontra. Töltse fel a .p12 fájlt, és válassza ki a megfelelő Üzemmódot (attól függően, hogy a korábbi ügyfél SSL-tanúsítványa éles környezethez vagy tesztkörnyezethez tartozik). Mentse a módosításokat.

A szolgáltatás most már úgy van konfigurálva, hogy leküldéses értesítések fogadására alkalmas legyen iOS-en.

Ezután konfigurálja az iOS-projektbeállítást a Xamarin Studióban vagy a Visual Studióban.

Az iOS-projekt konfigurálása a Xamarin Studióban

  1. A Xamarin.Studióban nyissa meg az Info.plist-t, és frissítse a csomagazonosítót azzal a csomagazonosítóval, amelyet korábban létrehozott az új alkalmazásazonosítójával.

  2. Görgessen le a háttérmódok. Válassza a Háttérmódok engedélyezése jelölőnégyzetet, valamint a Távoli értesítések mezőt.

  3. Kattintson duplán a projektre a Megoldás panelen Projektbeállításokmegnyitásához.

  4. A Buildrészben válassza az iOS Aláírási Köteg-t, majd válassza ki a projekt számára most beállított azonosítót és előállítási profilt.

    Ez biztosítja, hogy a projekt az új profilt használja a kódaláíráshoz. A hivatalos Xamarin-eszközkiépítési dokumentációért lásd Xamarin-eszközkiépítési.

Az iOS-projekt konfigurálása a Visual Studióban

  1. A Visual Studióban kattintson a jobb gombbal a projektre, majd kattintson a Tulajdonságokparancsra.

  2. A tulajdonságok lapján kattintson az iOS-alkalmazás fülre, és frissítse a Azonosító a korábban létrehozott azonosítóval.

  3. Az iOS csomag aláírása lapon válassza ki a projekthez beállított megfelelő identitást és a kiépítési profilt.

    Ez biztosítja, hogy a projekt az új profilt használja a kódaláíráshoz. A hivatalos Xamarin-eszközkiépítési dokumentációért lásd Xamarin-eszközkiépítési.

  4. Kattintson duplán az Info.plist elemre a megnyitásához, majd engedélyezze RemoteNotifications a Háttérmódokalatt.

Leküldéses értesítések hozzáadása az iOS-alkalmazáshoz

  1. Az iOS-projektben nyissa meg a AppDelegate.cs, és adja hozzá a következő utasítást a kódfájl elejéhez.

    using Newtonsoft.Json.Linq;
    
  2. Az AppDelegate osztályban adjon hozzá egy felülbírálást a RegisteredForRemoteNotifications eseményhez az értesítések regisztrálásához:

    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. Az AppDelegate-ben adja hozzá a következő felülbírálást a DidReceiveRemoteNotification eseménykezelőhöz is:

    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();
        }
    }
    

    Ez a metódus kezeli a bejövő értesítéseket az alkalmazás futtatása közben.

  4. Az AppDelegate osztályban adja hozzá a következő kódot a FinishedLaunching metódushoz :

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

    Ez lehetővé teszi a távoli értesítések és kérések leküldéses regisztrációjának támogatását.

Az alkalmazás most frissül, hogy támogassa a leküldéses értesítéseket.

Leküldéses értesítések tesztelése az iOS-alkalmazásban

  1. Kattintson a jobb gombbal az iOS-projektre, és válassza a Beállítás kezdőprojektként parancsot.

  2. A Visual Studióban a Futtatás gomb vagy az F5 billentyű lenyomásával hozza létre a projektet, és indítsa el az alkalmazást egy iOS-eszközön. Ezután kattintson az OK gombra a leküldéses értesítések elfogadásához.

    Megjegyzés

    Kifejezetten el kell fogadnia a leküldéses értesítéseket az alkalmazásból. Ez a kérés csak az alkalmazás első futtatásakor fordul elő.

  3. Az alkalmazásban írjon be egy feladatot, majd kattintson a plusz (+) ikonra.

  4. Ellenőrizze, hogy érkezett-e értesítés, majd az OK gombra kattintva zárja be az értesítést.

Windows-projektek konfigurálása és futtatása (nem kötelező)

Ez a szakasz a Windows-eszközökhöz készült Xamarin.Forms WinApp és WinPhone81 projektek futtatására vonatkozik. Ezek a lépések támogatják az univerzális Windows Platform (UWP) projekteket is. Ezt a szakaszt kihagyhatja, ha nem windowsos eszközökkel dolgozik.

Windows-alkalmazás regisztrálása leküldéses értesítésekhez a Windows Notification Service-ben (WNS)

  1. A Visual Studio Solution Explorerben kattintson a jobb gombbal a Windows Áruházbeli alkalmazásprojektre. Ezután válassza az Áruház>Alkalmazás társítása az Áruházzal lehetőséget.

    Alkalmazás társítása a Windows Áruházzal

  2. A varázslóban válassza a Tovább gombot. Ezután jelentkezzen be Microsoft-fiókjával. Az Új alkalmazásnév lefoglalása mezőbe írja be az alkalmazás nevét, majd válassza a Foglalás lehetőséget.

  3. Az alkalmazásregisztráció sikeres létrehozása után válassza ki az új alkalmazásnevet. Válassza a Tovább, majd a Társítás lehetőséget. Ez a folyamat hozzáadja a szükséges Windows Áruházbeli regisztrációs adatokat az alkalmazásjegyzékhez.

  4. Ismételje meg az 1. és a 3. lépést a Windows Phone Áruházbeli alkalmazásprojekt esetében ugyanazzal a regisztrációval, amelyet korábban a Windows Áruházbeli alkalmazáshoz hozott létre.

  5. Nyissa meg a Windows Fejlesztői központot, majd jelentkezzen be Microsoft-fiókjával. A Saját alkalmazások területen válassza ki az új alkalmazásregisztrációt. Ezután bontsa ki a Szolgáltatások>leküldéses értesítések menüpontot.

  6. A Leküldéses értesítések lapon a Windows Leküldéses értesítési szolgáltatások (WNS) és a Microsoft Azure Mobile Apps területén válassza a Live Services webhelyet. Jegyezze fel a csomag biztonsági azonosítójának értékeit és az Application Secretaktuális értékét.

    Alkalmazásbeállítás a fejlesztői központban

    Fontos

    Az alkalmazás titkos kódja és a csomag biztonsági azonosítója fontos biztonsági hitelesítő adatok. Ezeket az értékeket ne ossza meg senkivel, és ne ossza el őket az alkalmazással.

Az értesítési központ konfigurálása a WNS-hez

  1. Az Azure portálon válassza az Összes tallózása>App Services lehetőséget. Ezután válassza ki a Mobile Apps háttéralkalmazásait. A Beállításokterületen válassza App Service Pushlehetőséget. Ezután válassza ki az értesítési központ nevét.

  2. Lépjen be a(z) Windows (WNS)-be. Ezután adja meg a biztonsági kulcsot ( titkos ügyfélkód) és a csomag SID-t, amelyeket a Live Services webhelyről szerzett be. Ezután válassza a Mentéslehetőséget.

    WNS-kulcs beállítása a portálon

A háttérrendszer mostantól konfigurálva van, hogy WNS-t használjon értesítések küldésére.

Leküldéses értesítések hozzáadása a Windows-alkalmazáshoz

  1. A Visual Studióban nyissa meg a App.xaml.cs egy Windows-projektben, és adja hozzá a következő utasításokat.

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

    Cserélje le a <your_TodoItemManager_portable_class_namespace> elemet a hordozható projekt névterére, amely tartalmazza a TodoItemManager osztályt.

  2. A App.xaml.cs adja hozzá a következő InitNotificationsAsync metódust :

    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);
    }
    

    Ez a módszer megkapja a push értesítési csatornát, és regisztrál egy sablont, hogy sablonértesítéseket kapjon az értesítési hub-tól. Az üzenetparamot támogató sablonértesítést a rendszer az ügyfélnek küldi el.

  3. A App.xaml.cs frissítse az OnLaunched eseménykezelő metódusdefinícióját a async módosító hozzáadásával. Ezután adja hozzá a következő kódsort a metódus végén:

    await InitNotificationsAsync();
    

    Ez biztosítja, hogy a leküldéses értesítések regisztrációja az alkalmazás minden indításakor létrejön vagy frissüljön. Fontos, hogy ezt megtegyük, hogy garantáljuk a WNS leküldési csatorna folyamatos aktivitását.

  4. A Visual Studio Megoldáskezelőjében nyissa meg a Package.appxmanifest fájlt, és állítsa a Használja a toast értesítéseket beállítást Igen értékre az Értesítések alatt.

  5. Hozza létre az alkalmazást, és ellenőrizze, hogy nincsenek-e hibák. Az ügyfélalkalmazásnak mostantól regisztrálnia kell a Mobile Apps háttérrendszerében található sablonértesítésekre. Ismételje meg ezt a szakaszt a megoldás minden Windows-projektjéhez.

Leküldéses értesítések tesztelése a Windows-alkalmazásban

  1. A Visual Studióban kattintson a jobb gombbal egy Windows-projektre, és kattintson a Beállítás indítási projektként parancsra.
  2. A Projekt létrehozásához és az alkalmazás elindításához nyomja le a Futtatás gombot.
  3. Az alkalmazásban írja be az új teendőlista nevét, majd a plusz (+) ikonra kattintva adja hozzá.
  4. Ellenőrizze, hogy az elem hozzáadásakor értesítés érkezik-e.

Következő lépések

További információ a leküldéses értesítésekről:

A következő oktatóanyagok egyikét is folytathatja: