# ব্যবহারকারীর সম্মতি পরিচালনা করা

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

### Web Push

#### স্টার্টআপে স্বয়ংক্রিয় সাবস্ক্রিপশন নিষ্ক্রিয় করুন

ডিফল্টরূপে, 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);
```