# यूनिटी SDK बेसिक इंटीग्रेशन गाइड

यह गाइड आपको अपने एप्लिकेशन में पुशवूश यूनिटी SDK को इंटीग्रेट करने की प्रक्रिया बताती है।

## आवश्यक शर्तें

<Aside type="note" title="आवश्यकताएँ">
 - एक [पुशवूश अकाउंट](https://sso.pushwoosh.com/login)।
 - आपके अकाउंट में एक [पुशवूश प्रोजेक्ट](/hi/product/first-steps/start-with-your-project/create-your-project) सेटअप होना चाहिए।
 - यूनिटी 2021.3 या उसके बाद का संस्करण।
 - **iOS के लिए:**
    - पुश नोटिफिकेशन भेजने के लिए एक iOS प्लेटफॉर्म कॉन्फ़िगर किया गया हो। हम सबसे सरल दृष्टिकोण के रूप में [टोकन-आधारित प्रमाणीकरण](/hi/developer/first-steps/connect-messaging-services/ios-configuration/ios-token-based-configuration/) का उपयोग करने की सलाह देते हैं।
    - सिम्युलेटर पर पुश भेजने के लिए गेटवे को `Sandbox` पर सेट करें।
 - **एंड्रॉइड के लिए:**
    - एक [कॉन्फ़िगर किया गया एंड्रॉइड प्लेटफॉर्म](/hi/developer/first-steps/connect-messaging-services/android-configuration/android-firebase-configuration)।
    - आपके फायरबेस प्रोजेक्ट से `project number` (जिसे सेंडर आईडी भी कहा जाता है), `google-services.json` फ़ाइल, और `package name`।
    - आपके एंड्रॉइड एप्लिकेशन से जुड़ा एक फायरबेस प्रोजेक्ट। यदि आवश्यक हो तो [फायरबेस सेटअप गाइड](https://firebase.google.com/docs/android/setup#manually_add_firebase) का पालन करें।
 - आपका `Pushwoosh Application Code` और पुशवूश कंट्रोल पैनल से [Pushwoosh Device API Token](/hi/developer/api-reference/api-access-token/#device-api-token)।
</Aside>

## इंटीग्रेशन के चरण

### 1. पुशवूश यूनिटी 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="UPM वाया Git URL">

यूनिटी में, **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 Releases](https://github.com/Pushwoosh/pushwoosh-unity/releases) से `Pushwoosh.unitypackage` डाउनलोड करें और **Assets > Import Package > Custom Package** के माध्यम से इम्पोर्ट करें।

  </TabItem>
</Tabs>

### 2. एक्सटर्नल डिपेंडेंसी मैनेजर इंस्टॉल करें

SDK को नेटिव एंड्रॉइड और iOS डिपेंडेंसी को हल करने के लिए [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"
```

### 3. 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 Application Code से।
- `XXXXXXXXXXXX` को अपने फायरबेस प्रोजेक्ट नंबर से (केवल एंड्रॉइड)।

### 4. iOS नेटिव सेटअप

#### 4.1 क्षमताएँ (Capabilities)

यूनिटी से iOS प्रोजेक्ट बनाने के बाद, जेनरेट किए गए Xcode प्रोजेक्ट को खोलें और **Signing & Capabilities** में निम्नलिखित क्षमताएँ जोड़ें:

- **Push Notifications**
- **Background Modes** जिसमें **Remote notifications** चेक किया गया हो

टाइम सेंसिटिव नोटिफिकेशन (iOS 15+) के लिए, **Time Sensitive Notifications** क्षमता भी जोड़ें।

#### 4.2 Info.plist

[Pushwoosh Device API Token](/hi/developer/api-reference/api-access-token/#device-api-token) को अपनी `Info.plist` में जोड़ें:

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

#### 4.3 संदेश डिलीवरी ट्रैकिंग

अपने Xcode प्रोजेक्ट में एक नोटिफिकेशन सर्विस एक्सटेंशन टारगेट जोड़ें। यह iOS पर सटीक डिलीवरी ट्रैकिंग और रिच मीडिया के लिए आवश्यक है।

एक्सटेंशन टारगेट जोड़ने के लिए [नेटिव गाइड](/hi/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#4-message-delivery-tracking) का पालन करें।

### 5. एंड्रॉइड नेटिव सेटअप

#### 5.1 फायरबेस कॉन्फ़िगरेशन फ़ाइल जोड़ें

`google-services.json` फ़ाइल को अपने यूनिटी प्रोजेक्ट की **Assets** डायरेक्टरी में रखें।

#### 5.2 पुशवूश मेटाडेटा जोड़ें

[Pushwoosh Device API Token](/hi/developer/api-reference/api-access-token/#device-api-token) को अपनी `Assets/Plugins/Android/AndroidManifest.xml` में `<application>` टैग के अंदर जोड़ें:

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

<Aside type="caution">
सुनिश्चित करें कि आप अपने पुशवूश कंट्रोल पैनल में सही ऐप के लिए टोकन को एक्सेस दें। [और जानें](/hi/developer/api-reference/api-access-token/#edit-token)
</Aside>

### 6. प्रोजेक्ट चलाएँ

1. प्रोजेक्ट को अपने टारगेट प्लेटफॉर्म पर बनाएँ और चलाएँ।
2. संकेत मिलने पर पुश नोटिफिकेशन के लिए अनुमति दें।
3. पुशवूश कंट्रोल पैनल पर जाएँ और [एक पुश नोटिफिकेशन भेजें](/hi/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
// क्रॉस-डिवाइस ट्रैकिंग के लिए यूज़र आईडी सेट करें
Pushwoosh.Instance.SetUserId("user-123");

// यूज़र ईमेल सेट करें
Pushwoosh.Instance.SetEmail("user@example.com");

// आईडी और ईमेल दोनों के साथ यूज़र सेट करें
Pushwoosh.Instance.SetUser("user-123", new List<string> { "user@example.com" });

// पसंदीदा भाषा सेट करें
Pushwoosh.Instance.SetLanguage("en");
```

### टैग्स

टैग्स डिवाइसों को असाइन किए गए की-वैल्यू पेयर होते हैं, जो यूज़र सेगमेंटेशन और लक्षित मैसेजिंग को सक्षम करते हैं:

```csharp
// स्ट्रिंग टैग
Pushwoosh.Instance.SetStringTag("favorite_category", "electronics");

// इंटीजर टैग
Pushwoosh.Instance.SetIntTag("purchase_count", 5);

// लिस्ट टैग
Pushwoosh.Instance.SetListTag("interests", new List<object> { "sports", "music", "tech" });

// सभी टैग्स प्राप्त करें
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
// एक लॉगिन इवेंट ट्रैक करें
Pushwoosh.Instance.PostEvent("login", new Dictionary<string, object> {
    { "username", "user-123" },
    { "login_type", "email" }
});

// एक खरीद इवेंट ट्रैक करें
Pushwoosh.Instance.PostEvent("purchase", new Dictionary<string, object> {
    { "product_id", "SKU-001" },
    { "price", 29.99 },
    { "currency", "USD" }
});
```

### कम्युनिकेशन प्रेफरेंसेज

यूज़र्स को प्रोग्रामेटिक रूप से पुश नोटिफिकेशन के लिए ऑप्ट-इन या ऑप्ट-आउट करने की अनुमति दें:

```csharp
// कम्युनिकेशन सक्षम करें
Pushwoosh.Instance.SetCommunicationEnabled(true);

// कम्युनिकेशन अक्षम करें
Pushwoosh.Instance.SetCommunicationEnabled(false);

// वर्तमान स्थिति जांचें
bool isEnabled = Pushwoosh.Instance.IsCommunicationEnabled();
```

### बैज मैनेजमेंट

समर्थित प्लेटफॉर्म पर ऐप बैज नंबर को नियंत्रित करें:

```csharp
// बैज को एक विशिष्ट संख्या पर सेट करें
Pushwoosh.Instance.SetBadgeNumber(3);

// बैज बढ़ाएँ
Pushwoosh.Instance.AddBadgeNumber(1);

// बैज साफ़ करें
Pushwoosh.Instance.SetBadgeNumber(0);
```

## समस्या निवारण

यदि आपको इंटीग्रेशन प्रक्रिया के दौरान कोई समस्या आती है, तो [समर्थन और समुदाय](/hi/developer/pushwoosh-sdk/support-and-community) सेक्शन देखें।