# उपयोगकर्ता की सहमति का प्रबंधन

Pushwoosh डेवलपर्स को यह नियंत्रित करने की अनुमति देकर गोपनीयता नियमों (जैसे, GDPR, CCPA) के अनुपालन का समर्थन करता है कि SDK Pushwoosh सर्वर के साथ संचार कब शुरू करता है। यह सुनिश्चित करने में मदद करता है कि उपयोगकर्ता की स्पष्ट सहमति देने से पहले कोई डेटा एकत्र नहीं किया जाता है।

### अवलोकन

डिफ़ॉल्ट रूप से, Pushwoosh SDK आरंभीकरण के तुरंत बाद संचार और डिवाइस डेटा एकत्र करना शुरू कर देता है। हालाँकि, आप इस व्यवहार को बदल सकते हैं ताकि उपयोगकर्ता की सहमति मिलने तक कोई संचार न हो।

इस सेटअप के साथ:

*   यदि उपयोगकर्ता सहमति देता है, तो SDK आरंभीकरण करता है और डेटा एकत्र करना शुरू कर देता है।

*   यदि उपयोगकर्ता सहमति नहीं देता है, तो SDK निष्क्रिय रहता है और कोई डेटा एकत्र नहीं करता है।

*   यदि उपयोगकर्ता बाद में सहमति वापस ले लेता है, तो SDK सभी गतिविधियों को रोक देता है और सर्वर से डिस्कनेक्ट हो जाता है।


Pushwoosh iOS, Android, और Unity में इस प्रवाह को प्रबंधित करने के लिए तंत्र प्रदान करता है।

### iOS

#### स्टार्टअप पर SDK सर्वर संचार को अक्षम करें

डिफ़ॉल्ट रूप से, SDK के साथ संचार सक्षम होता है। उपयोगकर्ता द्वारा स्पष्ट रूप से सहमति दिए जाने तक Pushwoosh सर्वर के साथ सभी संचार को अक्षम करने के लिए, अपनी **`Info.plist`** में निम्नलिखित कुंजी जोड़ें:

```xml
<key>Pushwoosh_ALLOW_SERVER_COMMUNICATION</key>
<false/>

```

#### संचार स्थिति की जाँच करें

यह निर्धारित करने के लिए कि क्या वर्तमान में संचार की अनुमति है, निम्नलिखित विधियों का उपयोग करें:

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

var serverCommunicationAllowed = PWCoreServerCommunicationManager.sharedInstance.isServerCommunicationAllowed
print("isServerCommunicationAllowed: ", serverCommunicationAllowed)
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

var serverCommunicationAllowed = PWCoreServerCommunicationManager.sharedInstance.isServerCommunicationAllowed
print("isServerCommunicationAllowed: ", serverCommunicationAllowed)
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

BOOL serverCommunicationAllowed = [PWCoreServerCommunicationManager sharedInstance].isServerCommunicationAllowed;
NSLog(@"isServerCommunicationAllowed: %d", serverCommunicationAllowed);
```
</TabItem>
</Tabs>

#### सहमति के बाद SDK संचार सक्षम करें

एक बार जब उपयोगकर्ता सहमति दे देता है, तो निम्नानुसार संचार सक्षम करें:

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

Pushwoosh.sharedInstance().startServerCommunication()
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

Pushwoosh.sharedInstance().startServerCommunication()
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

[[Pushwoosh sharedInstance] startServerCommunication];
```
</TabItem>
</Tabs>

#### पुश नोटिफिकेशन के लिए रजिस्टर करें

एक बार संचार सक्षम हो जाने पर, पुश नोटिफिकेशन के लिए स्पष्ट रूप से रजिस्टर करें:

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

[[Pushwoosh sharedInstance] registerForPushNotifications];
```
</TabItem>
</Tabs>

#### संचार अक्षम करें

Pushwoosh सर्वर के साथ संचार रोकने के लिए (उदाहरण के लिए, यदि उपयोगकर्ता सहमति रद्द करता है):

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

Pushwoosh.sharedInstance().stopServerCommunication()
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

Pushwoosh.sharedInstance().stopServerCommunication()
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

[[Pushwoosh sharedInstance] stopServerCommunication];
```
</TabItem>
</Tabs>

### Android

#### स्टार्टअप पर SDK सर्वर संचार को अक्षम करें

डिफ़ॉल्ट रूप से, संचार सक्षम है। उपयोगकर्ता की सहमति प्राप्त होने तक Pushwoosh सर्वर पर कोई भी डेटा भेजे जाने से रोकने के लिए, अपने `AndroidManifest.xml` में निम्नलिखित जोड़ें:

```xml
<meta-data
  android:name="com.pushwoosh.allow_server_communication"
  android:value="false" />
```

#### संचार स्थिति की जाँच करें

यह निर्धारित करने के लिए कि क्या सर्वर संचार की वर्तमान में अनुमति है, निम्नलिखित विधियों का उपयोग करें:

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

boolean isCommunicationEnabled = Pushwoosh.getInstance().isServerCommunicationAllowed();
Log.d("Pushwoosh", "Communication enabled = " + isCommunicationEnabled);
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

val isCommunicationEnabled = Pushwoosh.getInstance().isServerCommunicationAllowed()
Log.d("Pushwoosh", "Communication enabled = $isCommunicationEnabled")
```
</TabItem>
</Tabs>

#### सहमति के बाद SDK संचार सक्षम करें

एक बार जब उपयोगकर्ता सहमति दे देता है, तो निम्नानुसार संचार सक्षम करें:

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

Pushwoosh.getInstance().startServerCommunication();
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

Pushwoosh.getInstance().startServerCommunication()
```
</TabItem>
</Tabs>

#### पुश नोटिफिकेशन के लिए रजिस्टर करें

संचार सक्षम होने के बाद, पुश नोटिफिकेशन के लिए स्पष्ट रूप से रजिस्टर करें:

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

Pushwoosh.getInstance().registerForPushNotifications();
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

Pushwoosh.getInstance().registerForPushNotifications()
```
</TabItem>
</Tabs>

#### संचार अक्षम करें

Pushwoosh सर्वर के साथ संचार रोकने के लिए (उदाहरण के लिए, यदि उपयोगकर्ता सहमति रद्द करता है):

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

Pushwoosh.getInstance().stopServerCommunication();
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

Pushwoosh.getInstance().stopServerCommunication()
```
</TabItem>
</Tabs>

### Unity

#### स्टार्टअप पर SDK सर्वर संचार को अक्षम करें

डिफ़ॉल्ट रूप से, SDK के साथ संचार सक्षम होता है। उपयोगकर्ता द्वारा स्पष्ट रूप से सहमति दिए जाने तक Pushwoosh सर्वर के साथ सभी संचार को अक्षम करने के लिए, प्लेटफ़ॉर्म-विशिष्ट सेटिंग्स लागू करें:

**Android**

अपने Unity प्रोजेक्ट में `AndroidManifest.xml` पर निम्नलिखित जोड़ें:

```xml
 <meta-data android:name="com.pushwoosh.allow_server_communication" android:value="false" />
```

**iOS**

`Info.plist` को संशोधित करें:

```xml
<key>Pushwoosh_ALLOW_SERVER_COMMUNICATION</key>
<false/>
```


**नोट:** `RegisterForPushNotifications` को कॉल करने से पहले आपको संचार सक्षम करना होगा।

#### संचार स्थिति की जाँच करें

यह जांचने के लिए कि क्या सर्वर संचार की वर्तमान में अनुमति है, निम्नलिखित विधि का उपयोग करें:

```c#
bool enabled = Pushwoosh.Instance.IsCommunicationEnabled();
```

#### सहमति के बाद SDK संचार सक्षम करें

सहमति के बाद संचार सक्षम करने के लिए:

```c#
Pushwoosh.Instance.SetCommunicationEnabled(true);
```

#### पुश नोटिफिकेशन के लिए रजिस्टर करें

एक बार संचार सक्षम हो जाने पर, आप डिवाइस को पुश नोटिफिकेशन के लिए रजिस्टर कर सकते हैं:

```c#
Pushwoosh.Instance.RegisterForPushNotifications();
```

#### संचार अक्षम करें
Pushwoosh सर्वर के साथ संचार रोकने के लिए (उदाहरण के लिए, यदि उपयोगकर्ता सहमति रद्द करता है):

```c#
Pushwoosh.Instance.SetCommunicationEnabled(false);
```

### वेब पुश

#### स्टार्टअप पर स्वचालित सदस्यता अक्षम करें

डिफ़ॉल्ट रूप से, Pushwoosh SDK जैसे ही आरंभीकृत होता है, देशी सदस्यता प्रॉम्प्ट दिखाता है। SDK को आरंभीकरण पर स्वचालित रूप से सदस्यता प्रॉम्प्ट दिखाने से रोकने के लिए, `init` कॉल में `communicationEnabled` पैरामीटर को `false` पर सेट करें।

```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', {
    // other initialization parameters...
    communicationEnabled: false, // Disable communication to prevent automatic subscription prompts
  }]);
</script>
```

#### सहमति के बाद सदस्यता सक्षम करें

एक बार जब आप स्वचालित सदस्यता अक्षम कर देते हैं, तो आप उपयोगकर्ता को किसी भी समय सदस्यता लेने के लिए प्रेरित कर सकते हैं। जब उपयोगकर्ता पुश नोटिफिकेशन प्राप्त करने के लिए सहमत होता है (उदाहरण के लिए, आपके कस्टम UI पर "Subscribe" बटन पर क्लिक करके), तो आप `setCommunicationEnabled` विधि को कॉल करके संचार सक्षम कर सकते हैं। `Pushwoosh.setCommunicationEnabled(true)` को कॉल करने से Pushwoosh सेवाओं के साथ संचार सक्षम हो जाता है। एक बार सक्षम होने पर, SDK देशी ब्राउज़र अनुमति प्रॉम्प्ट दिखाने के लिए आगे बढ़ेगा।

```javascript
Pushwoosh.setCommunicationEnabled(true)
  .then(() => {
    console.log('User is subscribed to push notifications.');
  })
  .catch((error) => {
    console.error('Error subscribing user:', error);
  });
```

#### संचार अक्षम करें

Pushwoosh सेवाओं के साथ संचार रोकने के लिए (उदाहरण के लिए, यदि उपयोगकर्ता सहमति रद्द करता है), `setCommunicationEnabled` को `false` के साथ कॉल करें।

```javascript
Pushwoosh.setCommunicationEnabled(false);
```