# 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.** ยอมรับใบอนุญาตสำหรับ dependency ของ Android ที่ส่งผ่านหากจำเป็น:

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

**3.** กำหนดค่าโปรเจกต์ของคุณใน [Firebase Console](https://console.firebase.google.com/u/0/)

**4.** เพิ่ม **google-services.json** ไปยังไดเรกทอรีรากของแพลตฟอร์ม Android ของคุณ ตั้งค่า build action เป็น **GoogleServicesJson** สำหรับไฟล์นี้:

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

**5.** เพิ่มบรรทัดต่อไปนี้ก่อนการประกาศ namespace ในไฟล์ **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** ของคุณ ให้ override เมธอด `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](/th/developer/api-reference/api-access-token/#device-api-token) สามารถเข้าถึงแอปพลิเคชันที่ถูกต้องใน Pushwoosh Control Panel ของคุณ [เรียนรู้เพิ่มเติม](/th/developer/api-reference/api-access-token/#edit-token)

**9.** ทำการเปลี่ยนแปลงต่อไปนี้ในไฟล์ **AppDelegate.cs** ของโปรเจกต์ iOS ของคุณ:

ที่ตอนต้นของเมธอด `FinishedLaunching` ให้ใส่บรรทัดต่อไปนี้: \
`PushManager.Init();`

เพิ่มเมธอดเหล่านี้ไปยัง **AppDelegate** (คลาส `MauiUIApplicationDelegate` ไม่ได้ export เมธอดเหล่านี้โดยค่าเริ่มต้น ดังนั้นคุณต้องทำด้วยตนเอง):

```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](/th/developer/api-reference/api-access-token/#device-api-token)

> **สำคัญ:** ตรวจสอบให้แน่ใจว่าโทเค็นสามารถเข้าถึงแอปที่ถูกต้องใน Pushwoosh Control Panel ของคุณ [เรียนรู้เพิ่มเติม](/th/developer/api-reference/api-access-token/#edit-token)


**12.** ในส่วน cross-platform ของไฟล์ **App.xaml.cs** ให้เพิ่มการลงทะเบียนไปยังเมธอด `onStart`:

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


> **หมายเหตุสำหรับผู้ใช้ Windows:**
>เมื่อทำการ build คุณอาจพบปัญหาที่เกี่ยวข้องกับความยาวของเส้นทางไฟล์
>ปัญหานี้เกิดจากความยาวรวมของไดเรกทอรีที่ Visual Studio ใช้และเส้นทางไฟล์ภายใน Pushwoosh SDK เกินขีดจำกัดความยาวเส้นทางสูงสุดของ Windows ที่ 260 ตัวอักษร
>เพื่อแก้ไขปัญหานี้ ให้เปิดใช้งานการตั้งค่า LongPathsEnabled ใน Windows Registry

### แบ่งปันความคิดเห็นของคุณกับเรา

ความคิดเห็นของคุณช่วยให้เราสร้างประสบการณ์ที่ดีขึ้น ดังนั้นเรายินดีที่จะรับฟังจากคุณหากคุณมีปัญหาใดๆ ในระหว่างขั้นตอนการผสานการทำงาน SDK หากคุณประสบปัญหาใดๆ โปรดอย่าลังเลที่จะแบ่งปันความคิดเห็นของคุณกับเรา [ผ่านแบบฟอร์มนี้](https://docs.google.com/forms/d/e/1FAIpQLSd_0b8jwn-V_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform)