# تخصيص إضافة Cordova

## إشعارات الدفع في الواجهة الأمامية

عند تلقي إشعار دفع في الخلفية، لا يتم تشغيل أي أحداث حتى يتم النقر على إشعار الدفع. بعد فتحه، تقوم إضافة Pushwoosh بتشغيل حدثي `push-receive` و `push-notification`.

عندما يتم تلقي إشعار دفع في الواجهة الأمامية، تقوم الإضافة بتشغيل حدث `push-receive` تلقائيًا، وتنشئ إشعارًا في مركز الإشعارات (Notification Center). عند فتح هذا الإشعار، يتم تشغيل حدث `push-notification`.

يمكنك الاستماع إلى حدث `push-receive` للتفاعل فورًا مع إشعار الدفع في حال تم تلقيه في الواجهة الأمامية، على سبيل المثال، تحديث المحتوى على الصفحة الحالية في تطبيقك. من ناحية أخرى، يُستخدم `push-notification` للتفاعل مع حدث النقر على الإشعار، والذي يتطلب تفاعل المستخدم، على سبيل المثال، للتنقل داخل تطبيقك، أو تشغيل عملية جديدة في تطبيقك، إلخ.

لتغيير مظهر إشعار الدفع في الواجهة الأمامية، يمكنك استخدام تفضيلي **IOS\_FOREGROUND\_ALERT\_TYPE** و **ANDROID\_FOREGROUND\_PUSH**:

**IOS\_FOREGROUND\_ALERT\_TYPE**

*   `NONE` – عدم عرض إشعار عندما يكون التطبيق في الواجهة الأمامية (الافتراضي)
*   `BANNER` – يعرض تنبيهًا على شكل لافتة داخل التطبيق
*   `ALERT` – إشعار تنبيه

**ANDROID\_FOREGROUND\_PUSH**

*   `true` – عدم معالجة إشعارات الدفع في الواجهة الأمامية تلقائيًا
*   `false` – معالجة إشعارات الدفع في الواجهة الأمامية تلقائيًا (الافتراضي)

مثال:

```
cordova plugin add pushwoosh-cordova-plugin --variable IOS_FOREGROUND_ALERT_TYPE="ALERT" --variable ANDROID_FOREGROUND_PUSH="true"
```

## صوت إشعار الدفع المخصص

لتمكين صوت إشعار مخصص على Android، ضع ملفات الصوت في مجلد **www/res** وحدد كل صوت في `config.xml`:

```txt
<?xml version=‘1.0’ encoding=‘utf-8’?>
<widget id="YOUR_ID" version="1.0.0" xmlns="http://www.w3.org/ns/widgets” xmlns:cdv=“http://cordova.apache.org/ns/1.0">
	...
    <platform name="android">
        <allow-intent href="market:*" />
		...
        <-- Add this line for each sound -->
        <resource-file src="www/res/push.wav" target="res/raw/push.wav" />
    </platform>
</widget>
```

ستكون الأصوات متاحة في القائمة المنسدلة **Sound** في لوحة **Send Push**.

على iOS، لا يتم ربط ملفات الصوت تلقائيًا بتطبيق Pushwoosh حتى الآن، ولكن يمكن استخدامها يدويًا، على سبيل المثال، `www/res/sound_name.wav`.

<Aside type="caution">
#### iOS

تدعم إشعارات iOS صيغ الملفات .aiff و .wav و .caf فقط.
</Aside>

## أيقونة إشعار الدفع المخصصة

يمكن تخصيص أيقونة إشعار الدفع على Android محليًا باستخدام `pw_notification` كاسم مورد لهذه الأيقونة (انظر العينة [1](https://github.com/Pushwoosh/pushwoosh-phonegap-cordova-sample/blob/master/Cordova/hooks/after_platform_add/2_set_notification_icon.js) [2](https://github.com/Pushwoosh/pushwoosh-phonegap-cordova-sample/tree/master/Cordova/config/android/res))؛ أو عن بعد عن طريق الإشارة إلى أي اسم مورد في إعداد **Icon** في لوحة **Send Push**.

## بيانات إشعار الدفع المخصصة

يمكن إرسال بيانات إشعار الدفع المخصصة باستخدام إعداد **Action** في لوحة **Send Push**. لتلقي ومعالجة هذه البيانات، استخدم الكود التالي:

```javascript
document.addEventListener('push-notification',
  function(event) {
    var message = event.notification.message; // Push message
    var userData = event.notification.userdata; // Custom push data

    if (userData) {
      // handle custom push data here
    }
  }
);
```

## التحكم في مستوى السجل (Log level)

للمساعدة في تصحيح الأخطاء والتكامل، سيقوم SDK بطباعة جميع الطلبات إلى وحدة التحكم (console) بشكل افتراضي. عندما تكون جاهزًا للبناء الإنتاجي، قم بتعيين متغير `LOG_LEVEL` إلى إحدى القيم التالية:

*   `NONE` – لا توجد سجلات من SDK
*   `ERROR` – عرض الأخطاء فقط في وحدة التحكم
*   `WARNING` – إظهار التحذيرات
*   `INFO` – إظهار الرسائل المعلوماتية
*   `DEBUG` – إظهار كل شيء، بما في ذلك معلومات تصحيح الأخطاء (الافتراضي)

مثال:

```
cordova plugin add pushwoosh-cordova-plugin --variable LOG_LEVEL="INFO"
```

## الروابط العميقة (Deep linking)

نوصي باستخدام [https://github.com/EddyVerbruggen/Custom-URL-scheme](https://github.com/EddyVerbruggen/Custom-URL-scheme)\
من السهل جدًا إعداد الروابط العميقة لـ Cordova وهي تعمل مع وظيفة الروابط العميقة في Pushwoosh مباشرة.

يمكنك العثور على معلومات التثبيت والاستخدام في [هذا الدليل](/ar/developer/guides/messaging-channels/deep-linking/) أو في [وثائق الإضافة](https://github.com/EddyVerbruggen/Custom-URL-scheme#2-installation).

## جسر Rich Media JS

يمكنك استدعاء دوال JS الخاصة بك من Rich Media في Cordova WebView عبر واجهات javascript.\
يجب أن يكون الاستدعاء من Rich Media بالتنسيق التالي:

\<interface>.callFunction('\<function\_name>', \<params\_string>)

مثال:

**1.** أنشئ Rich Media مع استدعاء javascript:

```javascript
testBridge.callFunction('testFunction', JSON.stringify({'param1' : 1, 'param2':'test'}))
```

**2.** أضف واجهة javascript إلى مشروعك:

```javascript
pushNotification.addJavaScriptInterface('testBridge');
```

**3.** أضف الدالة:

```javascript
function testFunction(params) {
    alert("Bridge is working! " + params.param1 + " " + params.param2);
}
```

## استخدام إضافة Pushwoosh مع خدمات FCM الأخرى

إذا كان تطبيقك يستخدم إضافات أخرى تعتمد على **firebase-messaging**، فقد يؤدي ذلك إلى تعارضات، أو إلى عدم عمل إحدى الإضافات كما هو متوقع. لحل هذا التعارض، يمكنك إضافة فئة FirebaseMessagingService مخصصة ستقوم بتوجيه إشعارات الدفع بين الإضافات. تحتوي إضافة Pushwoosh Cordova على قالب لهذه الفئة يمكنك استخدامه كما هو لفرض مرور جميع الإشعارات عبر معالجات Pushwoosh أو تعديله لمعالجة الإشعارات من مقدمي خدمات آخرين أيضًا. لتمكين القالب، قم بإلغاء التعليق على الأسطر التالية في ملف `plugin.xml` الخاص بالإضافة:

```
    <service android:name="com.pushwoosh.plugin.pushnotifications.CustomFirebaseMessagingService" android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
```

## شاركنا ملاحظاتك

تساعدنا ملاحظاتك في إنشاء تجربة أفضل، لذلك نود أن نسمع منك إذا واجهت أي مشاكل أثناء عملية تكامل SDK. إذا واجهت أي صعوبات، فلا تتردد في مشاركة أفكارك معنا [عبر هذا النموذج](https://docs.google.com/forms/d/e/1FAIpQLSd_0b8jwn-V_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).