# MAUI Dotnet

* [**Modul-Quelle**](https://github.com/Pushwoosh/pushwoosh-dotnet)
* [**Beispiel herunterladen**](https://github.com/Pushwoosh/pushwoosh-dotnet/tree/main/Sample)

### SDK-Integration

**1.** Fügen Sie das NuGet-Paket **Pushwoosh.DotNet** sowohl zu den Android- als auch zu den iOS-Projekten hinzu:

<img src="/maui-dotnet-README-1.webp" alt=""/>

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

<img src="/maui-dotnet-README-2.webp" alt=""/>

**3.** Konfigurieren Sie Ihr Projekt in der [Firebase Console](https://console.firebase.google.com/u/0/).

**4.** Fügen Sie **google-services.json** zum Stammverzeichnis Ihrer Android-Plattform hinzu. Legen Sie die Build-Aktion **GoogleServicesJson** für diese Datei fest:

<img src="/maui-dotnet-README-3.webp" alt=""/>

**5.** Fügen Sie die folgenden Zeilen vor der Namespace-Deklaration in Ihrer **MainActivity.cs** hinzu (**XXXXX-XXXXX** ist hier Ihre Pushwoosh-Anwendungs-ID):

```csharp
[assembly: MetaData("com.pushwoosh.appid", Value = "XXXXX-XXXXX")]
[assembly: MetaData("com.pushwoosh.senderid", Value = "@string/fcm_sender_id")]
```

**6.** Überschreiben Sie in Ihrer **MainActivity.cs** die `OnCreate()`-Methode und rufen Sie `PushManager.Init();` nach `base.OnCreate(savedInstanceState);` auf.

```csharp
using Pushwoosh.Android;
...
public class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        PushManager.Init();
    }
}
```

**7.** Suchen Sie in Ihrem Android-Projekt die Datei **Resources/values/strings.xml** oder erstellen Sie sie. Fügen Sie dort Ihren Sender-ID-String hinzu:

```txt
<string name="fcm_sender_id">YOUR_SENDER_ID</string>
```
**8.** Fügen Sie in Ihrer `AndroidManifest.xml` Folgendes hinzu:

```xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />
```
> **Wichtig:** Stellen Sie sicher, dass der [Device API Token](/de/developer/api-reference/api-access-token/#device-api-token) Zugriff auf die richtige Anwendung in Ihrem Pushwoosh Control Panel hat. [Erfahren Sie mehr](/de/developer/api-reference/api-access-token/#edit-token)

**9.** Nehmen Sie die folgenden Änderungen in der **AppDelegate.cs** Ihres iOS-Projekts vor:

Fügen Sie am Anfang der `FinishedLaunching`-Methode die folgende Zeile ein: \
`PushManager.Init();`

Fügen Sie diese Methoden zum **AppDelegate** hinzu (die Klasse `MauiUIApplicationDelegate` exportiert diese Methoden standardmäßig nicht, daher müssen Sie dies manuell tun):

```csharp
[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);
    }
```

**10.** Ändern Sie in der **Info.plist** den Wert von **Pushwoosh\_APPID** in Ihren Pushwoosh-Anwendungscode. Sie finden ihn in Ihrem Control Panel:\


<img src="/maui-dotnet-README-4.webp" alt=""/>

**11.** Setzen Sie in der `Info.plist`:
    - den Schlüssel `Pushwoosh_API_TOKEN` auf den [Pushwoosh Device API Token](/de/developer/api-reference/api-access-token/#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](/de/developer/api-reference/api-access-token/#edit-token)


**12.** Fügen Sie im plattformübergreifenden Teil von **App.xaml.cs** die Registrierung zur `onStart`-Methode hinzu:

```csharp
using PushwooshSDK.DotNet.Core;
...
public partial class App : Application
{
...
    protected override void OnStart()
    {
        base.OnStart();
	    PushManager.Instance.Register();
    }
}
```


> **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

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](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform) mitzuteilen.