Oktatóanyag: Leküldéses értesítések küldése Xamarin.Android-alkalmazásokba a Notification Hubs használatával

Áttekintés

Feljegyzés

A Firebase Cloud Messaging elavulásával és a migrálással kapcsolatos lépésekről a Google Firebase Cloud Messaging migrálásával kapcsolatos információk találhatók.

Ez az oktatóanyag azt mutatja be, hogy hogyan használható az Azure Notification Hubs leküldéses értesítések küldésére Xamarin.Android-alkalmazásokba. Létre fog hozni egy üres Xamarin.Android-alkalmazást, amely leküldéses értesítéseket fogad a Firebase Cloud Messaging (FCM) használatával. Az értesítési központ használatával fog leküldéses értesítéseket küldeni az alkalmazást futtató összes eszközre. A befejezett kód a minta NotificationHubs alkalmazásban érhető el.

Ebben az oktatóanyagban a következő lépéseket hajtja végre:

  • Egy Firebase-projekt létrehozása és a Firebase Cloud Messaging engedélyezése
  • Értesítési központ létrehozása
  • Egy Xamarin.Android-alkalmazás létrehozása és csatlakoztatása az értesítési központhoz
  • Tesztértesítések küldése az Azure Portalról

Előfeltételek

Egy Firebase-projekt létrehozása és a Firebase Cloud Messaging 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.

    Add Firebase to your Android app

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

    1. Az Android-csomag neveként adja meg a csomag nevét. Például: tutorials.tutoria1.xamarinfcmapp

      Specify the package name

    2. Válassza az Alkalmazás regisztrálása lehetőséget.

    3. Válassza a Letöltés google-services.json lehetőséget. Ezután mentse a fájlt a projekt mappájába, és válassza a Tovább gombot. Ha még nem hozta létre a Visual Studio-projektet, ezt a lépést a projekt létrehozása után teheti meg.

      Download google-services.json

    4. Válassza a Tovább lehetőséget.

    5. Válassza a Lépés kihagyása lehetőséget.

      Skip the last step

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

    Select Project Settings

  5. Ha még nem töltötte le a google-services.json fájlt, ezen a lapon töltheti le.

    Download google-services.json from the General tab

  6. Váltson a felső Cloud Messaging lapra. Másolja és mentse a kiszolgálókulcsot későbbi használatra. Ezzel az értékkel konfigurálhatja az értesítési központot.

    Copy server key

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

  1. Jelentkezzen be az Azure Portalra.

  2. Válassza az Összes szolgáltatás lehetőséget a bal oldali menüben. A screenshot showing select All Services for an existing namespace.

  3. Írja be a Notification Hubs kifejezést a Szűrőszolgáltatások szövegmezőbe. A szolgáltatás neve melletti csillag ikonnal felveheti a szolgáltatást a kedvencek szakaszba a bal oldali menüben. Válassza a Notification Hubs lehetőséget.

    A screenshot showing how to filter for notification hubs.

  4. A Notification Hubs lapon válassza a Létrehozás lehetőséget az eszköztáron.

    A screenshot showing how to create a new notification hub.

  5. Az Értesítési központ lap Alapismeretek lapján hajtsa végre a következő lépéseket:

    1. Az Előfizetésben válassza ki a használni kívánt Azure-előfizetés nevét, majd válasszon ki egy meglévő erőforráscsoportot, vagy hozzon létre egy újat.

    2. Adja meg az új névtér egyedi nevét a Névtér részletei mezőben.

    3. A névtér egy vagy több értesítési központot tartalmaz, ezért írja be a központ nevét a Notification Hub Részletei szakaszba.

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

      Screenshot showing notification hub details.

    5. Tekintse át a Rendelkezésre állási zónák lehetőséget. Ha olyan régiót választott, amely rendelkezésre állási zónákkal rendelkezik, a jelölőnégyzet alapértelmezés szerint be van jelölve. A rendelkezésre állási zónák fizetős funkciók, ezért további díjakat adnak hozzá a szinthez.

    6. Válasszon vészhelyreállítási lehetőséget: Nincs, Párosított helyreállítási régió vagy Rugalmas helyreállítási régió. Ha a Párosított helyreállítási régiót választja, megjelenik a feladatátvételi régió. Ha a rugalmas helyreállítási régiót választja, a legördülő listából választhat a helyreállítási régiók listájából.

      Screenshot showing availability zone details.

    7. Válassza a Létrehozás lehetőséget.

  6. Ha az üzembe helyezés befejeződött, válassza az Erőforrás megnyitása lehetőséget.

GCM/FCM-beállítások konfigurálása az értesítési központhoz

  1. Válassza a Google (GCM/FCM)/ lehetőséget a bal oldali menü Gépház szakaszában.

  2. Adja meg a Google Firebase konzolról feljegyzett kiszolgálókulcsot .

  3. Válassza az eszköztár Save (Mentés) elemét.

    Screenshot of Notification Hub in Azure Portal with Google G C M F C M option highlighted and outlined in red.

Az értesítési központ konfigurálva van az FCM-mel való együttműködésre, és rendelkezik a kapcsolati sztringekkel az alkalmazás regisztrálására értesítések fogadásához és leküldéses értesítések küldéséhez.

Xamarin.Android-alkalmazás létrehozása és csatlakoztatása az értesítési központhoz

Egy Visual Studio-projekt létrehozása és NuGet-csomagok hozzáadása

Feljegyzés

Az oktatóanyagban dokumentált lépések a Visual Studio 2017-hez tartoznak.

  1. A Visual Studióban nyissa meg a Fájl menüt, válassza az Új, majd a Project lehetőséget. Az Új projekt ablakban hajtsa végre az alábbi lépéseket:

    1. Bontsa ki a Telepített, a Visual C# elemet, majd kattintson az Android elemre.

    2. Válassza ki az Android-alkalmazást (Xamarin) a listából.

    3. Adjon meg a projekt nevét.

    4. Válassza ki a projekt helyét.

    5. Kattintson az OK gombra

      New Project dialog

  2. Az Új Android-alkalmazás párbeszédpanelen válassza az Üres alkalmazás lehetőséget, majd az OK gombot.

    Screenshot that highlights the Blank App template.

  3. A Solution Explorer (Megoldáskezelő) ablakában bontsa ki a Properties (Tulajdonságok) elemet, majd kattintson az AndroidManifest.xml fájlra. Frissítse a csomag nevét arra a csomagnévre, amelyet akkor adott meg, amikor hozzáadta a Firebase Cloud Messaginget a projekthez a Google Firebase konzolján.

    Package name in GCM

  4. Állítsa be a projekt cél Android-verzióját Android 10.0-ra az alábbi lépések végrehajtásával:

    1. Kattintson a jobb gombbal a projektre, és válassza a Tulajdonságok lehetőséget.
    2. Az Android-verziót használó Fordítás: (Cél keretrendszer) mezőben válassza az Android 10.0 lehetőséget.
    3. Válassza az Igen lehetőséget az üzenetmezőben a cél keretrendszer módosításának folytatásához.
  5. Adja hozzá a szükséges NuGet-csomagokat a projekthez az alábbi lépések végrehajtásával:

    1. Kattintson a jobb gombbal a projektre, és válassza a Manage Nuget Packages… (NuGet-csomagok kezelése) lehetőséget.

    2. Váltson a Telepített lapra, válassza a Xamarin.Android.Support.Design, majd a jobb oldali ablaktáblában a Frissítés lehetőséget a csomag legújabb verzióra való frissítéséhez.

    3. Váltson a Tallózás lapra. Keresse meg a Xamarin.GooglePlayServices.Base fájlt. A találatok listájában válassza a Xamarin.GooglePlayServices.Base elemet. Ezt követően válassza az Install (Telepítés) parancsot.

      Google Play Services NuGet

    4. A NuGet Package Manager (NuGet-csomagkezelő) ablakban keressen rá a Xamarin.Firebase.Messaging kifejezésre. A találatok listájában válassza a Xamarin.Firebase.Messaging elemet. Ezt követően válassza az Install (Telepítés) parancsot.

    5. Ezután keressen rá a Xamarin.Azure.NotificationHubs.Android kifejezésre. A találatok listájában válassza a Xamarin.Azure.NotificationHubs.Android elemet. Ezt követően válassza az Install (Telepítés) parancsot.

A Google-szolgáltatás JSON-fájljának hozzáadása

  1. Másolja a google-services.json Google Firebase-konzolról letöltött fájlt a projektmappába.

  2. Hozzáadás google-services.json a projekthez.

  3. Válassza ki google-services.json a Megoldáskezelő ablakban.

  4. A Properties (Tulajdonságok) panelen a Build Action (Felépítési művelet) számára állítsa be a GoogleServicesJson értéket. Ha nem látja a GoogleServicesJson műveletet, zárja be a Visual Studiót, indítsa el újra, nyissa meg újra a projektet, és próbálkozzon újból.

    GoogleServicesJson build action

Értesítési központok beállítása a projektben

Regisztráció a Firebase Cloud Messagingben

  1. Ha a Google Cloud Messaging szolgáltatásból a Firebase-be migrál, előfordulhat, hogy a projekt fájlja AndroidManifest.xml elavult GCM-konfigurációt tartalmaz, ami az értesítések duplikálását okozhatja. Szerkessze a fájlt, és távolítsa el a <application> szakaszon belüli alábbi sorokat, ha vannak ilyenek:

    <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>
    
  2. Adja hozzá a következő utasításokat az alkalmazáselem elé.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    
  3. Gyűjtse össze az alábbi információikat az Android-alkalmazásra és az értesítési központra vonatkozóan:

    • Figyelési kapcsolati sztring: Az Azure Portal irányítópultján válassza a Kapcsolati sztringek megtekintése elemet. Másolja ki az DefaultListenSharedAccessSignature érték kapcsolati sztring.
    • Központ neve: A központ neve az Azure Portal. Például: mynotificationhub2.
  4. A Megoldáskezelő ablakban kattintson a jobb gombbal a projektre, válassza a Hozzáadás, majd az Osztály lehetőséget.

  5. Hozzon létre egy osztályt Constants.cs a Xamarin-projekthez, és határozza meg a következő állandó értékeket az osztályban. A helyőrzőket cserélje le az értékekkel.

    public static class Constants
    {
        public const string ListenConnectionString = "<Listen connection string>";
        public const string NotificationHubName = "<hub name>";
    }
    
  6. Adja hozzá az alábbi utasításokat a következőhöz MainActivity.cs:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. Adja hozzá a következő tulajdonságokat a MainActivity osztályhoz:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. Adja MainActivity.cshozzá a következő kódot a következőhözbase.OnCreate(savedInstanceState)OnCreate:

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Adjon hozzá egy, a projekthez elnevezett AzureListener osztályt.

  10. Adja hozzá az alábbi utasításokat a következőhöz AzureListener.cs:

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. Adja hozzá a fenti osztálydeklarációt, és adja meg, hogy az osztály örökölje Java.Lang.Object és implementálja a következőt INotificationListener:

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. Adja hozzá a következő kódot az osztályon belül AzureListener a fogadott üzenetek feldolgozásához.

        public void OnPushNotificationReceived(Context context, INotificationMessage message)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
    
            var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID);
    
            notificationBuilder.SetContentTitle(message.Title)
                        .SetSmallIcon(Resource.Drawable.ic_launcher)
                        .SetContentText(message.Body)
                        .SetAutoCancel(true)
                        .SetShowWhen(false)
                        .SetContentIntent(pendingIntent);
    
            var notificationManager = NotificationManager.FromContext(this);
    
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    
  13. Hozza létre a projektet.

  14. Futtassa az alkalmazást az eszközén vagy a betöltött emulátoron.

Tesztértesítés küldése az Azure Portalról

Az Azure PortalTesztküldés lehetőségével tesztelheti az alkalmazásban az értesítések fogadását. A parancs egy leküldéses tesztértesítést küld az eszközre.

Azure portal - Test Send

A leküldéses értesítések küldése általában olyan háttérszolgáltatásokon keresztül történik egy kompatibilis kódtár használatával, mint a Mobile Services vagy az ASP.NET. Ha egy kódtár nem érhető el a háttérrendszerhez, a REST API-t közvetlenül is használhatja értesítési üzenetek küldéséhez.

Következő lépések

Ebben az oktatóanyagban szórásos értesítéseket küldött a háttérrendszerben regisztrált Android-eszközök mindegyikének. Ha szeretné megtudni, hogy hogyan küldhet leküldéses értesítéseket adott Android-eszközökre, lépjen tovább a következő oktatóanyagra: