# MAUI Dotnet

* [**Исходный код модуля**](https://github.com/Pushwoosh/pushwoosh-dotnet)
* [**Скачать пример**](https://github.com/Pushwoosh/pushwoosh-dotnet/tree/main/Sample)

### Интеграция SDK

**1.** Добавьте Nuget-пакет **Pushwoosh.DotNet** в проекты для Android и iOS:

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

**2.** Примите лицензии для транзитивных зависимостей Android, если это необходимо:

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

**3.** Настройте ваш проект в [Firebase Console](https://console.firebase.google.com/u/0/).

**4.** Добавьте **google-services.json** в корневой каталог вашей платформы Android. Установите для этого файла действие сборки **GoogleServicesJson**:

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

**5.** Добавьте следующие строки перед объявлением пространства имен в вашем файле **MainActivity.cs** (**XXXXX-XXXXX** — это ваш Pushwoosh Application ID):

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

**6.** В вашем файле **MainActivity.cs** переопределите метод `OnCreate()` и вызовите `PushManager.Init();` после `base.OnCreate(savedInstanceState);`

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

**7.** В вашем проекте Android найдите или создайте файл **Resources/values/strings.xml**. Добавьте в него строку с вашим Sender ID:

```txt
<string name="fcm_sender_id">YOUR_SENDER_ID</string>
```
**8.** В ваш `AndroidManifest.xml` добавьте следующее:

```xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />
```
> **Важно:** Убедитесь, что [Device API token](/ru/developer/api-reference/api-access-token/#device-api-token) имеет доступ к нужному приложению в вашей Pushwoosh Control Panel. [Подробнее](/ru/developer/api-reference/api-access-token/#edit-token)

**9.** Внесите следующие изменения в файл **AppDelegate.cs** вашего проекта iOS:

В начало метода `FinishedLaunching` добавьте следующую строку: \
`PushManager.Init();`

Добавьте эти методы в **AppDelegate** (класс `MauiUIApplicationDelegate` не экспортирует эти методы по умолчанию, поэтому их нужно добавить вручную):

```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.** В файле **Info.plist** измените значение **Pushwoosh\_APPID** на ваш Pushwoosh Application Code. Его можно найти в вашей Control Panel:\


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

**11.** В `Info.plist` установите:
    - ключ `Pushwoosh_API_TOKEN` на [Pushwoosh Device API Token](/ru/developer/api-reference/api-access-token/#device-api-token)

> **Важно:** Убедитесь, что токен имеет доступ к нужному приложению в вашей Pushwoosh Control Panel. [Подробнее](/ru/developer/api-reference/api-access-token/#edit-token)


**12.** В кроссплатформенной части файла **App.xaml.cs** добавьте регистрацию в метод `onStart`:

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


> **Примечание для пользователей Windows:**
>При сборке вы можете столкнуться с проблемой, связанной с длиной пути к файлу.
>Это связано с тем, что общая длина каталогов, используемых Visual Studio, и путей к файлам в Pushwoosh SDK превышает ограничение Windows на максимальную длину пути в 260 символов.
>Чтобы решить эту проблему, включите параметр LongPathsEnabled в реестре Windows.

### Поделитесь с нами своим мнением

Ваши отзывы помогают нам улучшать наш продукт, поэтому мы будем рады, если вы расскажете нам о любых проблемах, возникших в процессе интеграции SDK. Если вы столкнулись с какими-либо трудностями, пожалуйста, не стесняйтесь поделиться своими мыслями с нами [через эту форму](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).