# MAUI Dotnet

* [**Fuente del módulo**](https://github.com/Pushwoosh/pushwoosh-dotnet)
* [**Descargar ejemplo**](https://github.com/Pushwoosh/pushwoosh-dotnet/tree/main/Sample)

### Integración del SDK

**1.** Agregue el paquete Nuget **Pushwoosh.DotNet** a los proyectos de Android e iOS:

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

**2.** Acepte las licencias para las dependencias transitivas de Android si es necesario:

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

**3.** Configure su proyecto en la [Consola de Firebase](https://console.firebase.google.com/u/0/).

**4.** Agregue **google-services.json** a la raíz del directorio de su plataforma Android. Establezca la acción de compilación **GoogleServicesJson** para este archivo:

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

**5.** Agregue las siguientes líneas antes de declarar el espacio de nombres en su **MainActivity.cs** (**XXXXX-XXXXX** aquí es su ID de Aplicación de Pushwoosh):

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

**6.** En su **MainActivity.cs**, anule el método `OnCreate()` y llame a `PushManager.Init();` después de `base.OnCreate(savedInstanceState);`

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

**7.** En su proyecto de Android, busque el archivo **Resources/values/strings.xml** o créelo. Agregue su cadena de ID de remitente allí:

```txt
<string name="fcm_sender_id">YOUR_SENDER_ID</string>
```
**8.** En su `AndroidManifest.xml`, agregue lo siguiente:

```xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />
```
> **Importante:** Asegúrese de que el [token de API del dispositivo](/es/developer/api-reference/api-access-token/#device-api-token) tenga acceso a la aplicación correcta en su Panel de Control de Pushwoosh. [Aprenda más](/es/developer/api-reference/api-access-token/#edit-token)

**9.** Realice los siguientes cambios en el **AppDelegate.cs** de su proyecto de iOS:

Al principio del método `FinishedLaunching`, ponga la siguiente línea: \
`PushManager.Init();`

Agregue estos métodos al **AppDelegate** (la clase `MauiUIApplicationDelegate` no exporta estos métodos por defecto, por lo que debe hacerlo manualmente):

```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.** En el **Info.plist**, cambie el valor de **Pushwoosh\_APPID** por su Código de Aplicación de Pushwoosh. Puede encontrarlo en su Panel de Control:\


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

**11.** En `Info.plist`, establezca:
    - la clave `Pushwoosh_API_TOKEN` al [Token de API de Dispositivo de Pushwoosh](/es/developer/api-reference/api-access-token/#device-api-token)

> **Importante:** Asegúrese de dar al token acceso a la aplicación correcta en su Panel de Control de Pushwoosh. [Aprenda más](/es/developer/api-reference/api-access-token/#edit-token)


**12.** En la parte multiplataforma de **App.xaml.cs**, agregue el registro al método `onStart`:

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


> **Nota para usuarios de Windows:**
>Al compilar, puede encontrar un problema relacionado con la longitud de la ruta del archivo.
>Esto se debe a que la longitud combinada de los directorios utilizados por Visual Studio y las rutas de archivo dentro del SDK de Pushwoosh excede la limitación de longitud máxima de ruta de Windows de 260 caracteres.
>Para resolver este problema, habilite la configuración LongPathsEnabled en el Registro de Windows.

### Comparta sus comentarios con nosotros

Sus comentarios nos ayudan a crear una mejor experiencia, por lo que nos encantaría saber de usted si tiene algún problema durante el proceso de integración del SDK. Si enfrenta alguna dificultad, no dude en compartir sus pensamientos con nosotros [a través de este formulario](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).