# gRPC ट्रांसपोर्ट

`PushwooshGRPC` मॉड्यूल एक वैकल्पिक gRPC ट्रांसपोर्ट लेयर प्रदान करता है जो Pushwoosh सर्वर के साथ संचार के लिए नेटवर्क प्रदर्शन में सुधार कर सकता है। जब उपलब्ध होता है, तो SDK स्वचालित रूप से समर्थित API विधियों के लिए gRPC का उपयोग करता है और यदि gRPC अनुपलब्ध है तो REST पर वापस आ जाता है।

<Aside type="note">
**SDK संस्करण 7.0.18** से उपलब्ध है।
</Aside>

## यह कैसे काम करता है

डिफ़ॉल्ट रूप से, Pushwoosh SDK HTTPS पर REST API का उपयोग करके सर्वर के साथ संचार करता है। `PushwooshGRPC` मॉड्यूल एक वैकल्पिक gRPC ट्रांसपोर्ट जोड़ता है जो कई फायदे प्रदान करता है:

- **कम लेटेंसी** — gRPC स्थायी कनेक्शन के साथ HTTP/2 का उपयोग करता है
- **छोटा पेलोड आकार** — प्रोटोकॉल बफ़र्स JSON की तुलना में अधिक कॉम्पैक्ट होते हैं
- **मल्टीप्लेक्सिंग** — एक ही कनेक्शन पर कई अनुरोध भेजे जा सकते हैं

### स्वचालित फ़ॉलबैक

मॉड्यूल में अंतर्निहित लचीलापन शामिल है:

| परिदृश्य | व्यवहार |
|----------|----------|
| gRPC उपलब्ध है | gRPC ट्रांसपोर्ट का उपयोग करता है |
| gRPC अनुपलब्ध है | REST पर वापस आ जाता है |
| नेटवर्क त्रुटि | REST के साथ पुनः प्रयास करता है |

<Aside type="tip">
आपको अपने कोड में ट्रांसपोर्ट चयन को संभालने की आवश्यकता नहीं है। SDK स्वचालित रूप से सर्वोत्तम उपलब्ध ट्रांसपोर्ट का चयन करता है।
</Aside>

## आवश्यकताएँ

| आवश्यकता | संस्करण |
|-------------|---------|
| iOS | 13.0+ |
| Xcode | 14.0+ |
| Swift | 5.0+ |

## इंस्टॉलेशन

### Swift Package Manager

Pushwoosh SDK को एकीकृत करते समय अपने लक्ष्य में `PushwooshGRPC` जोड़ें:

1. Xcode में, **File → Add Package Dependencies** पर जाएँ
2. पैकेज URL दर्ज करें: `https://github.com/Pushwoosh/Pushwoosh-XCFramework`
3. आवश्यक फ्रेमवर्क के अलावा `PushwooshGRPC` का चयन करें

<Tabs>
<TabItem label="आवश्यक फ्रेमवर्क">
* `PushwooshFramework`
* `PushwooshCore`
* `PushwooshBridge`
</TabItem>
<TabItem label="वैकल्पिक फ्रेमवर्क">
* `PushwooshGRPC` — gRPC ट्रांसपोर्ट
* `PushwooshKeychain` — स्थायी डिवाइस आईडी
* `PushwooshLiveActivities` — लाइव एक्टिविटीज़ सपोर्ट
* `PushwooshVoIP` — VoIP पुश नोटिफिकेशन
* `PushwooshForegroundPush` — कस्टम फोरग्राउंड नोटिफिकेशन
</TabItem>
</Tabs>

### CocoaPods

अपने `Podfile` में gRPC सबस्पेक जोड़ें:

```ruby
target 'MyApp' do
  use_frameworks!

  pod 'PushwooshXCFramework'
  pod 'PushwooshXCFramework/PushwooshGRPC'
end
```

फिर चलाएँ:

```bash
pod install
```

## उपयोग

**किसी कोड परिवर्तन की आवश्यकता नहीं है।** एक बार जब आप अपने प्रोजेक्ट में `PushwooshGRPC` मॉड्यूल जोड़ लेते हैं, तो यह स्वचालित रूप से काम करता है:

1. ऐप लॉन्च पर, SDK पता लगाता है कि gRPC ट्रांसपोर्ट उपलब्ध है
2. जब संभव हो तो API कॉल gRPC के माध्यम से रूट किए जाते हैं
3. यदि gRPC विफल हो जाता है, तो SDK स्वचालित रूप से REST पर वापस आ जाता है

## समर्थित विधियाँ

निम्नलिखित API विधियाँ gRPC ट्रांसपोर्ट का समर्थन करती हैं:

| विधि | gRPC सपोर्ट |
|--------|--------------|
| डिवाइस पंजीकरण | हाँ |
| टैग (सेट/गेट) | हाँ |
| ऐप ओपन ट्रैकिंग | हाँ |
| पुश आँकड़े | हाँ |

<Aside type="note">
ऊपर सूचीबद्ध नहीं की गई विधियाँ REST ट्रांसपोर्ट का उपयोग करना जारी रखेंगी। SDK इसे पारदर्शी रूप से संभालता है।
</Aside>

## उपयोग के मामले

`PushwooshGRPC` मॉड्यूल विशेष रूप से इनके लिए उपयोगी है:

- **उच्च-आवृत्ति ईवेंट ट्रैकिंग** — उन ऐप्स के लिए कम ओवरहेड जो कई ईवेंट भेजते हैं
- **वास्तविक समय के एप्लिकेशन** — समय-संवेदनशील संचालन के लिए कम लेटेंसी
- **बैंडविड्थ-बाधित वातावरण** — छोटे पेलोड आकार डेटा बचाते हैं

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

### मॉड्यूल सक्रिय है यह सत्यापित करना

जब आपका ऐप लॉन्च हो तो Xcode कंसोल लॉग की जाँच करें। आपको एक लॉग संदेश देखना चाहिए जैसे:

```
[Pushwoosh] gRPC transport: ENABLED
```

### REST ट्रांसपोर्ट को बाध्य करना

यदि आपको डीबगिंग के लिए अस्थायी रूप से gRPC को अक्षम करने की आवश्यकता है, तो आप अपने लक्ष्य से `PushwooshGRPC` मॉड्यूल को हटा सकते हैं। जब gRPC उपलब्ध नहीं होगा तो SDK स्वचालित रूप से REST ट्रांसपोर्ट का उपयोग करेगा।

<Aside type="caution">
अपने ऐप में gRPC और REST ट्रांसपोर्ट कोड दोनों को शामिल न करें — SDK मॉड्यूल की उपलब्धता के आधार पर स्वचालित रूप से ट्रांसपोर्ट चयन को संभालता है।
</Aside>