Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Á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.
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.
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.
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
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.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;
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.
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 egy új elem beszúrásakor tartalmazza az item.text szöveget.
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
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:
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
.Válassza a Regisztrálás alkalmazást.
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.
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 függőségek 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 függőségek szakasz után.
apply plugin: 'com.google.gms.google-services'
Válassza a Szinkronizálás lehetőséget az eszköztáron.
Válassza a Következőlehetőséget.
Válassza e 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 lapra.
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
- 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 a Pushlehető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-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.
- A Droid-projektben kattintson a jobb gombbal a Hivatkozások > NuGet csomagok kezelése ....
- A NuGet Package Manager ablakban keresse meg a Xamarin.Firebase.Messaging csomagot, és adja hozzá a projekthez.
- 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.
- 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
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
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ábbiusing
utasítások szerepelnek: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 az alkalmazás számára az FCM elérését. AOnTokenRefresh
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 aFirebaseInstanceId.Instance.Token
tulajdonságból, amelyet az FCM aszinkron módon frissít. AOnTokenRefresh
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 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 Hubon
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ábbiusing
utasítások szerepelnek: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 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
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ábbiusing
utasítások szerepelnek: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é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.
- 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.
- 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.
- 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-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.
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.
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.
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.
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.
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.
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.
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.
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: Í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.
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 lehetőséget, majd a Regisztráció elemet az új alkalmazásazonosító megerősítéséhez.
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.
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:
- Hozzon létre egy .p12-t , amely közvetlenül a Notification Hubra tölthető fel.
- 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
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.
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.
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.
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.
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 kulcskarikán, ahogy az az alábbi képen is látható:
Megjegyzés
Bár a tanúsítványban szereplő név eltérő lehet, az Apple Development iOS Push Services előtagja lesz.
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. 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
Jegyezze fel a következő részleteket:
- Alkalmazásazonosító-előtag (ez egy csapatazonosító)
- Csomagazonosító
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 3 – 5. lépést.
Kattintson a + gombra (vagy a Kulcs létrehozása gombra) egy új kulcs létrehozásához.
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.
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.
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ékét.
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
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ő.
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.
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.
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:
- 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.
- A Szoftver szakaszban válassza az Apple Development 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ányát, jelölje ki, majd válassza a Megnyitás lehetőséget.
- Válassza a Folytatáslehető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álasszon + ú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.
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.
Jelentkezzen be a Azure portalra.
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.
A Notification Hubs lapon válassza a Hozzáadás lehetőséget az eszköztáron.
A Notification Hub 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 mezőben. A névtér egy vagy több központot tartalmaz.
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.
Válasszon ki egy meglévő erőforráscsoportot az Erőforráscsoportban, vagy hozzon létre egy nevet egy új erőforráscsoportnak.
Válassza a Create gombot.
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.
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.
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
Válassza a Tanúsítvány elemet.
Válassza a fájl ikont.
Válassza 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.
Válassza az Mentésgombot.
2. LEHETŐSÉG: Tokenalapú hitelesítés használata
Válassza a Token lehetőséget.
Adja meg a korábban beszerzett alábbi értékeket:
- kulcsazonosító
- Csomagazonosító
- Csapatazonosító
- Jogkivonat
Válaszd a Sandbox lehetőséget
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
- 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.
- 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.
- 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
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.
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.
Kattintson duplán a projektre a Megoldás panelen Projektbeállításokmegnyitásához.
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
A Visual Studióban kattintson a jobb gombbal a projektre, majd kattintson a Tulajdonságokparancsra.
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.
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.
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
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;
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 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.
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
Kattintson a jobb gombbal az iOS-projektre, és válassza a Beállítás kezdőprojektként parancsot.
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ő.
Az alkalmazásban írjon be egy feladatot, majd kattintson a plusz (+) ikonra.
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)
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.
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.
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 Áruházbeli alkalmazásprojekt esetében ugyanazzal a regisztrációval, amelyet korábban a Windows Áruházbeli alkalmazáshoz hozott létre.
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.
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.
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
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.
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.
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
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 aTodoItemManager
osztályt.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.
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.
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.
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
- A Visual Studióban kattintson a jobb gombbal egy Windows-projektre, és kattintson a Beállítás indítási projektként parancsra.
- A Projekt létrehozásához és az alkalmazás elindításához nyomja le a Futtatás gombot.
- Az alkalmazásban írja be az új teendőlista nevét, majd a plusz (+) ikonra kattintva adja hozzá.
- 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:
- Értesítések küldése az Azure Mobile alkalmazásból
- Firebase Cloud Messaging
- Távoli értesítések a Firebase Cloud Messaging használatával
-
Leküldéses értesítések problémáinak diagnosztizálása
Számos oka lehet annak, hogy az értesítések eleshetnek, vagy nem kerülnek az eszközökre. Ez a témakör bemutatja, hogyan elemezheti és derítheti ki a leküldéses értesítések hibáinak kiváltó okát.
A következő oktatóanyagok egyikét is folytathatja:
-
Hitelesítés hozzáadása az alkalmazáshoz
Megtudhatja, hogyan hitelesítheti az alkalmazás felhasználóit egy identitásszolgáltatóval. -
Offline szinkronizálás engedélyezése az alkalmazáshoz
Megtudhatja, hogyan adhat offline támogatást az alkalmazáshoz a Mobile Apps háttérrendszerével. Offline szinkronizálás esetén 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.