# ইউনিটি SDK বেসিক ইন্টিগ্রেশন গাইড

এই গাইডটি আপনাকে আপনার অ্যাপ্লিকেশনে Pushwoosh ইউনিটি SDK ইন্টিগ্রেট করার প্রক্রিয়া দেখাবে।

## পূর্বশর্ত

<Aside type="note" title="প্রয়োজনীয়তা">
 - একটি [Pushwoosh অ্যাকাউন্ট](https://sso.pushwoosh.com/login)।
 - আপনার অ্যাকাউন্টে একটি [Pushwoosh প্রজেক্ট](/bn/product/first-steps/start-with-your-project/create-your-project) সেট আপ করা।
 - ইউনিটি 2021.3 বা তার পরের সংস্করণ।
 - **iOS-এর জন্য:**
    - পুশ নোটিফিকেশন পাঠানোর জন্য কনফিগার করা একটি iOS প্ল্যাটফর্ম। আমরা সবচেয়ে সহজ পদ্ধতি হিসাবে [টোকেন-ভিত্তিক প্রমাণীকরণ](/bn/developer/first-steps/connect-messaging-services/ios-configuration/ios-token-based-configuration/) ব্যবহার করার সুপারিশ করি।
    - সিমুলেটরে পুশ পাঠানোর জন্য গেটওয়ে `Sandbox`-এ সেট করুন।
 - **Android-এর জন্য:**
    - একটি [কনফিগার করা Android প্ল্যাটফর্ম](/bn/developer/first-steps/connect-messaging-services/android-configuration/android-firebase-configuration)।
    - আপনার Firebase প্রজেক্ট থেকে `project number` (যা Sender ID নামেও পরিচিত), `google-services.json` ফাইল এবং `package name`।
    - আপনার Android অ্যাপ্লিকেশনের সাথে সংযুক্ত একটি Firebase প্রজেক্ট। প্রয়োজনে [Firebase সেটআপ গাইড](https://firebase.google.com/docs/android/setup#manually_add_firebase) অনুসরণ করুন।
 - Pushwoosh কন্ট্রোল প্যানেল থেকে আপনার `Pushwoosh Application Code` এবং [Pushwoosh ডিভাইস API টোকেন](/bn/developer/api-reference/api-access-token/#device-api-token)।
</Aside>

## ইন্টিগ্রেশন ধাপ

### ১. Pushwoosh ইউনিটি SDK যোগ করুন

<Tabs>
  <TabItem label="স্কোপড রেজিস্ট্রি-এর মাধ্যমে UPM (সুপারিশকৃত)">

আপনার `Packages/manifest.json`-এ নিম্নলিখিত কোড যোগ করুন:

```json title="Packages/manifest.json"
{
  "dependencies": {
    "com.pushwoosh.unity.core": "6.2.7",
    "com.pushwoosh.unity.android": "6.2.7",
    "com.pushwoosh.unity.ios": "6.2.7"
  },
  "scopedRegistries": [
    {
      "name": "npmjs",
      "url": "https://registry.npmjs.org",
      "scopes": ["com.pushwoosh"]
    }
  ]
}
```

শুধুমাত্র আপনার প্রয়োজনীয় প্ল্যাটফর্ম প্যাকেজগুলো যোগ করুন। উদাহরণস্বরূপ, যদি আপনি শুধুমাত্র iOS টার্গেট করেন তবে `com.pushwoosh.unity.android` বাদ দিন।

  </TabItem>
  <TabItem label="Git URL-এর মাধ্যমে UPM">

ইউনিটিতে, **Window > Package Manager > + > Add package from git URL**-এ যান এবং নিম্নলিখিত URL-গুলো একটি একটি করে যোগ করুন:

```
https://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.core
https://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.android
https://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.ios
```

  </TabItem>
  <TabItem label=".unitypackage">

[GitHub রিলিজ](https://github.com/Pushwoosh/pushwoosh-unity/releases) থেকে `Pushwoosh.unitypackage` ডাউনলোড করুন এবং **Assets > Import Package > Custom Package**-এর মাধ্যমে ইম্পোর্ট করুন।

  </TabItem>
</Tabs>

### ২. এক্সটার্নাল ডিপেন্ডেন্সি ম্যানেজার ইনস্টল করুন

নেটিভ Android এবং iOS ডিপেন্ডেন্সি সমাধান করার জন্য SDK-এর [External Dependency Manager for Unity (EDM4U)](https://github.com/googlesamples/unity-jar-resolver) প্রয়োজন।

আপনার `Packages/manifest.json`-এ নিম্নলিখিত স্কোপড রেজিস্ট্রি যোগ করুন:

```json
{
  "scopedRegistries": [
    {
      "name": "package.openupm.com",
      "url": "https://package.openupm.com",
      "scopes": ["com.google.external-dependency-manager"]
    }
  ]
}
```

তারপর আপনার ডিপেন্ডেন্সিতে প্যাকেজটি যোগ করুন:

```json
"com.google.external-dependency-manager": "1.2.183"
```

### ৩. SDK ইনিশিয়ালাইজ করুন

একটি `PushNotificator.cs` স্ক্রিপ্ট তৈরি করুন এবং এটিকে সিন-এর যেকোনো GameObject-এর সাথে সংযুক্ত করুন:

```csharp title="PushNotificator.cs"
using UnityEngine;
using System.Collections.Generic;

public class PushNotificator : MonoBehaviour
{
    void Start()
    {
        Pushwoosh.ApplicationCode = "XXXXX-XXXXX";
        Pushwoosh.FcmProjectNumber = "XXXXXXXXXXXX";

        Pushwoosh.Instance.OnRegisteredForPushNotifications += (token) => {
            Debug.Log("Push token: " + token);
        };

        Pushwoosh.Instance.OnFailedToRegisteredForPushNotifications += (error) => {
            Debug.Log("Registration failed: " + error);
        };

        Pushwoosh.Instance.RegisterForPushNotifications();
    }
}
```

প্রতিস্থাপন করুন:
- `XXXXX-XXXXX`-কে আপনার Pushwoosh অ্যাপ্লিকেশন কোড দিয়ে।
- `XXXXXXXXXXXX`-কে আপনার Firebase প্রজেক্ট নম্বর দিয়ে (শুধুমাত্র Android)।

### ৪. iOS নেটিভ সেটআপ

#### ৪.১ ক্যাপাবিলিটিজ

ইউনিটি থেকে iOS প্রজেক্ট তৈরি করার পর, জেনারেট করা Xcode প্রজেক্টটি খুলুন এবং **Signing & Capabilities**-এ নিম্নলিখিত ক্যাপাবিলিটিজ যোগ করুন:

- **পুশ নোটিফিকেশন**
- **ব্যাকগ্রাউন্ড মোড** এবং **রিমোট নোটিফিকেশন** চেক করা

টাইম সেনসিটিভ নোটিফিকেশন (iOS 15+)-এর জন্য, **টাইম সেনসিটিভ নোটিফিকেশন** ক্যাপাবিলিটিও যোগ করুন।

#### ৪.২ Info.plist

আপনার `Info.plist`-এ [Pushwoosh ডিভাইস API টোকেন](/bn/developer/api-reference/api-access-token/#device-api-token) যোগ করুন:

```xml title="Info.plist"
<key>Pushwoosh_API_TOKEN</key>
<string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>
```

#### ৪.৩ মেসেজ ডেলিভারি ট্র্যাকিং

আপনার Xcode প্রজেক্টে একটি নোটিফিকেশন সার্ভিস এক্সটেনশন টার্গেট যোগ করুন। iOS-এ সঠিক ডেলিভারি ট্র্যাকিং এবং রিচ মিডিয়ার জন্য এটি প্রয়োজন।

এক্সটেনশন টার্গেট যোগ করতে [নেটিভ গাইড](/bn/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#4-message-delivery-tracking) অনুসরণ করুন।

### ৫. Android নেটিভ সেটআপ

#### ৫.১ Firebase কনফিগারেশন ফাইল যোগ করুন

আপনার ইউনিটি প্রজেক্টের **Assets** ডিরেক্টরিতে `google-services.json` ফাইলটি রাখুন।

#### ৫.২ Pushwoosh মেটাডেটা যোগ করুন

আপনার `Assets/Plugins/Android/AndroidManifest.xml`-এর `<application>` ট্যাগের ভিতরে [Pushwoosh ডিভাইস API টোকেন](/bn/developer/api-reference/api-access-token/#device-api-token) যোগ করুন:

```xml title="AndroidManifest.xml"
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />
```

<Aside type="caution">
নিশ্চিত করুন যে টোকেনটিকে আপনার Pushwoosh কন্ট্রোল প্যানেলে সঠিক অ্যাপের অ্যাক্সেস দেওয়া হয়েছে। [আরও জানুন](/bn/developer/api-reference/api-access-token/#edit-token)
</Aside>

### ৬. প্রজেক্টটি চালান

১. আপনার টার্গেট প্ল্যাটফর্মে প্রজেক্টটি তৈরি করুন এবং চালান।
২. অনুরোধ করা হলে পুশ নোটিফিকেশনের জন্য অনুমতি দিন।
৩. Pushwoosh কন্ট্রোল প্যানেলে যান এবং [একটি পুশ নোটিফিকেশন পাঠান](/bn/product/messaging-channels/push-notifications/send-push-notifications/one-time-push)।

## বর্ধিত ইন্টিগ্রেশন

এই পর্যায়ে, আপনি পুশ নোটিফিকেশন পাঠাতে এবং গ্রহণ করতে পারবেন। নিচের বিভাগগুলোতে মূল SDK কার্যকারিতা আলোচনা করা হয়েছে।

### পুশ নোটিফিকেশন ইভেন্ট লিসেনার

SDK পুশ নোটিফিকেশন পরিচালনা করার জন্য দুটি ইভেন্ট লিসেনার প্রদান করে:

- `OnPushNotificationsReceived` — যখন একটি পুশ নোটিফিকেশন আসে তখন ট্রিগার হয়
- `OnPushNotificationsOpened` — যখন একজন ব্যবহারকারী একটি নোটিফিকেশনে ট্যাপ করে তখন ট্রিগার হয়

SDK ইনিশিয়ালাইজেশনের সময় এই লিসেনারগুলো সেট আপ করুন:

```csharp title="PushNotificator.cs"
void Start()
{
    Pushwoosh.ApplicationCode = "XXXXX-XXXXX";
    Pushwoosh.FcmProjectNumber = "XXXXXXXXXXXX";

    Pushwoosh.Instance.OnPushNotificationsReceived += (payload) => {
        Debug.Log("Push received: " + payload);
    };

    Pushwoosh.Instance.OnPushNotificationsOpened += (payload) => {
        Debug.Log("Push opened: " + payload);
    };

    Pushwoosh.Instance.RegisterForPushNotifications();
}
```

### ব্যবহারকারী কনফিগারেশন

ব্যবহারকারীদের শনাক্ত করে এবং তাদের বৈশিষ্ট্য সেট করে পুশ নোটিফিকেশন ব্যক্তিগতকরণ করুন:

```csharp
// Set user ID for cross-device tracking
Pushwoosh.Instance.SetUserId("user-123");

// Set user email
Pushwoosh.Instance.SetEmail("user@example.com");

// Set user with both ID and email
Pushwoosh.Instance.SetUser("user-123", new List<string> { "user@example.com" });

// Set preferred language
Pushwoosh.Instance.SetLanguage("en");
```

### ট্যাগ

ট্যাগ হলো ডিভাইসে নির্ধারিত কী-ভ্যালু পেয়ার, যা ব্যবহারকারী বিভাজন এবং লক্ষ্যযুক্ত মেসেজিং সক্ষম করে:

```csharp
// String tag
Pushwoosh.Instance.SetStringTag("favorite_category", "electronics");

// Integer tag
Pushwoosh.Instance.SetIntTag("purchase_count", 5);

// List tag
Pushwoosh.Instance.SetListTag("interests", new List<object> { "sports", "music", "tech" });

// Get all tags
Pushwoosh.Instance.GetTags((tags, error) => {
    if (error != null) {
        Debug.Log("Error: " + error.Message);
        return;
    }
    foreach (var tag in tags) {
        Debug.Log(tag.Key + ": " + tag.Value);
    }
});
```

### ইভেন্ট

ব্যবহারকারীর আচরণ বিশ্লেষণ করতে এবং স্বয়ংক্রিয় বার্তা ট্রিগার করতে ব্যবহারকারীর কার্যকলাপ ট্র্যাক করুন:

```csharp
// Track a login event
Pushwoosh.Instance.PostEvent("login", new Dictionary<string, object> {
    { "username", "user-123" },
    { "login_type", "email" }
});

// Track a purchase event
Pushwoosh.Instance.PostEvent("purchase", new Dictionary<string, object> {
    { "product_id", "SKU-001" },
    { "price", 29.99 },
    { "currency", "USD" }
});
```

### যোগাযোগের পছন্দ

ব্যবহারকারীদের প্রোগ্রাম্যাটিকভাবে পুশ নোটিফিকেশনে অপ্ট-ইন বা অপ্ট-আউট করার অনুমতি দিন:

```csharp
// Enable communication
Pushwoosh.Instance.SetCommunicationEnabled(true);

// Disable communication
Pushwoosh.Instance.SetCommunicationEnabled(false);

// Check current state
bool isEnabled = Pushwoosh.Instance.IsCommunicationEnabled();
```

### ব্যাজ ম্যানেজমেন্ট

সমর্থিত প্ল্যাটফর্মে অ্যাপ ব্যাজ নম্বর নিয়ন্ত্রণ করুন:

```csharp
// Set badge to a specific number
Pushwoosh.Instance.SetBadgeNumber(3);

// Increment badge
Pushwoosh.Instance.AddBadgeNumber(1);

// Clear badge
Pushwoosh.Instance.SetBadgeNumber(0);
```

## সমস্যা সমাধান

ইন্টিগ্রেশন প্রক্রিয়ার সময় কোনো সমস্যা হলে, [সাপোর্ট এবং কমিউনিটি](/bn/developer/pushwoosh-sdk/support-and-community) বিভাগে যান।