# 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.** أضف الأسطر التالية قبل تعريف مساحة الاسم (namespace) في ملف **MainActivity.cs** الخاص بك (**XXXXX-XXXXX** هنا هو معرف تطبيق Pushwoosh الخاص بك):

```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](/ar/developer/api-reference/api-access-token/#device-api-token) لديه صلاحية الوصول إلى التطبيق الصحيح في لوحة تحكم Pushwoosh الخاصة بك. [تعرف على المزيد](/ar/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 الخاص بك. يمكنك العثور عليه في لوحة التحكم الخاصة بك:\


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

**11.** في `Info.plist`، قم بتعيين:
    - مفتاح `Pushwoosh_API_TOKEN` إلى [رمز Pushwoosh Device API](/ar/developer/api-reference/api-access-token/#device-api-token)

> **هام:** تأكد من منح الرمز صلاحية الوصول إلى التطبيق الصحيح في لوحة تحكم Pushwoosh الخاصة بك. [تعرف على المزيد](/ar/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).