Zum Inhalt springen

MAUI Dotnet

Voraussetzungen

Anchor link to

Um das SDK zu integrieren, benötigt Ihr MAUI-Projekt die folgende Paketversion, die folgenden Ziel-Frameworks und die folgenden Mindestversionen des Betriebssystems:

  • Pushwoosh.DotNet 2.1.0 oder höher. Das Paket enthält Builds für .NET 8 und .NET 10 (net10.0-android36.0 und net10.0-ios26.0).

  • Android: Ziel-Framework net8.0-android34.0 oder höher, Geräte mit API 23 oder höher. Ein einfaches net8.0-android wird mit dem .NET 8 SDK zu android34.0 aufgelö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 PW0001 ab.

SDK-Integration

Anchor link to

1. 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:

Info.plist in Xcode mit dem Schlüssel Pushwoosh_APPID, der auf den Anwendungscode gesetzt ist

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 to

Wenn 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() von MainActivity.OnCreate nach MainApplication.OnCreate, vor base.OnCreate(), wie in Schritt 6. Wenn Sie Geozones verwenden, verschieben Sie auch LocationManager.Init() dorthin, direkt nach PushManager.Init().
  • Entfernen Sie die Metadatenzeile com.pushwoosh.senderid und den String fcm_sender_id aus Resources/values/strings.xml. Das SDK liest sie nicht.
  • Fügen Sie unter iOS das Entitlement aps-environment aus den Schritten 8 und 9 hinzu, falls Ihre App es noch nicht hat.
  • Erhöhen Sie SupportedOSPlatformVersion fü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.Geozones zusammen mit Pushwoosh.DotNet auf 2.1.0. Mit Geozones 2.0.x bricht der Build mit error PW0002 ab.
  • PWInlineInAppView ist 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 to

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