# वेब पुश SDK 3.0

<Aside type="note">
#### पूर्वापेक्षाएँ

अपनी HTTPS वेबसाइट पर वेब पुश SDK के एकीकरण के साथ आगे बढ़ने के लिए, आपको निम्नलिखित कार्य करने चाहिए:

1. अपना Pushwoosh एप्लिकेशन कोड खोजें।
2. Chrome और Firefox: अपनी Firebase API कुंजी और प्रेषक आईडी का पता लगाएँ। ऐसा करने के लिए, कृपया [Chrome और Firefox कॉन्फ़िगरेशन](/hi/developer/first-steps/connect-messaging-services/chrome-configuration/) गाइड के चरण 1-3 का पालन करें।
3. Safari: अपनी [वेबसाइट पुश आईडी](/hi/developer/first-steps/connect-messaging-services/safari-configuration/#1-registering-with-apple) का पता लगाएँ।
4. [Pushwoosh वेब पुश SDK](https://cdn.pushwoosh.com/webpush/v3/PushwooshWebSDKFiles.zip) डाउनलोड करें।
</Aside>

<Aside type="caution">
* Chrome पुश **स्व-हस्ताक्षरित** प्रमाणपत्रों (https/ssl) के साथ काम नहीं करेंगे। आपको विश्वसनीय प्राधिकरण द्वारा हस्ताक्षरित SSL प्रमाणपत्र की आवश्यकता होगी।
* पुश सूचनाएँ गुप्त (Incognito) और अतिथि (Guest) दोनों मोड में काम नहीं करती हैं।
* Safari के लिए ऑटो सदस्यता उपलब्ध नहीं है।
</Aside>

## एकीकरण

<Aside type="note" title="npm का उपयोग कर रहे हैं?">
  यदि आप पैकेज प्रबंधन के लिए npm का उपयोग करना पसंद करते हैं, तो आप npm के माध्यम से Pushwoosh वेब SDK को स्थापित और एकीकृत भी कर सकते हैं। विस्तृत निर्देशों के लिए कृपया हमारी [npm के साथ उपयोग गाइड](/hi/developer/pushwoosh-sdk/web-push-notifications/usage-with-npm/) देखें।
</Aside>

[**GitHub पर एकीकरण का नमूना**](https://github.com/Pushwoosh/web-push-notifications-sample)

### Pushwoosh वेब पुश SDK प्राप्त करें और इसे अनज़िप करें। आपके पास निम्नलिखित फ़ाइलें होनी चाहिए:

* **pushwoosh-service-worker.js**

### इन सभी फ़ाइलों को अपनी वेबसाइट डायरेक्टरी के टॉप-लेवल रूट में रखें।

<Aside type="note">
सुनिश्चित करें कि निम्नलिखित URL सार्वजनिक रूप से सुलभ हैं:

* [https://yoursite.com/pushwoosh-service-worker.js](https://yoursite.com/pushwoosh-service-worker.js)
</Aside>

### SDK को प्रारंभ करें:

1. हमारे CDN से SDK को _असिंक्रोनस रूप से_ शामिल करें।

<Aside title="Google Tag Manager समर्थित">

यदि आप Google Tag Manager का उपयोग कर रहे हैं तो [यहां](#installing-from-google-tag-manager) क्लिक करें।
</Aside>

```txt
<script type="text/javascript" src="//cdn.pushwoosh.com/webpush/v3/pushwoosh-web-notifications.js" async></script>
```

2. वेब पुश SDK को प्रारंभ करें और सुनिश्चित करें कि SDK पूरी तरह से लोड होने तक आप प्रारंभ को कतार में रखें।
<Aside type="note">
वेब पुश SDK को प्रारंभ करने के लिए, आपको `apiToken` पैरामीटर में एक [डिवाइस एपीआई टोकन](/hi/developer/api-reference/api-access-token/#device-api-token) शामिल करना होगा।

**महत्वपूर्ण:** सुनिश्चित करें कि टोकन के पास आपके Pushwoosh कंट्रोल पैनल में सही एप्लिकेशन तक पहुंच है। [और जानें](/hi/developer/api-reference/api-access-token/#edit-token)
</Aside>
```html
<script type="text/javascript">
var Pushwoosh = Pushwoosh || [];
Pushwoosh.push(['init', {
    logLevel: 'info', // possible values: error, info, debug
    applicationCode: 'XXXXX-XXXXX', // you application code from Pushwoosh Control Panel
    apiToken: 'XXXXXXX', //  Device API Token
    safariWebsitePushID: 'web.com.example.domain', //  unique reverse-domain string, obtained in you Apple Developer Portal. Only needed if you send push notifications to Safari browser
    defaultNotificationTitle: 'Pushwoosh', // sets a default title for push notifications
    defaultNotificationImage: 'https://yoursite.com/img/logo-medium.png', // URL to custom custom notification image
    autoSubscribe: false, // or true. If true, prompts a user to subscribe for pushes upon SDK initialization
    subscribeWidget: {
      enable: true
    },
    userId: 'user_id', // optional, set custom user ID
    tags: {
        'Name': 'John Smith'   	// optional, set custom Tags
    }
}]);
</script>
```

#### वेब पॉपअप

अपनी साइट पर [वेब पॉपअप अभियान](/hi/product/messaging-channels/web-popups/#start-working-with-web-popups) सक्षम करने के लिए अपने `init` ऑब्जेक्ट में `webPopups` जोड़ें।

```javascript
webPopups: {
  enable: true,
},
```

वेब पॉपअप अभियान आपके द्वारा कंट्रोल पैनल में कॉन्फ़िगर किए गए ओवरले प्रदर्शित करते हैं जैसे प्रोमो, घोषणाएं, या लीड कैप्चर फॉर्म। [कस्टम सदस्यता पॉपअप](/hi/developer/pushwoosh-sdk/web-push-notifications/custom-subscription-popup/) (`subscribePopup`) के विपरीत, जो केवल वेब पुश ऑप्ट-इन को संभालता है, वेब पॉपअप अभियान आपके द्वारा कॉन्फ़िगर की गई किसी भी सामग्री को प्रदर्शित कर सकते हैं।
कंट्रोल पैनल में सेटअप के लिए, [वेब पॉपअप को समझना](/hi/product/messaging-channels/web-popups/) देखें।

#### पुश सदस्यता बटन

अपने उपयोगकर्ताओं को पुश सूचनाओं के लिए सदस्यता लेने के लिए प्रेरित करने के लिए, हम आपकी वेबसाइट पर [पुश सदस्यता बटन](/hi/developer/pushwoosh-sdk/web-push-notifications/push-subscription-button/) लागू करने की सलाह देते हैं। उपयोगकर्ता अनुभव को बढ़ाएं और अधिक ग्राहक प्राप्त करें!


## कॉन्फ़िगरेशन

अपनी वेबसाइट में पुश सूचनाओं को लागू करना समाप्त करने के लिए, आपको हमारे चरण-दर-चरण गाइड का पालन करते हुए अपने Pushwoosh कंट्रोल पैनल में वेब प्लेटफॉर्म को कॉन्फ़िगर करना होगा:

* [Chrome कॉन्फ़िगरेशन](/hi/developer/first-steps/connect-messaging-services/chrome-configuration/)
* [Firefox कॉन्फ़िगरेशन](/hi/developer/first-steps/connect-messaging-services/chrome-configuration/)
* [Safari कॉन्फ़िगरेशन](/hi/developer/first-steps/connect-messaging-services/safari-configuration/)

<Aside type="note">
FCM प्रेषक आईडी और API कुंजी प्राप्त करने के लिए, कृपया [Android कॉन्फ़िगरेशन गाइड](/hi/developer/first-steps/connect-messaging-services/android-configuration/android-firebase-configuration/) के चरण 1-3 का पालन करें।
</Aside>

## सर्विस वर्कर को एक अलग स्कोप में पंजीकृत करना

कभी-कभी आप सर्विस वर्कर फ़ाइल को वेबसाइट की रूट डायरेक्टरी में नहीं बल्कि एक सबडायरेक्टरी में रख सकते हैं।

इस मामले में, एक पैरामीटर जोड़कर कॉन्फ़िगरेशन (**चरण 4.3**) को संशोधित करें

`serviceWorkerUrl: “/push-notifications/pushwoosh-service-worker.js”`

जहां `/push-notifications/pushwoosh-service-worker.js` `pushwoosh-service-worker.js` फ़ाइल का पथ है।

## इवेंट हैंडलर

Pushwoosh वेब SDK 3.0 में आप कुछ घटनाओं को ट्रैक करने के लिए उनकी सदस्यता ले सकते हैं**,** या यदि आपको अब उन्हें ट्रैक करने की आवश्यकता नहीं है तो घटनाओं से सदस्यता समाप्त कर सकते हैं।

वेब SDK 3.0 लोड को ट्रैक करने के लिए, `onLoad` इवेंट को इस प्रकार फायर करें:

```javascript
// Load Event
Pushwoosh.push(['onLoad', (api) => {
  console.log('Pushwoosh load!');
}]);
```

सही वेब SDK प्रारंभ को ट्रैक करने के लिए, `onReady` इवेंट को फायर करें:

```javascript
// Ready Event
Pushwoosh.push((api) => {
  console.log('Pushwoosh ready!');
});
```

किसी भी SDK इवेंट की सदस्यता लेने या सदस्यता समाप्त करने के लिए, SDK लोड के बाद हैंडलर का उपयोग करें:

```javascript
Pushwoosh.push(['onLoad', (api) => {
  function onEventNameHandler() {
    console.log('Triggered event: event-name!');
  }

  // To subscribe to an event:
  Pushwoosh.addEventHandler('event-name', onEventNameHandler)

  // To unsubscribe from an event:
  Pushwoosh.removeEventHandler('event-name', onEventNameHandler)
}]);
```

### SDK इवेंट्स

#### सब्सक्राइब इवेंट

उपयोगकर्ता द्वारा पुश सूचनाएँ प्राप्त करने के लिए सहमत होने के बाद निष्पादित किया जाता है।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  Pushwoosh.addEventHandler('subscribe', (payload) => {
    console.log('Triggered event: subscribe');
  });
}]);
```

#### अनसब्सक्राइब इवेंट

डिवाइस को सूचनाओं से अपंजीकृत करने के बाद निष्पादित किया जाता है।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  Pushwoosh.addEventHandler('unsubscribe', (payload) => {
    console.log('Triggered event: unsubscribe');
  });
}]);
```

#### सदस्यता विजेट इवेंट्स

एक सदस्यता प्रॉम्प्ट विजेट के प्रदर्शन को ट्रैक करें।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  // सदस्यता प्रॉम्प्ट विजेट के प्रदर्शन पर निष्पादित
  Pushwoosh.addEventHandler('show-subscription-widget', (payload) => {
    console.log('Triggered event: show-subscription-widget');
  });

  // सदस्यता प्रॉम्प्ट विजेट को छिपाने पर निष्पादित
  Pushwoosh.addEventHandler('hide-subscription-widget', (payload) => {
    console.log('Triggered event: hide-subscription-widget');
  });
}]);
```

#### सूचना अनुमति संवाद इवेंट्स

देशी सदस्यता संवाद के प्रदर्शन को ट्रैक करें।

```javascript
Pushwoosh.push(['onLoad', function (api) {
  // अनुमति संवाद प्रदर्शन पर निष्पादित
  Pushwoosh.addEventHandler('show-notification-permission-dialog', (payload) => {
    console.log('Triggered event: show-notification-permission-dialog');
  });

  // तीन संभावित स्थितियों में से एक के साथ अनुमति संवाद को छिपाने पर निष्पादित:
  // 1. डिफ़ॉल्ट - संवाद बंद है
  // 2. दी गई - अनुमति दी गई है
  // 3. अस्वीकृत - अनुमति अस्वीकृत है
  Pushwoosh.addEventHandler('hide-notification-permission-dialog', (payload) => {
    console.log('Triggered event: hide-notification-permission-dialog', payload.permission);
  });
}]);
```

#### अनुमति इवेंट्स

SDK प्रारंभ पर पुश सूचनाओं की अनुमति की स्थिति की जाँच करें; जब भी यह स्थिति अपडेट होती है तो उसे ट्रैक करें।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  // SDK प्रारंभ के दौरान निष्पादित यदि 'autoSubscribe: false' या/और यदि कोई उपयोगकर्ता पुश सूचना प्रॉम्प्ट को अनदेखा करता है।
  Pushwoosh.addEventHandler('permission-default', (payload) => {
    console.log('Triggered event: permission-default');
  });

  // SDK प्रारंभ के दौरान निष्पादित यदि सूचनाएँ अवरुद्ध हैं या एक बार जब कोई उपयोगकर्ता पुश सूचनाओं को अवरुद्ध करता है।
  Pushwoosh.addEventHandler('permission-denied', (payload) => {
    console.log('Triggered event: permission-denied');
  });

  // SDK प्रारंभ के दौरान निष्पादित यदि सूचनाओं की अनुमति है या एक बार जब कोई उपयोगकर्ता पुश सूचनाओं की अनुमति देता है।
  Pushwoosh.addEventHandler('permission-granted', (payload) => {
    console.log('Triggered event: permission-granted');
  });
}]);
```

#### पुश इवेंट प्राप्त करें

डिवाइस पर पुश डिलीवरी को ट्रैक करें।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  // जब एक पुश सूचना प्रदर्शित होती है तो निष्पादित किया जाता है।
  Pushwoosh.addEventHandler('receive-push', (payload) => {
    console.log('Triggered event: receive-push', payload.notification);
  });
}]);
```

#### सूचना इवेंट्स

ट्रैक करें कि क्या कोई पुश सूचना उपयोगकर्ता द्वारा खोली या बंद की गई है।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  // जब कोई उपयोगकर्ता सूचना पर क्लिक करता है तो निष्पादित किया जाता है।
  Pushwoosh.addEventHandler('open-notification', (payload) => {
    console.log('Triggered event: open-notification', payload.notification);
  });

  // जब कोई उपयोगकर्ता पुश सूचना बंद करता है तो निष्पादित किया जाता है।
  Pushwoosh.addEventHandler('hide-notification', (payload) => {
    console.log('Triggered event: hide-notification', payload.notification);
  });
}]);
```

#### इनबॉक्स इवेंट्स

इनबॉक्स में भेजी गई सूचनाओं को ट्रैक करें।

```javascript
Pushwoosh.push(['onLoad', (api) => {
  // इनबॉक्स संदेश प्राप्त होने और indexedDB में सहेजे जाने के बाद सर्विसवर्कर द्वारा निष्पादित।
  Pushwoosh.addEventHandler('receive-inbox-message', (payload) => {
    console.log('Triggered event: receive-inbox-message', payload.message);
  });

  // पेज लोड होने के दौरान इनबॉक्स के स्वचालित रूप से अपडेट होने के बाद निष्पादित।
  Pushwoosh.addEventHandler('update-inbox-messages', (payload) => {
    console.log('Triggered event: receive-inbox-message', payload.messages);
  });
}]);
```

#### कस्टम सदस्यता पॉपअप इवेंट्स

कस्टम सदस्यता पॉपअप इवेंट्स को संभालने के बारे में विवरण के लिए, कृपया [कस्टम सदस्यता पॉपअप इवेंट्स गाइड](/hi/developer/pushwoosh-sdk/web-push-notifications/custom-subscription-popup/#custom-subscription-popup-events) देखें।

## API

वेब पुश SDK प्रारंभ होने के बाद, आप Pushwoosh API पर निम्नलिखित कॉल कर सकते हैं। सभी विधियाँ [**Promise**](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise) ऑब्जेक्ट लौटाती हैं।

```javascript
Pushwoosh.push((api) => {
  // उपयोगकर्ता के लिए टैग सेट करें
  api.setTags({
    'Tag Name 1': 'value1',
    'Tag Name 2': 'value2'
  });

  // सर्वर से उपयोगकर्ता के लिए टैग प्राप्त करें
  api.getTags();

  // उपयोगकर्ता आईडी पंजीकृत करें
  api.registerUser('user123');

    // उपयोगकर्ता ईमेल पंजीकृत करें
  api.registerEmail('user@example.com');

  // SMS नंबर पंजीकृत करें
  api.registerSmsNumber('+15551234567');

  // WhatsApp नंबर पंजीकृत करें
  api.registerWhatsappNumber('+1234567890');

  // एक इवेंट पोस्ट करें
  api.postEvent('myEventName', {attributeName: 'attributeValue'});

  //सूचनाओं से अपंजीकृत करें
  api.unregisterDevice();

  // डिवाइस की भाषा सेट करें ("भाषा" टैग में मान को ओवरराइड करता है)
  api.setLanguage('es');

  // वैकल्पिक रूप से उपकरणों और चैनलों के साथ उपयोगकर्ता को बहु-पंजीकृत करें
  api.multiRegisterDevice({
    user_id: 'user123',
    email: 'user@example.com',
    sms_phone_number: '+1234567890',
    tags: {
      'UserType': { operation: TTagOperationSet, value: 'Premium' },
      'Interests': { operation: TTagOperationAppend, values: ['sports', 'technology'] }
    }
  });
});
```

### multiRegisterDevice

उन्नत पंजीकरण विधि जो एक ही API कॉल में कई उपकरणों और मैसेजिंग चैनलों के साथ एक उपयोगकर्ता प्रोफ़ाइल को पंजीकृत करने की अनुमति देती है। यह विधि विशेष रूप से क्रॉस-प्लेटफ़ॉर्म अनुप्रयोगों के लिए या ओमनीचैनल मैसेजिंग रणनीतियों को लागू करते समय उपयोगी है।

```javascript
Pushwoosh.push((api) => {
  api.multiRegisterDevice({
    user_id: 'user123',              // Optional: User identifier
    email: 'user@example.com',       // Optional: Email for email messaging
    sms_phone_number: '+1234567890', // Optional: SMS phone number (E.164 format)
    whatsapp_phone_number: '+1234567890', // Optional: WhatsApp number (E.164 format)
    kakao_phone_number: '+1234567890',    // Optional: KakaoTalk number (E.164 format)
    language: 'en',                  // Optional: Language code (ISO 639-1)
    timezone: 'America/New_York',    // Optional: Timezone identifier
    city: 'New York',               // Optional: City for targeting
    country: 'US',                  // Optional: Country for targeting
    state: 'NY',                    // Optional: State for targeting
    tags: {                         // Optional: Tag values with operations
      'UserType': {
        operation: TTagOperationSet,     // Set tag value (0)
        value: 'Premium'
      },
      'Interests': {
        operation: TTagOperationAppend,  // Append to tag value (1)
        values: ['sports', 'technology']
      },
      'LoginCount': {
        operation: TTagOperationIncrement, // Increment tag value (3)
        value: '1'
      }
    },
    push_devices: [                 // Optional: Array of push devices
      {
        hwid: 'web-device-456',
        platform: TPlatformChrome, // Chrome platform (11)
        push_token: 'fcm-token-here',
        app_version: '2.1.0',
        platformData: {
          public_key: 'web-push-public-key',
          auth_token: 'web-push-auth-token',
          browser: 'chrome'
        }
      }
    ]
  })
  .then((response) => {
    console.log('Multi-registration successful:', response);
  })
  .catch((error) => {
    console.error('Multi-registration failed:', error);
  });
});
```

**प्लेटफ़ॉर्म प्रकार:**
- `TPlatformSafari` (10): Safari प्लेटफ़ॉर्म
- `TPlatformChrome` (11): Chrome प्लेटफ़ॉर्म
- `TPlatformFirefox` (12): Firefox प्लेटफ़ॉर्म

**टैग ऑपरेशन प्रकार:**
- `TTagOperationSet` (0): टैग मान सेट करें (मौजूदा मान को बदलें)
- `TTagOperationAppend` (1): टैग मान में जोड़ें (सूची में जोड़ें)
- `TTagOperationRemove` (2): टैग मान हटाएँ (सूची से हटाएँ)
- `TTagOperationIncrement` (3): टैग मान बढ़ाएँ (संख्यात्मक वृद्धि)

**लाभ:**
- **एकल API कॉल**: एक साथ कई डिवाइस और चैनल पंजीकृत करें
- **परमाणु संचालन**: सभी पंजीकरण एक साथ सफल या विफल होते हैं
- **उपयोगकर्ता-केंद्रित**: सभी उपकरणों को एक ही उपयोगकर्ता प्रोफ़ाइल से जोड़ता है
- **उन्नत टैगिंग**: जटिल टैग संचालन का समर्थन करता है
- **क्रॉस-प्लेटफ़ॉर्म**: एक साथ कई प्लेटफ़ॉर्म संभालें

Pushwoosh को टैग भेजने का उदाहरण:

```javascript
Pushwoosh.push((api) => {
  var myCustomTags = {
    'Tag 1': 123,
    'Tag 2': 'some string'
  };
  api.setTags(myCustomTags)
    .then((res) => {
      var skipped = res && res.skipped || [];
      if (!skipped.length) {
        console.log('success');
      }
      else {
        console.warn('skipped tags:', skipped);
      }
    })
    .catch((err) => {
      console.error('setTags error:', err);
    });
});
```

### टैग मान बढ़ाएँ

एक नंबर टैग के **मान को बढ़ाने** के लिए, `operation` पैरामीटर का उपयोग ‘increment’ मान के साथ इस प्रकार करें:

```javascript
Pushwoosh.push((api) => {
  api.setTags({
    'Tag 1': {
      operation: 'increment',
      value: 1
    }
  })
});
```

### टैग मान जोड़ें

मौजूदा सूची टैग में **नए मान जोड़ने** के लिए, `operation` पैरामीटर का उपयोग ‘append’ मान के साथ इस प्रकार करें:

```javascript
Pushwoosh.push((api) => {
  api.setTags({
    'Tag 3': {
      operation: 'append',
      value: ['Value3']
    }
  })
});
```

### टैग मान हटाएँ

एक सूची टैग से **एक मान हटाने** के लिए, `operation` पैरामीटर का उपयोग ‘remove’ मान के साथ इस प्रकार करें:

```javascript
Pushwoosh.push((api) =>{
  api.setTags({
    'Tag 3': {
      operation: 'remove',
      value: ['Value2']
    }
  })
});
```

## सार्वजनिक विधियाँ

<Aside type="caution">
कृपया ध्यान दें कि **Safari उपयोगकर्ताओं के लिए ऑटो सदस्यता उपलब्ध नहीं है**। कृपया `Pushwoosh.subscribe()` विधि को कॉल करके Safari उपयोगकर्ताओं को पुश सूचनाओं के लिए सब्सक्राइब करने पर विचार करें।
</Aside>

**Pushwoosh.subscribe()**

इस विधि का उपयोग पुश सूचनाओं के लिए उपयोगकर्ता की अनुमति का अनुरोध करने के लिए किया जाता है। यदि कोई उपयोगकर्ता पहले से ही सब्सक्राइब है, तो विधि निष्पादन बंद कर देगी।

यदि किसी उपयोगकर्ता ने अभी तक पुश के लिए सब्सक्राइब नहीं किया है:

1\. पुश सूचनाओं के लिए अनुमति का अनुरोध किया जाता है।

<img src="/web-push-notifications-web-push-sdk-3.0-1.webp" alt=""/>

2\. यदि कोई उपयोगकर्ता सूचनाओं की अनुमति देता है, तो `onSubscribe` इवेंट ट्रिगर होता है।

`Pushwoosh.subscribe()` स्वचालित रूप से निष्पादित होता है यदि SDK प्रारंभ के दौरान `autoSubscribe: true` सेट किया गया है।

यदि आपने प्रारंभ के दौरान `autoSubscribe: false` पैरामीटर का उपयोग करके उपयोगकर्ता को पुश के लिए सब्सक्राइब करने के लिए मैन्युअल रूप से प्रॉम्प्ट करने का विकल्प चुना है तो इस विधि को कॉल करें:

```html
<button onclick="Pushwoosh.subscribe()">Subscribe</button>
<script>
  Pushwoosh.push(['onSubscribe', (api) => {
    console.log('User successfully subscribed');
  }]);
</script>
```

**Pushwoosh.unsubscribe()**

1. `/unregisterDevice` विधि निष्पादित होती है।
2. `onUnsubscribe` इवेंट ट्रिगर होता है।

```html
<button onclick="Pushwoosh.unsubscribe()">Unsubscribe</button>
<script type="text/javascript">
  Pushwoosh.push(['onUnsubscribe', (api) => {
    console.log('User successfully unsubscribed');
  }]);
</script>
```

**Pushwoosh.isSubscribed()**

जाँचता है कि क्या कोई उपयोगकर्ता सब्सक्राइब है और true/false फ्लैग लौटाता है।

```javascript
Pushwoosh.isSubscribed().then((isSubscribed) => {
  console.log('isSubscribed', isSubscribed);
});
```

**Pushwoosh.getHWID()**

Pushwoosh HWID लौटाता है।

```javascript
Pushwoosh.getHWID().then((hwid) => {
  console.log('hwid:', hwid);
});
```

**Pushwoosh.getPushToken()**

यदि उपलब्ध हो तो पुश टोकन लौटाता है।

```javascript
Pushwoosh.getPushToken().then((pushToken) => {
  console.log('pushToken:', pushToken);
});
```

**Pushwoosh.getUserId()**

यदि उपलब्ध हो तो [**उपयोगकर्ता आईडी**](/hi/developer/pushwoosh-knowledge-hub/users-userids/users-userids/) लौटाता है।

```javascript
Pushwoosh.getUserId().then((userId) => {
  console.log('userId:', userId);
});
```

**Pushwoosh.getParams()**

निम्नलिखित मापदंडों की एक सूची लौटाता है:

```javascript
Pushwoosh.getParams().then((params) => {
  params = params || {};
  var hwid = params.hwid;
  var pushToken = params.pushToken;
  var userId = params.userId;
});
```

**Pushwoosh.isAvailableNotifications()**

जाँचता है कि क्या कोई ब्राउज़र Pushwoosh WebSDK 3.0 का समर्थन करता है, ‘true’ या ‘false’ लौटाता है।

```
Pushwoosh.isAvailableNotifications() // true/false
```

### इनबॉक्स संदेश विधियाँ

**messagesWithNoActionPerformedCount(): Promise\<number>**

खोले गए संदेशों की संख्या लौटाता है।

```javascript
Pushwoosh.pwinbox.messagesWithNoActionPerformedCount()
  .then((count) => {
    console.log(`${count} messages opened`);
  });
```

**unreadMessagesCount()**

अपठित संदेशों की संख्या लौटाता है।

```javascript
Pushwoosh.pwinbox.unreadMessagesCount()
  .then((count) => {
    console.log(`${count} messages unread`);
  });
```

**messagesCount(): Promise\<number>**

संदेशों की कुल संख्या लौटाता है।

```javascript
Pushwoosh.pwinbox.messagesCount()
  .then((count) => {
    console.log(`${count} messages`);
  });
```

**loadMessages(): Promise\<Array>**

हटाए नहीं गए संदेशों की सूची लोड करता है।

```javascript
Pushwoosh.pwinbox.loadMessages()
  .then(() => {
    console.log('Messages have been loaded');
  });
```

**readMessagesWithCodes(codes: Array\<string>): Promise\<void>**

संदेशों को Inbox_Ids द्वारा पढ़े गए के रूप में चिह्नित करता है।

```javascript
Pushwoosh.pwinbox.readMessagesWithCodes(codes)
  .then(() => {
    console.log('Messages have been read');
  });
```

**performActionForMessageWithCode(code: string): Promise\<void>**

एक संदेश को सौंपे गए कार्य को करता है और संदेश को पढ़े गए के रूप में चिह्नित करता है।

```javascript
Pushwoosh.pwinbox.performActionForMessageWithCode(code)
  .then(() => {
    console.log('Action has been performed');
  });
```

**deleteMessagesWithCodes(codes: Array\<string>): Promise\<void>**

संदेशों को हटाए गए के रूप में चिह्नित करता है।

```javascript
Pushwoosh.pwinbox.deleteMessagesWithCodes([code])
  .then(() => {
    console.log('Messages have been deleted');
  });
```

**syncMessages(): Promise\<void>**

सर्वर के साथ संदेशों को सिंक्रनाइज़ करता है।

```javascript
Pushwoosh.pwinbox.syncMessages()
  .then(() => {
    console.log('Messages have been synchronized');
  });
```

## प्रोग्रेसिव वेब ऐप समर्थन

Pushwoosh को अपने प्रोग्रेसिव वेब एप्लिकेशन (PWA) में एकीकृत करने के लिए, नीचे वर्णित चरणों का पालन करें।

**1**. अपनी सर्विस वर्कर फ़ाइल का पथ कॉपी करें:

```javascript
if ('serviceWorker' in navigator) {
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/service-worker.js') // <- your service worker url
  });
}
```

फिर, WebSDK को प्रारंभ करते समय serviceWorkerUrl पैरामीटर का उपयोग इस प्रकार करें:

```javascript
var Pushwoosh = Pushwoosh || [];
Pushwoosh.push(['init', {
  logLevel: 'error',
  applicationCode: 'XXXXX-XXXXX',
  safariWebsitePushID: 'web.com.example.domain',
  defaultNotificationTitle: 'Pushwoosh',
  defaultNotificationImage: 'https://yoursite.com/img/logo-medium.png',
  serviceWorkerUrl: '/service-worker.js', // <- your service worker url
}]);
```

WebSDK नए सर्विस वर्कर को तुरंत पंजीकृत नहीं करता है; एक सर्विस वर्कर तब पंजीकृत होता है जब इसकी आवश्यकता होती है:

* जब कोई डिवाइस एक पुश टोकन प्राप्त करता है (डिवाइस पंजीकरण या पुनः सदस्यता पर),
* जब एक पुश टोकन हटा दिया जाता है (उपयोगकर्ता आधार से एक डिवाइस को हटाने पर)।

यह सर्वर अनुरोधों की संख्या को कम करके आपके पृष्ठों की लोडिंग को तेज करता है।

ब्राउज़र एक ही समय में दो अलग-अलग सर्विस वर्करों को पंजीकृत करने की अनुमति नहीं देते हैं (और पढ़ें: [https://github.com/w3c/ServiceWorker/issues/921](https://github.com/w3c/ServiceWorker/issues/921)), इसलिए आपके PWA को सही ढंग से काम करने के लिए, आपके कोडबेस और Pushwoosh कोडबेस के लिए एक सामान्य सर्विस वर्कर पंजीकृत होना चाहिए।

**2**. अपने सर्विस वर्कर में निम्नलिखित स्ट्रिंग जोड़ें (शुरुआत में या अंत में, इससे कोई फर्क नहीं पड़ता):

```javascript
importScripts('https://cdn.pushwoosh.com/webpush/v3/pushwoosh-service-worker.js' + self.location.search);
```

इस प्रकार आप अपने सर्विस वर्कर के लिए Pushwoosh सेवाओं के माध्यम से भेजी गई पुश सूचनाओं को प्राप्त करने और संसाधित करने में सक्षम बनाते हैं।

<Aside type="note">
Pushwoosh आपके कोडबेस को प्रभावित नहीं करेगा। आप हमेशा हमारे सर्विस वर्कर को [https://github.com/Pushwoosh/web-push-notifications](https://github.com/Pushwoosh/web-push-notifications) पर देख सकते हैं।
</Aside>

## Google Tag Manager से इंस्टॉल करना

<Aside type="note">
Google Manager Tag में स्क्रिप्ट जोड़ने से पहले इस गाइड के [चरण 1 से 4](#integration) का पालन करना सुनिश्चित करें!
</Aside>

Pushwoosh SDK को प्रारंभ करने के लिए अपने **Google Tag Manager** में निम्नलिखित कोड का उपयोग करें। एक कस्टम HTML टैग बनाएं और नीचे दिए गए कोड को पेस्ट करें। अपने Pushwoosh एप्लिकेशन कोड, Safari वेबसाइट आईडी, और डिफ़ॉल्ट सूचना छवि URL को बदलना सुनिश्चित करें।\
साथ ही उच्च **टैग फायरिंग** प्राथमिकता (उदा: 100) सेट करें और इसे **सभी पृष्ठों** पर ट्रिगर करें। स्क्रीनशॉट के लिए नीचे देखें। कॉपी करें

```html
<script type="text/javascript" src="//cdn.pushwoosh.com/webpush/v3/pushwoosh-web-notifications.js" async></script>
<script type="text/javascript">
  var Pushwoosh = Pushwoosh || [];
  Pushwoosh.push(['init', {
    logLevel: 'error',
    applicationCode: 'XXXXX-XXXXX',
    safariWebsitePushID: 'web.com.example.domain',
    defaultNotificationTitle: 'Pushwoosh',
    defaultNotificationImage: 'https://yoursite.com/img/logo-medium.png',
    autoSubscribe: true,
    subscribeWidget: {
      enable: false
    },
    userId: 'user_id'
  }]);
</script>
```

<img src="/web-push-notifications-web-push-sdk-3.0-2.webp" alt=""/>