# MAUI Dotnet

* [**Source du module**](https://github.com/Pushwoosh/pushwoosh-dotnet)
* [**Télécharger l'exemple**](https://github.com/Pushwoosh/pushwoosh-dotnet/tree/main/Sample)

### Intégration du SDK

**1.** Ajoutez le paquet Nuget **Pushwoosh.DotNet** aux projets Android et iOS :

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

**2.** Acceptez les licences pour les dépendances Android transitives si nécessaire :

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

**3.** Configurez votre projet dans la [console Firebase](https://console.firebase.google.com/u/0/).

**4.** Ajoutez **google-services.json** à la racine du répertoire de votre plateforme Android. Définissez l'action de build **GoogleServicesJson** pour ce fichier :

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

**5.** Ajoutez les lignes suivantes avant de déclarer l'espace de noms dans votre **MainActivity.cs** (**XXXXX-XXXXX** est ici votre ID d'application Pushwoosh) : 

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

**6.** Dans votre **MainActivity.cs**, surchargez la méthode `OnCreate()` et appelez `PushManager.Init();` après `base.OnCreate(savedInstanceState);`

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

**7.** Dans votre projet Android, trouvez le fichier **Resources/values/strings.xml** ou créez-le. Ajoutez-y votre chaîne d'ID d'expéditeur : 

```txt
<string name="fcm_sender_id">YOUR_SENDER_ID</string>
```
**8.** Dans votre `AndroidManifest.xml`, ajoutez ce qui suit :

```xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />
```
> **Important :** Assurez-vous que le [jeton d'API de l'appareil](/fr/developer/api-reference/api-access-token/#device-api-token) a accès à la bonne application dans votre panneau de contrôle Pushwoosh. [En savoir plus](/fr/developer/api-reference/api-access-token/#edit-token)

**9.** Apportez les modifications suivantes dans le fichier **AppDelegate.cs** de votre projet iOS :

Au début de la méthode `FinishedLaunching`, placez la ligne suivante : \
`PushManager.Init();`

Ajoutez ces méthodes à l'**AppDelegate** (la classe `MauiUIApplicationDelegate` n'exporte pas ces méthodes par défaut, vous devez donc le faire manuellement) :

```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.** Dans le fichier **Info.plist**, modifiez la valeur de **Pushwoosh\_APPID** par votre code d'application Pushwoosh. Vous pouvez le trouver dans votre panneau de contrôle :\


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

**11.** Dans `Info.plist`, définissez :
    - la clé `Pushwoosh_API_TOKEN` sur le [jeton d'API de l'appareil Pushwoosh](/fr/developer/api-reference/api-access-token/#device-api-token)

> **Important :** Assurez-vous de donner au jeton l'accès à la bonne application dans votre panneau de contrôle Pushwoosh. [En savoir plus](/fr/developer/api-reference/api-access-token/#edit-token)


**12.** Dans la partie multiplateforme de **App.xaml.cs**, ajoutez l'enregistrement à la méthode `onStart` :

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


> **Remarque pour les utilisateurs de Windows :**
>Lors de la compilation, vous pouvez rencontrer un problème lié à la longueur du chemin du fichier.
>Cela est dû au fait que la longueur combinée des répertoires utilisés par Visual Studio et des chemins de fichiers dans le SDK Pushwoosh dépasse la limitation de longueur de chemin maximale de Windows de 260 caractères.
>Pour résoudre ce problème, activez le paramètre LongPathsEnabled dans le Registre Windows.

### Partagez vos commentaires avec nous

Vos commentaires nous aident à créer une meilleure expérience, nous serions donc ravis de vous entendre si vous rencontrez des problèmes lors du processus d'intégration du SDK. Si vous rencontrez des difficultés, n'hésitez pas à nous faire part de vos réflexions [via ce formulaire](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).