# कॉर्डोवा प्लगइन को कस्टमाइज़ करना

## फोरग्राउंड में पुश नोटिफिकेशन

बैकग्राउंड में पुश प्राप्त करते समय, जब तक पुश नोटिफिकेशन पर क्लिक नहीं किया जाता, तब तक कोई ईवेंट ट्रिगर नहीं होता है। इसे खोलने के बाद, Pushwoosh प्लगइन `push-receive` और `push-notification` ईवेंट्स को फायर करता है।

जब फोरग्राउंड में पुश प्राप्त होता है, तो प्लगइन स्वचालित रूप से `push-receive` फायर करता है, और नोटिफिकेशन सेंटर में एक नोटिफिकेशन बनाता है। जब यह नोटिफिकेशन खोला जाता है, तो यह `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"
```

## कस्टम पुश साउंड

एंड्रॉइड पर कस्टम नोटिफिकेशन साउंड को सक्षम करने के लिए, साउंड फ़ाइलों को **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>
```

साउंड **Send Push** पैनल के **Sound** ड्रॉपडाउन मेनू में उपलब्ध होंगे।

iOS पर, साउंड फ़ाइलें अभी तक Pushwoosh एप्लिकेशन के साथ स्वचालित रूप से संबद्ध नहीं हैं, लेकिन मैन्युअल रूप से उपयोग की जा सकती हैं, जैसे `www/res/sound_name.wav`।

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

iOS नोटिफिकेशन केवल .aiff, .wav, और .caf फ़ाइल स्वरूपों का समर्थन करते हैं।
</Aside>

## कस्टम पुश आइकन

पुश नोटिफिकेशन आइकन को एंड्रॉइड पर स्थानीय रूप से `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)); या **Send Push** पैनल में **Icon** सेटिंग में किसी भी संसाधन नाम का संदर्भ देकर दूरस्थ रूप से।

## कस्टम पुश डेटा

कस्टम पुश डेटा को **Send Push** पैनल में **Action** सेटिंग का उपयोग करके भेजा जा सकता है। ऐसे डेटा को प्राप्त करने और संभालने के लिए निम्नलिखित कोड का उपयोग करें:

```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
    }
  }
);
```

## लॉग स्तर को नियंत्रित करना

डीबगिंग और इंटीग्रेशन में सहायता के लिए, SDK डिफ़ॉल्ट रूप से कंसोल पर सभी अनुरोधों को प्रिंट करेगा। जब आप प्रोडक्शन बिल्ड के लिए तैयार हों, तो `LOG_LEVEL` वैरिएबल को निम्नलिखित मानों में से एक पर सेट करें:

*   `NONE` – SDK से कोई लॉग नहीं
*   `ERROR` – कंसोल में केवल त्रुटियाँ प्रदर्शित करें
*   `WARNING` – चेतावनियाँ दिखाएँ
*   `INFO` – सूचनात्मक संदेश दिखाएँ
*   `DEBUG` – डीबग जानकारी सहित सब कुछ दिखाएँ (डिफ़ॉल्ट)

उदाहरण:

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

## डीप लिंकिंग

हम [https://github.com/EddyVerbruggen/Custom-URL-scheme](https://github.com/EddyVerbruggen/Custom-URL-scheme) का उपयोग करने की सलाह देते हैं।\
कॉर्डोवा के लिए डीप लिंक सेट करना बहुत आसान है और यह Pushwoosh डीप लिंकिंग कार्यक्षमता के साथ आउट-ऑफ-द-बॉक्स काम करता है।

आप [इस गाइड](/hi/developer/guides/messaging-channels/deep-linking/) में या [प्लगइन डॉक्स](https://github.com/EddyVerbruggen/Custom-URL-scheme#2-installation) में इंस्टॉलेशन और उपयोग पा सकते हैं।

## रिच मीडिया जेएस ब्रिज

आप जावास्क्रिप्ट इंटरफेस के माध्यम से कॉर्डोवा वेबव्यू में रिच मीडिया से अपने जेएस फ़ंक्शंस को कॉल कर सकते हैं।\
रिच मीडिया से एक कॉल का निम्नलिखित प्रारूप होना चाहिए:

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

उदाहरण:

**1.** जावास्क्रिप्ट कॉल के साथ रिच मीडिया बनाएँ:

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

**2.** अपने प्रोजेक्ट में एक जावास्क्रिप्ट इंटरफ़ेस जोड़ें:

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

**3.** फ़ंक्शन जोड़ें:

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

## अन्य FCM सेवाओं के साथ Pushwoosh प्लगइन का उपयोग करना

यदि आपका ऐप अन्य प्लगइन्स का उपयोग करता है जो **firebase-messaging** पर निर्भर हैं, तो इसके परिणामस्वरूप टकराव हो सकता है, या प्लगइन्स में से एक अपेक्षित रूप से काम नहीं कर सकता है। इस टकराव को हल करने के लिए, आप एक कस्टम FirebaseMessagingService क्लास जोड़ सकते हैं जो प्लगइन्स के बीच पुश नोटिफिकेशन को रूट करेगा। Pushwoosh कॉर्डोवा प्लगइन में इस क्लास का एक टेम्पलेट होता है जिसे आप सभी नोटिफिकेशन को 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) अपने विचार हमारे साथ साझा करने में संकोच न करें।