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
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, mindössze néhány perc alatt létrehozhat egy ingyenes Azure-fiókot a virtuális gép létrehozásának megkezdése előtt.
- Windows rendszeren Visual Studio és Xamarin, vagy OS X rendszeren Visual Studio for Mac .
- Aktív Google-fiók
Egy Firebase-projekt létrehozása és a Firebase Cloud Messaging engedélyezése
Jelentkezzen be a Firebase konzoljába. Hozzon létre egy új Firebase-projektet, ha nem rendelkezik még ilyennel.
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.
Az Android-alkalmazáshoz a Firebase hozzáadása lapon hajtsa végre a következő lépéseket:
Az Android-csomag neveként adja meg a csomag nevét. Például:
tutorials.tutoria1.xamarinfcmapp
Válassza az Alkalmazás regisztrálása lehetőséget.
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.
Válassza a Tovább lehetőséget.
Válassza a Lépés kihagyása lehetőséget.
A Firebase konzolján kattintson a projektjéhez tartozó fogaskerékre. Ezután kattintson a Project Settings (Projektbeállítások) elemre.
Ha még nem töltötte le a google-services.json fájlt, ezen a lapon töltheti le.
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.
Értesítési központ létrehozása
Jelentkezzen be az Azure Portalra.
Válassza az Összes szolgáltatás lehetőséget a bal oldali menüben.
Í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 Notification Hubs lapon válassza a Létrehozás lehetőséget az eszköztáron.
Az Értesítési központ lap Alapismeretek lapján hajtsa végre a következő lépéseket:
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.
Adja meg az új névtér egyedi nevét a Névtér részletei mezőben.
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.
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.
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.
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.
Válassza a Létrehozás lehetőséget.
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
Válassza a Google (GCM/FCM)/ lehetőséget a bal oldali menü Gépház szakaszában.
Adja meg a Google Firebase konzolról feljegyzett kiszolgálókulcsot .
Válassza az eszköztár Save (Mentés) elemét.
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.
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:
Bontsa ki a Telepített, a Visual C# elemet, majd kattintson az Android elemre.
Válassza ki az Android-alkalmazást (Xamarin) a listából.
Adjon meg a projekt nevét.
Válassza ki a projekt helyét.
Kattintson az OK gombra
Az Új Android-alkalmazás párbeszédpanelen válassza az Üres alkalmazás lehetőséget, majd az OK gombot.
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.
Á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:
- Kattintson a jobb gombbal a projektre, és válassza a Tulajdonságok lehetőséget.
- Az Android-verziót használó Fordítás: (Cél keretrendszer) mezőben válassza az Android 10.0 lehetőséget.
- Válassza az Igen lehetőséget az üzenetmezőben a cél keretrendszer módosításának folytatásához.
Adja hozzá a szükséges NuGet-csomagokat a projekthez az alábbi lépések végrehajtásával:
Kattintson a jobb gombbal a projektre, és válassza a Manage Nuget Packages… (NuGet-csomagok kezelése) lehetőséget.
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.
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.
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.
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
Másolja a
google-services.json
Google Firebase-konzolról letöltött fájlt a projektmappába.Hozzáadás
google-services.json
a projekthez.Válassza ki
google-services.json
a Megoldáskezelő ablakban.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.
Értesítési központok beállítása a projektben
Regisztráció a Firebase Cloud Messagingben
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>
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"/>
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.
- Figyelési kapcsolati sztring: Az Azure Portal irányítópultján válassza a Kapcsolati sztringek megtekintése elemet. Másolja ki az
A Megoldáskezelő ablakban kattintson a jobb gombbal a projektre, válassza a Hozzáadás, majd az Osztály lehetőséget.
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>"; }
Adja hozzá az alábbi utasításokat a következőhöz
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
Adja hozzá a következő tulajdonságokat a MainActivity osztályhoz:
internal static readonly string CHANNEL_ID = "my_notification_channel";
Adja
MainActivity.cs
hozzá 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);
Adjon hozzá egy, a projekthez elnevezett
AzureListener
osztályt.Adja hozzá az alábbi utasításokat a következőhöz
AzureListener.cs
:using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
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őtINotificationListener
:public class AzureListener : Java.Lang.Object, INotificationListener
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()); }
Hozza létre a projektet.
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.
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: