MAUI Dotnet
Voraussetzungen
Anchor link toUm das SDK zu integrieren, benötigt Ihr MAUI-Projekt die folgende Paketversion, die folgenden Ziel-Frameworks und die folgenden Mindestversionen des Betriebssystems:
-
Pushwoosh.DotNet2.1.0 oder höher. Das Paket enthält Builds für .NET 8 und .NET 10 (net10.0-android36.0undnet10.0-ios26.0). -
Android: Ziel-Framework
net8.0-android34.0oder höher, Geräte mit API 23 oder höher. Ein einfachesnet8.0-androidwird mit dem .NET 8 SDK zuandroid34.0aufgelöst. -
iOS: Geräte mit iOS 15.0 oder höher. Legen Sie das Minimum in Ihrer Projektdatei fest:
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>Bei einem niedrigeren Wert bricht der Build mit
error PW0001ab.
SDK-Integration
Anchor link to1. Fügen Sie das NuGet-Paket Pushwoosh.DotNet sowohl zu den Android- als auch zu den iOS-Projekten hinzu:

2. Akzeptieren Sie bei Bedarf die Lizenzen für transitive Android-Abhängigkeiten:

3. Konfigurieren Sie Ihr Projekt in der Firebase Console.
4. Fügen Sie google-services.json zum Stammverzeichnis Ihrer Android-Plattform hinzu. Legen Sie die Build-Aktion GoogleServicesJson für diese Datei fest:

5. Fügen Sie die folgende Zeile vor der Namespace-Deklaration in Ihrer MainApplication.cs hinzu (XXXXX-XXXXX ist hier Ihr Pushwoosh-Anwendungscode):
[assembly: MetaData("com.pushwoosh.appid", Value = "XXXXX-XXXXX")]6. Überschreiben Sie in Ihrer MainApplication.cs die Methode OnCreate() und rufen Sie PushManager.Init(); vor base.OnCreate(); auf:
using Android.App;using Android.Runtime;using Pushwoosh.Android;...[Application]public class MainApplication : MauiApplication{ public MainApplication(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership) { }
public override void OnCreate() { PushManager.Init(); base.OnCreate(); }
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();}base.OnCreate() erstellt die MAUI-App und konstruiert App, das bereits PushManager.Instance verwendet. Rufen Sie PushManager.Init() nicht aus MainActivity.OnCreate auf. Die Activity wird nach App erstellt, sodass PushManager.Instance noch null wäre, wenn App es benötigt.
7. Fügen Sie in Ihrer AndroidManifest.xml Folgendes hinzu:
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />Wichtig: Stellen Sie sicher, dass der Device API Token Zugriff auf die richtige Anwendung in Ihrem Pushwoosh Control Panel hat. Erfahren Sie mehr
8. Erstellen Sie im iOS-Plattformordner die Datei Platforms/iOS/Entitlements.plist mit dem Schlüssel aps-environment:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>aps-environment</key> <string>development</string></dict></plist>Ohne dieses Entitlement stellt iOS kein APNs-Geräte-Token aus, sodass Register() immer fehlschlägt. Verwenden Sie development für Debug-Builds. Ein Distributions-Build benötigt production und ein Provisioning-Profil mit aktivierten Push-Benachrichtigungen.
9. Verweisen Sie in Ihrer Projektdatei (.csproj) das iOS-Ziel auf die Entitlements-Datei:
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'"> <CodesignEntitlements>Platforms/iOS/Entitlements.plist</CodesignEntitlements></PropertyGroup>10. Rufen Sie in der AppDelegate.cs Ihres iOS-Projekts PushManager.Init(); am Anfang der Methode FinishedLaunching auf:
using Foundation;using UIKit;using Pushwoosh.iOS;...public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions){ PushManager.Init(); return base.FinishedLaunching(application, launchOptions);}11. Fügen Sie diese Methoden zum AppDelegate hinzu. Die Klasse MauiUIApplicationDelegate exportiert sie standardmäßig nicht, fügen Sie sie daher manuell hinzu:
[Export("application:didReceiveRemoteNotification:fetchCompletionHandler:")] public void DidReceiveRemoteNotification(UIKit.UIApplication application, NSDictionary userInfo, Action<UIKit.UIBackgroundFetchResult> completionHandler) { PushManager.Instance.ReceivedRemoteNotification(userInfo); }
[Export("application:didRegisterForRemoteNotificationsWithDeviceToken:")] public void RegisteredForRemoteNotifications(UIKit.UIApplication application, NSData deviceToken) { PushManager.Instance.RegisteredForRemoteNotifications(deviceToken); }
[Export("application:didFailToRegisterForRemoteNotificationsWithError:")] public void FailedToRegisterForRemoteNotifications(UIKit.UIApplication application, NSError error) { PushManager.Instance.FailedToRegisterForRemoteNotifications(error); }12. Ändern Sie in der Info.plist den Wert von Pushwoosh_APPID in Ihren Pushwoosh-Anwendungscode. Sie finden ihn in Ihrem Control Panel:

13. Setzen Sie in der Info.plist den Schlüssel Pushwoosh_API_TOKEN auf Ihren Pushwoosh Device API Token.
Wichtig: Stellen Sie sicher, dass Sie dem Token Zugriff auf die richtige App in Ihrem Pushwoosh Control Panel geben. Erfahren Sie mehr
14. Rufen Sie im plattformübergreifenden Teil von App.xaml.cs in der Methode OnStart die Methode Register() auf. Sie fragt den Benutzer nach der Berechtigung für Benachrichtigungen und registriert das Gerät für Push-Benachrichtigungen:
using PushwooshSDK.DotNet.Core;...public partial class App : Application{... protected override void OnStart() { base.OnStart(); PushManager.Instance.Register(); }}Upgrade von 2.0.x auf 2.1.0
Anchor link toWenn Ihre App mit einer früheren Version dieser Anleitung eingerichtet wurde, nehmen Sie beim Update auf 2.1.0 diese Änderungen vor:
- Verschieben Sie unter Android
PushManager.Init()vonMainActivity.OnCreatenachMainApplication.OnCreate, vorbase.OnCreate(), wie in Schritt 6. Wenn Sie Geozones verwenden, verschieben Sie auchLocationManager.Init()dorthin, direkt nachPushManager.Init(). - Entfernen Sie die Metadatenzeile
com.pushwoosh.senderidund den Stringfcm_sender_idaus Resources/values/strings.xml. Das SDK liest sie nicht. - Fügen Sie unter iOS das Entitlement
aps-environmentaus den Schritten 8 und 9 hinzu, falls Ihre App es noch nicht hat. - Erhöhen Sie
SupportedOSPlatformVersionfür das iOS-Ziel auf 15.0, wie unter Voraussetzungen gezeigt. Die MAUI-8-Projektvorlage setzt 11.0. - Wenn Ihre App Geozones verwendet, aktualisieren Sie
Pushwoosh.DotNet.Geozoneszusammen mitPushwoosh.DotNetauf 2.1.0. Mit Geozones 2.0.x bricht der Build miterror PW0002ab. PWInlineInAppViewist unter iOS als[Obsolete]markiert und zeigt nichts an, da das native iOS SDK 7.x keine Inline-In-App-Nachrichten unterstützt. Entfernen Sie es aus Ihren Layouts.
Hinweis für Windows-Benutzer: Beim Erstellen kann ein Problem im Zusammenhang mit der Länge des Dateipfads auftreten. Dies liegt daran, dass die kombinierte Länge der von Visual Studio verwendeten Verzeichnisse und der Dateipfade innerhalb des Pushwoosh SDK die maximale Pfadlängenbeschränkung von Windows von 260 Zeichen überschreitet. Um dieses Problem zu beheben, aktivieren Sie die Einstellung LongPathsEnabled in der Windows-Registrierung.
Teilen Sie uns Ihr Feedback mit
Anchor link toIhr Feedback hilft uns, eine bessere Erfahrung zu schaffen. Daher würden wir uns freuen, von Ihnen zu hören, wenn Sie während des SDK-Integrationsprozesses auf Probleme stoßen. Sollten Sie auf Schwierigkeiten stoßen, zögern Sie bitte nicht, uns Ihre Gedanken über dieses Formular mitzuteilen.