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 gyors üzembe helyezé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 az összes 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ó: A .NET háttérkiszolgálóI SDK használata az Azure Mobile Appshez.
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
A Azure App Service Mobile Apps funkciója az Azure Notification Hubs használatával küld leküldéseket, így egy értesítési központot fog konfigurálni a mobilalkalmazáshoz.
A Azure Portal nyissa meg az App Servicest, majd válassza ki az alkalmazás háttérrendszerét. A Beállítások területen válassza a Leküldés lehetőséget.
Ha értesítési központ-erőforrást szeretne hozzáadni az alkalmazáshoz, válassza a Csatlakozás lehetőséget. Létrehozhat egy központot, vagy csatlakozhat egy meglévőhöz.
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 egy platformértesítő rendszerhez (PNS) csatlakozzon az eszközökre való leküldéshez.
A kiszolgálóprojekt frissítése leküldéses értesítések küldéséhez
Ebben a szakaszban frissíti 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 sablonfunkciója működteti, amely platformfüggetlen leküldéseket tesz lehetővé. A különböző ügyfelek sablonokkal vannak regisztrálva leküldéses értesítésekhez, és egyetlen univerzális leküldés minden ügyfélplatformra elérhető.
Válasszon az alábbi eljárások közül, amelyek megegyeznek a háttérprojekt típusával – .NET háttérrendszer vagy Node.js háttérrendszer.
.NET háttérprojekt
A Visual Studióban kattintson a jobb gombbal a kiszolgálóprojektre. Ezután válassza a Manage NuGet Packages (NuGet-csomagok kezelése) lehetőséget. Keressen rá a kifejezésre
Microsoft.Azure.NotificationHubs
, majd válassza a Telepítés lehetőséget. Ez a folyamat telepíti a Notification Hubs-kódtárat, amely értesítéseket küld a háttérrendszerből.A kiszolgálóprojektben nyissa meg a Controllers>TodoItemController.cs fájlt. 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;
A PostTodoItem metódusban adja hozzá a következő kódot az InsertAsync hí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.
Tegye közzé újra a kiszolgálóprojektet.
Node.js háttérprojekt
Állítsa be a háttérprojektet.
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 tartalmazza az item.text szöveget egy új elem beszúrásakor.
Amikor szerkessze a fájlt a helyi számítógépen, tegye közzé ú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 projektjének leküldéses értesítések engedélyezéséhez.
A Firebase Cloud Messaging (FCM) 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 Add Firebase to your Android app (Tűzbázis hozzáadása androidos alkalmazáshoz ) lapon hajtsa végre a következő lépéseket:
Android-csomagnév esetén másolja ki az applicationId értékét az alkalmazás build.gradle fájljában. Ebben a példában a következő:
com.fabrikam.fcmtutorial1app
.Válassza az Alkalmazás regisztrálása lehetőséget.
Válassza a Google-services.json letöltése lehetőséget, mentse a fájlt a projekt alkalmazásmappájába , majd válassza a Tovább gombot.
Végezze el az alábbi konfigurációs módosításokat a projekten az Android Studióban.
A projektszintű build.gradle fájlban (<project>/build.gradle) adja hozzá a következő utasítást a dependencies szakaszhoz.
classpath 'com.google.gms:google-services:4.0.1'
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'
Adja hozzá a következő sort az alkalmazásszintű build.gradle fájl végéhez a dependencies szakasz után.
apply plugin: 'com.google.gms.google-services'
Válassza a Szinkronizálás most lehetőséget az eszköztáron.
Kattintson a Tovább gombra.
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 az Android Studio-projekt alkalmazásmappájába , ezt ezen a lapon teheti meg.
Váltson a felső Cloud Messaging (Felhőbeli üzenetkezelés ) lapra.
Másolja ki é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
- A Azure Portal válassza az Összes >App Servicestallózásalehetőséget. Ezután válassza ki a Mobile Apps háttérrendszerét.
- A Beállítások területen válassza a Leküldés lehetőséget. Ezután válassza a Leküldéses értesítési szolgáltatások konfigurálása lehetőséget.
- Lépjen a Google (GCM) webhelyre. Adja meg a Firebase-konzolró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.
- A Droid projektben kattintson a jobb gombbal a Hivatkozások > NuGet-csomagok kezelése ... elemre.
- A NuGet-csomagkezelő ablakban keresse meg a Xamarin.Firebase.Messaging csomagot, és adja hozzá a projekthez.
- A Droid-projekt projekttulajdonságaiban állítsa be, hogy az alkalmazás az Android 7.0-s vagy újabb verziójával legyen lefordítva.
- 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 GoogleServicesJson értékre. További információ: A Google Services JSON-fájljának hozzáadása.
Regisztráció a Firebase Cloud Messagingben
Nyissa meg az AndroidManifest.xml fájlt, és illessze a következő
<receiver>
elemeket a<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
Adjon hozzá egy új osztályt a nevű Droid-projekthez
FirebaseRegistrationService
, és győződjön meg arról, hogy a következőusing
utasítások szerepelnek a fájl tetején:using System.Threading.Tasks; using Android.App; using Android.Util; using Firebase.Iid; using Microsoft.WindowsAzure.MobileServices;
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, hogy az alkalmazás hozzáférjen az FCM-hez. AOnTokenRefresh
metódus akkor lesz meghívva, ha az alkalmazás regisztrációs jogkivonatot kap az FCM-től. A metódus lekéri a jogkivonatot aFirebaseInstanceId.Instance.Token
tulajdonságból, amelyet az FCM aszinkron módon frissít. AOnTokenRefresh
rendszer ritkán hívja meg a metódust, mert a jogkivonat csak akkor frissül, ha az alkalmazást telepíti vagy eltávolítja, amikor a felhasználó törli az alkalmazásadatokat, amikor az alkalmazás törli a példányazonosítót, vagy ha a jogkivonat biztonsága sérült. Emellett az FCM-példányazonosító szolgáltatás kérni fogja, hogy az alkalmazás rendszeresen, általában 6 havonta frissítse a jogkivonatát.A
OnTokenRefresh
metódus meghívja aSendRegistrationTokenToAzureNotificationHub
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 Hubbal
Adjon hozzá egy új osztályt a nevű Droid-projekthez
AzureNotificationHubService
, és győződjön meg arról, hogy a következőusing
utasítások szerepelnek a fájl tetején:using System; using System.Threading.Tasks; using Android.Util; using Microsoft.WindowsAzure.MobileServices; using Newtonsoft.Json.Linq;
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 létrehoz egy egyszerű értesítési üzenetsablont JSON-ként, és regisztrál, hogy sablonértesítéseket kapjon 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
Adjon hozzá egy új osztályt a nevű Droid-projekthez
FirebaseNotificationService
, és győződjön meg arról, hogy a következőusing
utasítások szerepelnek a fájl tetején:using Android.App; using Android.Content; using Android.Media; using Android.Support.V7.App; using Android.Util; using Firebase.Messaging;
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ódustSendNotification
. 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és megjelenik az értesítési területen.
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.
- Győződjön meg arról, hogy a Google Play Services szolgáltatással konfigurált eszközön vagy emulátoron helyez üzembe vagy hibakeresést. Ennek ellenőrzéséhez ellenőrizze, hogy a Play-alkalmazások telepítve vannak-e az eszközön vagy az emulátoron.
- 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 adjon hozzá egy meglévő Google-fiókot az eszközhöz, vagy hozzon létre egy újat.
- 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.
- 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.
- Az alkalmazásban írjon be egy feladatot, majd kattintson a plusz (+) ikonra.
- 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-projektek futtatásával foglalkozik. Kihagyhatja ezt a részt, ha nem dolgozik iOS-eszközökkel.
A tanúsítvány-aláírási kérelemfájl létrehozása
Az Apple Push Notification Service (APNs) tanúsítványokat használ a leküldéses értesítések hitelesítéséhez. 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.
Futtassa a Kulcskarika-elérés eszközt Mac számítógépén. A Utilities mappából vagy a Launchpad Egyéb mappájából nyitható meg.
Válassza a Kulcskarika-hozzáférés lehetőséget, bontsa ki a Tanúsítványsegéd elemet, majd válassza a Tanúsítvány kérése hitelesítésszolgáltatótól lehetőséget.
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 van egy nem kulcseleme, vagy az Apple Worldwide Developer Relations hitelesítésszolgáltatói kulcs van kiválasztva.
Válassza ki a Felhasználó Email címét, adja meg a Köznapi név értékét, győződjön meg arról, hogy a Lemezre mentve értéket adja meg, majd válassza a Folytatás lehetőséget. Hagyja üresen a hitelesítésszolgáltató Email Cím mezőt, mert nincs rá szükség.
Adja meg a CSR-fájl nevét a Mentés másként területen, válassza ki a helyet a Hol, majd válassza a Mentés lehetőséget.
Ez a művelet a CSR-fájlt a kiválasztott helyre menti. Az alapértelmezett hely az Asztal. Jegyezze meg a fájlhoz választott helyet.
Ezután regisztrálja alkalmazását az Apple-ben, engedélyezze a leküldéses értesítéseket, és töltse fel az exportált CSR-t egy leküldéses tanúsítvány létrehozásához.
Alkalmazás regisztrálása leküldéses értesítésekhez
Ha leküldéses értesítéseket szeretne küldeni egy iOS-alkalmazásnak, regisztrálja alkalmazását az Apple-ben, és regisztráljon leküldéses értesítésekre is.
Ha még nem regisztrálta az alkalmazást, keresse meg az iOS kiépítési portálját az Apple Fejlesztői központban. 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 a lehetőséget + egy új alkalmazás regisztrálásához.
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.
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: Adjon meg egy leíró nevet az alkalmazásnak.
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éknek 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éket használja a rendszer szervezeti azonosítóként, a GetStarted értéket pedig a terméknévként. 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.
Leküldéses értesítések: Ellenőrizze a Leküldéses értesítések lehetőséget a Képességek szakaszban.
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, majd a Regisztráció lehetőséget az új alkalmazásazonosító megerősítéséhez.
Miután kiválasztotta a Regisztráció lehetőséget, az új alkalmazásazonosító sorelemként jelenik meg a Tanúsítványok, azonosítók & Profilok lapon.
A Tanúsítványok, azonosítók & Profilok lapon, az Azonosítók területen 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ányra van szükség ahhoz, hogy az értesítési központ működjön az APNS-sel. Ezt kétféleképpen teheti meg:
- Hozzon létre egy .p12 fájlt, amely közvetlenül feltölthető a Notification Hubra.
- Hozzon létre egy .p8-t , amely tokenalapú hitelesítéshez használható (az újabb módszer).
Az újabb megközelítés számos előnnyel rendelkezik (a tanúsítványok használatához képest) az APNS tokenalapú (HTTP/2) hitelesítésében dokumentált módon. Mindkét megközelítés esetében azonban már rendelkeztek lépésekkel.
1. LEHETŐSÉG: .p12 leküldéses tanúsítvány létrehozása, amely közvetlenül feltölthető a Notification Hubra
Görgessen le a leküldéses értesítések jelölőnégyzethez, majd válassza a Konfigurálás lehetőséget a tanúsítvány létrehozásához.
Megjelenik az Apple Push Notification szolgáltatás SSL-tanúsítványai ablaka. Válassza a Tanúsítvány létrehozása gombot a Fejlesztés SSL-tanúsítvány szakaszában.
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 arra ügyeljen, hogy ugyanazt a tanúsítványtípust használja az értesítések küldéséhez.
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 kattintson duplán a tanúsítvány nevére a betöltéséhez. Ezután válassza a Folytatás elemet.
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.
A rendszer letölti és menti a tanúsítványt a számítógépre 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.
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 kulcsláncba, ahogy az alábbi képen látható:
Megjegyzés
Bár a tanúsítványban szereplő név eltérő lehet, a név az Apple Development iOS Push Services előtaggal lesz ellátva.
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.
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. Ezek az APN-ekkel történő hitelesítés engedélyezésére szolgálnak.
Megjegyzés
A .p12 fájl neve és helye eltérhet 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
Jegyezze fel a következő adatokat:
- Alkalmazásazonosító előtagja (ez egy csapatazonosító)
- Csomagazonosító
A Tanúsítványok, azonosítók & profilok területen kattintson a Kulcsok elemre.
Megjegyzés
Ha már rendelkezik az APNS-hez konfigurált kulccsal, használhatja újra a létrehozása után letöltött .p8 tanúsítványt. Ha igen, figyelmen kívül hagyhatja a 3 – 5. lépést.
Új kulcs létrehozásához kattintson a + gombra (vagy a Kulcs létrehozása gombra).
Adjon meg egy megfelelő Kulcsnév értéket, majd jelölje be 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álás elemre.
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 legyen (é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.
A Kulcsok területen kattintson az imént létrehozott kulcsra (vagy egy meglévő kulcsra, ha ezt választotta).
Jegyezze fel a Kulcsazonosító értéket.
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 a -----BEGIN PRIVATE KEY----- és -----END PRIVATE KEY----- közötti érték.
-----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 fog használni.
A lépések végén a következő információkkal kell rendelkeznie, amelyeket később használhat az Értesítési központ konfigurálása APNs-adatokkal című szakaszban:
- Csapatazonosító (lásd az 1. lépést)
- Csomagazonosító (lásd az 1. lépést)
- Kulcsazonosító (lásd a 7. lépést)
- Tokenérték , azaz .p8 kulcsérték (lásd a 8. lépést)
Üzembe helyezési profil létrehozása az alkalmazáshoz
Térjen vissza az iOS kiépítési portálra, válassza a Tanúsítványok, azonosítók & Profilok lehetőséget, a bal oldali menüben válassza a Profilok lehetőséget, majd válassza az + új profil létrehozásához lehetőséget. Megjelenik az Új kiépítési profil regisztrálása képernyő.
A kiépítési profil típusaként válassza az iOS-alkalmazásfejlesztés lehetőséget a Fejlesztés területen, majd válassza a Folytatás lehetőséget.
Ezután válassza ki a létrehozott alkalmazásazonosítót az Alkalmazásazonosító legördülő listából, majd válassza a Folytatás lehetőséget.
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, majd válassza a Folytatás lehetőséget. Ez a tanúsítvány nem a létrehozott leküldéses tanúsítvány. Ha nem létezik, létre kell hoznia. 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:
- Ha a Nem érhetők el tanúsítványok elemet látja, válassza a Tanúsítvány létrehozása lehetőséget.
- A Szoftver szakaszban válassza az Apple Development (Apple-fejlesztés) lehetőséget. Ezután válassza a Folytatás elemet.
- Az Új tanúsítvány létrehozása képernyőn válassza a Fájl kiválasztása lehetőséget.
- Keresse meg a korábban létrehozott Tanúsítvány-aláírási kérelem tanúsítványt, jelölje ki, majd válassza a Megnyitás lehetőséget.
- Válassza a Folytatás lehetőséget.
- Töltse le a fejlesztési tanúsítványt, és jegyezze meg a mentés helyét.
Térjen vissza a Tanúsítványok, azonosítók & Profilok lapra, válassza a bal oldali menü Profilok elemét, majd válassza a lehetőséget + egy új profil létrehozásához. Megjelenik az Új kiépítési profil regisztrálása képernyő.
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.
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.
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.
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.
Tallózással keresse meg a kiépítési profil helyét, majd kattintson rá duplán az Xcode fejlesztői gépen való telepítéséhez.
Értesítési központ létrehozása
Ebben a szakaszban egy értesítési központot hoz létre, és a .p12 leküldéses tanúsítvány vagy jogkivonat-alapú hitelesítés használatával konfigurálja az APN-ekkel történő hitelesítést. Ha már létrehozott értesítési központot szeretne használni, ugorjon az 5. lépésre.
Jelentkezzen be az Azure Portalra.
A bal oldali menüben válassza a Minden szolgáltatás lehetőséget, majd a Mobil szakaszban válassza a Notification Hubs elemet. A szolgáltatásnév melletti star ikont választva adja hozzá a szolgáltatást a bal oldali menü KEDVENCEK szakaszához. Miután hozzáadta a Notification Hubsot a KEDVENCEKHEZ, válassza ki a bal oldali menüben.
A Notification Hubs lapon válassza az eszköztár Hozzáadás elemét.
Az Értesítési központ lapon hajtsa végre a következő lépéseket:
Adjon meg egy nevet a Notification Hubban.
Adjon meg egy nevet az Új névtér létrehozása területen. A névtér egy vagy több központot tartalmaz.
Válasszon ki 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.
Válasszon ki egy meglévő erőforráscsoportot az Erőforráscsoport területen, vagy hozzon létre egy nevet egy új erőforráscsoportnak.
Válassza a Létrehozás lehetőséget.
Válassza az Értesítések (a harang ikon), majd az Erőforrás megnyitása lehetőséget. A listát a Notification Hubs oldalon is frissítheti, és kiválaszthatja a központot.
A listáról válassza a Hozzáférési szabályzatok lehetőséget. Vegye figyelembe, hogy a két kapcsolati sztring 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 a DefaultFullSharedAccessSignature szabályzatot az alkalmazásban. Ez csak a háttérrendszerben használható.
Az értesítési központ konfigurálása APN-adatokkal
A Notification Services (Értesítési szolgáltatások) 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 az Alkalmazáshoz készült élesüzemmódot , ha leküldéses értesítéseket szeretne küldeni azoknak a felhasználóknak, akik az alkalmazást az áruházból vásárolták.
1. LEHETŐSÉG: .p12 leküldéses tanúsítvány használata
Válassza a Tanúsítvány elemet.
Válassza a fájl ikont.
Jelölje ki a korábban exportált .p12 fájlt, majd válassza a Megnyitás lehetőséget.
Ha szükséges, adja meg a megfelelő jelszót.
Válassza a Védőfal módot.
Kattintson a Mentés gombra.
2. LEHETŐSÉG: Jogkivonatalapú hitelesítés használata
Válassza a Jogkivonat lehetőséget.
Adja meg a korábban beszerzett alábbi értékeket:
- Kulcsazonosító
- Csomagazonosító
- Csapatazonosító
- Jogkivonat
Tesztkörnyezet kiválasztása
Kattintson a Mentés gombra.
Most már apN-ekkel konfigurálta az értesítési központot. Rendelkezik az alkalmazás regisztrálásához és leküldéses értesítések küldéséhez szükséges kapcsolati sztringekkel is.
Az értesítési központ konfigurálása az APNS-hez
- Mac gépen indítsa el a Keychain Accesst. A bal oldali navigációs sáv Kategória területén nyissa meg a Saját tanúsítványok elemet. Keresse meg az előző szakaszban letöltött SSL-tanúsítványt, majd tegye közzé a tartalmát. Csak a tanúsítványt jelölje ki (ne válassza ki a titkos kulcsot). Ezután exportálja.
- A Azure Portal válassza a Browse AllApp Services (Minden > App Services tallózása) lehetőséget. Ezután válassza ki a Mobile Apps háttérrendszerét.
- A Beállítások területen válassza App Service Leküldés lehetőséget. Ezután válassza ki az értesítési központ nevét.
- Lépjen az Apple Leküldéses értesítési szolgáltatások>tanúsítvány feltöltése területre. Töltse fel a .p12 fájlt, és válassza ki a megfelelő módot (attól függően, hogy a korábbi ügyfél SSL-tanúsítványa éles vagy tesztkörnyezeti). Mentse a módosításokat.
A szolgáltatás mostantól úgy van konfigurálva, hogy leküldéses értesítéseket használjon iOS rendszeren.
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
A Xamarin.Studióban nyissa meg az Info.plist fájlt, és frissítse a csomagazonosítót az új alkalmazásazonosítóval korábban létrehozott csomagazonosítóval.
Görgessen le a Háttérmódok gombra. Válassza a Háttérmódok engedélyezése és a Távoli értesítések jelölőnégyzetet .
Kattintson duplán a projektre a Megoldás panelen a Projektbeállítások megnyitásához.
A Build területen válassza az iOS-csomagaláírás lehetőséget, majd válassza ki a projekthez beállított identitást és 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özök kiépítése.
Az iOS-projekt konfigurálása a Visual Studióban
A Visual Studióban kattintson a jobb gombbal a projektre, majd kattintson a Tulajdonságok parancsra.
A tulajdonságok lapján kattintson az iOS-alkalmazás fülre, és frissítse az azonosítót a korábban létrehozott azonosítóval.
Az iOS-csomagaláírás lapon válassza ki a projekthez beállított identitás- és 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özök kiépítése.
Kattintson duplán az Info.plist elemre a megnyitásához, majd engedélyezze a RemoteNotifications (RemoteNotifications) beállítást a Háttérmódok területen.
Leküldéses értesítések hozzáadása az iOS-alkalmazáshoz
Az iOS-projektben nyissa meg az AppDelegate.cs fájlt, és adja hozzá a következő utasítást a kódfájl tetejére.
using Newtonsoft.Json.Linq;
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); }
Az AppDelegate-ben adja hozzá a DidReceiveRemoteNotification eseménykezelő következő felülbírálását 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, miközben az alkalmazás fut.
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ült, hogy támogassa a leküldéses értesítéseket.
Leküldéses értesítések tesztelése az iOS-alkalmazásban
Kattintson a jobb gombbal az iOS-projektre, majd kattintson a Beállítás StartUp Projektként parancsra.
A Projekt létrehozásához és az alkalmazás iOS-eszközön való elindításához nyomja le a Futtatás gombot vagy az F5 billentyűt a Visual Studióban. 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ő.
Az alkalmazásban írjon be egy feladatot, majd kattintson a plusz (+) ikonra.
Ellenőrizze, hogy érkezett-e értesítés, majd kattintson az OK gombra az értesítés bezárásához.
Windows-projektek konfigurálása és futtatása (nem kötelező)
Ez a szakasz a Windows-eszközök Xamarin.Forms WinApp és WinPhone81 projektjeinek futtatására vonatkozik. Ezek a lépések Univerzális Windows-platform (UWP) projekteket is támogatnak. Kihagyhatja ezt a részt, ha nem dolgozik Windows-eszközökkel.
Windows-alkalmazás regisztrálása leküldéses értesítésekhez a Windows Értesítési szolgáltatásban (WNS)
A Visual Studio Megoldáskezelő 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ázhoz lehetőséget.
A varázslóban válassza a Tovább gombot. Ezután jelentkezzen be a Microsoft-fiókjával. Az Új alkalmazás nevének lefoglalása mezőbe írja be az alkalmazás nevét, majd válassza a Foglalás lehetőséget.
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.
Ismételje meg az 1. és a 3. lépést a Windows Phone-telefon Áruházbeli alkalmazásprojekthez a Windows Áruházbeli alkalmazáshoz korábban létrehozott regisztrációval.
Nyissa meg a Windows fejlesztői központot, majd jelentkezzen be a 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ései elemet.
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ületen válassza Live Services webhelyet. Jegyezze fel a Package SID értékeit és az application secretaktuális értékét.
Fontos
Az alkalmazáskulcs é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 meg őket az alkalmazással.
Az értesítési központ konfigurálása a WNS-hez
A Azure Portal válassza a Browse AllApp Services (Minden > App Services tallózása) lehetőséget. Ezután válassza ki a Mobile Apps háttérrendszerét. A Beállítások területen válassza App Service Leküldés lehetőséget. Ezután válassza ki az értesítési központ nevét.
Lépjen a Windows (WNS) elemre. Ezután adja meg a biztonsági kulcsot (titkos ügyfélkulcsot) és a csomagazonosítót, amelyet a Live Services helyről szerzett be. Ezután válassza a Mentés lehetőséget.
A háttérrendszer most már úgy van konfigurálva, hogy a WNS használatával küldjön leküldéses értesítéseket.
Leküldéses értesítések hozzáadása a Windows-alkalmazáshoz
A Visual Studióban nyissa meg az App.xaml.cs fájlt egy Windows-projektben, és adja hozzá az alábbi 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
<your_TodoItemManager_portable_class_namespace>
a elemet a osztályt tartalmazó hordozható projekt névteréreTodoItemManager
.Az App.xaml.cs fájlban 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 lekéri a leküldéses értesítési csatornát, és regisztrál egy sablont, amely sablonértesítéseket fogad az értesítési központtól. A rendszer egy üzenetparamot támogató sablonértesítést küld az ügyfélnek.
Az App.xaml.cs fájlban 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és regisztrációja az alkalmazás minden indításakor létrejön vagy frissüljön. Fontos, hogy ez garantálja, hogy a WNS leküldéses csatorna mindig aktív legyen.
A Visual Studio Megoldáskezelő nyissa meg a Package.appxmanifest fájlt, és állítsa a Toast Capable (Igen) értéket azÉrtesítések területen.
Hozza létre az alkalmazást, és ellenőrizze, hogy nincsenek-e hibák. Az ügyfélalkalmazásnak most regisztrálnia kell a sablonértesítésekhez a Mobile Apps háttérrendszerében. 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
- A Visual Studióban kattintson a jobb gombbal egy Windows-projektre, majd kattintson a Beállítás indítási projektként parancsra.
- Nyomja le a Run (Futtatás) gombot a projekt felépítéséhez és az alkalmazás elindításához.
- Az alkalmazásban írja be egy új todoitem nevét, majd a plusz (+) ikonra kattintva adja hozzá.
- Győződjön meg arról, hogy az elem hozzáadásakor értesítés érkezik.
Következő lépések
További információ a leküldéses értesítésekről:
- Leküldéses értesítések küldése az Azure Mobile Appsből
- Firebase Cloud Messaging
- Távoli értesítések a Firebase cloud messaging szolgáltatással
- Leküldéses értesítések problémáinak diagnosztizálása
Különböző okok miatt előfordulhat, hogy az értesítések elesnek, vagy nem kerülnek az eszközökre. Ez a témakör bemutatja, hogyan elemezheti és állapíthatja meg a leküldéses értesítési hibák kiváltó okát.
A következő oktatóanyagok egyikét is folytathatja:
- Hitelesítés hozzáadása az alkalmazáshoz
Ismerje meg, hogyan hitelesítheti alkalmazása felhasználóit identitásszolgáltató használatával. - Az offline szinkronizálás engedélyezése az alkalmazás számára
Ismerje meg, hogyan adhat offline támogatást alkalmazásához egy Mobile Apps-háttéralkalmazás segítségével. Az offline szinkronizálással a felhasználók akkor is használhatják a mobilalkalmazásokat – az adatok megtekintését, hozzáadását vagy módosítását –, ha nincs hálózati kapcsolat.