# MAUI Dotnet

* [**Fonte do módulo**](https://github.com/Pushwoosh/pushwoosh-dotnet)
* [**Baixar exemplo**](https://github.com/Pushwoosh/pushwoosh-dotnet/tree/main/Sample)

### Integração do SDK

**1.** Adicione o pacote Nuget **Pushwoosh.DotNet** aos projetos Android e iOS:

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

**2.** Aceite as licenças para dependências transitivas do Android, se necessário:

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

**3.** Configure seu projeto no [Firebase Console](https://console.firebase.google.com/u/0/).

**4.** Adicione o arquivo **google-services.json** à raiz do diretório da sua plataforma Android. Defina a ação de compilação **GoogleServicesJson** para este arquivo:

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

**5.** Adicione as seguintes linhas antes de declarar o namespace em seu **MainActivity.cs** (**XXXXX-XXXXX** aqui é o seu ID de Aplicação Pushwoosh):

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

**6.** Em seu **MainActivity.cs**, sobrescreva o método `OnCreate()` e chame `PushManager.Init();` após `base.OnCreate(savedInstanceState);`

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

**7.** Em seu projeto Android, encontre o arquivo **Resources/values/strings.xml** ou crie-o. Adicione sua string de Sender ID lá:

```txt
<string name="fcm_sender_id">YOUR_SENDER_ID</string>
```
**8.** Em seu `AndroidManifest.xml`, adicione o seguinte:

```xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />
```
> **Importante:** Certifique-se de que o [token de API do Dispositivo](/pt/developer/api-reference/api-access-token/#device-api-token) tenha acesso à aplicação correta em seu Painel de Controle da Pushwoosh. [Saiba mais](/pt/developer/api-reference/api-access-token/#edit-token)

**9.** Faça as seguintes alterações no **AppDelegate.cs** do seu projeto iOS:

No início do método `FinishedLaunching`, coloque a seguinte linha: \
`PushManager.Init();`

Adicione estes métodos ao **AppDelegate** (a classe `MauiUIApplicationDelegate` não exporta esses métodos por padrão, então você precisa fazer isso 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.** No **Info.plist**, altere o valor de **Pushwoosh\_APPID** para o seu Código de Aplicação Pushwoosh. Você pode encontrá-lo em seu Painel de Controle:\


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

**11.** No `Info.plist`, defina o:
    - A chave `Pushwoosh_API_TOKEN` para o [Token de API de Dispositivo da Pushwoosh](/pt/developer/api-reference/api-access-token/#device-api-token)

> **Importante:** Certifique-se de dar ao token acesso ao aplicativo correto em seu Painel de Controle da Pushwoosh. [Saiba mais](/pt/developer/api-reference/api-access-token/#edit-token)


**12.** Na parte multiplataforma do **App.xaml.cs**, adicione o registro ao método `onStart`:

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


> **Nota para usuários do Windows:**
>Ao compilar, você pode encontrar um problema relacionado ao comprimento do caminho do arquivo.
>Isso ocorre porque o comprimento combinado dos diretórios usados pelo Visual Studio e os caminhos dos arquivos dentro do SDK da Pushwoosh excedem a limitação de comprimento máximo de caminho do Windows de 260 caracteres.
>Para resolver esse problema, habilite a configuração LongPathsEnabled no Registro do Windows.

### Compartilhe seu feedback conosco

Seu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas opiniões conosco [através deste formulário](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).