# स्थायी डिवाइस आईडी (कीचेन)

`PushwooshKeychain` मॉड्यूल स्थायी डिवाइस पहचान (HWID) प्रदान करता है जो ऐप को फिर से इंस्टॉल करने पर भी बनी रहती है। यह परीक्षण और विकास परिदृश्यों के लिए उपयोगी है जहाँ आपको ऐप को फिर से इंस्टॉल करने के बाद भी वही डिवाइस पहचान बनाए रखने की आवश्यकता होती है।

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

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

डिफ़ॉल्ट रूप से, iOS हर बार ऐप को फिर से इंस्टॉल करने पर एक नया `identifierForVendor` (IDFV) उत्पन्न करता है, जिसके परिणामस्वरूप Pushwoosh के साथ एक नया HWID पंजीकृत होता है। `PushwooshKeychain` मॉड्यूल HWID को iOS कीचेन में संग्रहीत करता है, जो ऐप को फिर से इंस्टॉल करने पर भी बना रहता है।

### पर्यावरण का पता लगाना

मॉड्यूल स्वचालित रूप से ऐप के वातावरण का पता लगाता है और अलग-अलग व्यवहार करता है:

| पर्यावरण | स्थायी HWID |
|-------------|-----------------|
| सिम्युलेटर | सक्षम |
| डीबग/डेवलपमेंट | सक्षम |
| टेस्टफ्लाइट | सक्षम |
| ऐप स्टोर | **अक्षम** |

<Aside type="caution" title="महत्वपूर्ण">
गोपनीयता अनुपालन के लिए ऐप स्टोर बिल्ड में मॉड्यूल **स्वचालित रूप से अक्षम** हो जाता है। यह सुनिश्चित करता है कि उत्पादन उपयोगकर्ताओं को अपना ऐप फिर से इंस्टॉल करने पर हमेशा एक नया HWID मिले।

यदि आप इस मॉड्यूल को अपने उत्पादन ऐप में बिल्कुल भी शामिल नहीं करना चाहते हैं, तो आप अपने रिलीज़ बिल्ड कॉन्फ़िगरेशन से `PushwooshKeychain` को सुरक्षित रूप से हटा सकते हैं या केवल डीबग/टेस्टफ्लाइट बिल्ड के लिए सशर्त लिंकिंग का उपयोग कर सकते हैं।
</Aside>

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

### स्विफ्ट पैकेज मैनेजर

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

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

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

### कोकोआपॉड्स

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

```ruby
target 'MyApp' do
  use_frameworks!

  pod 'PushwooshXCFramework'
  pod 'PushwooshXCFramework/PushwooshKeychain'
end
```

फिर चलाएं:

```bash
pod install
```

## उपयोग

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

1. पहले ऐप लॉन्च पर, मॉड्यूल एक HWID उत्पन्न करता है और इसे कीचेन में संग्रहीत करता है
2. बाद के लॉन्च पर (पुनः इंस्टॉल करने के बाद सहित), मॉड्यूल संग्रहीत HWID को पुनः प्राप्त करता है
3. SDK Pushwoosh के साथ डिवाइस पंजीकरण के लिए इस स्थायी HWID का उपयोग करता है

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

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

- **QA परीक्षण** — परीक्षण के दौरान कई ऐप इंस्टॉल पर एक ही डिवाइस पहचान बनाए रखें
- **विकास** — अपने ऐप पर काम करते समय लगातार डिवाइस टारगेटिंग बनाए रखें
- **टेस्टफ्लाइट बीटा परीक्षण** — ऐप अपडेट और पुनः इंस्टॉल पर समान बीटा परीक्षकों को ट्रैक करें

<Aside type="tip">
चूंकि मॉड्यूल ऐप स्टोर बिल्ड में अक्षम है, इसलिए आपको इसे सशर्त रूप से शामिल करने की आवश्यकता नहीं है - इसे अपने उत्पादन ऐप के साथ शिप करना सुरक्षित है।
</Aside>

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

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

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

```
[Pushwoosh] Detected environment: Debug. Persistent HWID: ENABLED
```

या

```
[Pushwoosh] Detected environment: App Store. Persistent HWID: DISABLED
```

### संग्रहीत HWID को साफ़ करना

यदि आपको विकास के दौरान स्थायी HWID को रीसेट करने की आवश्यकता है, तो आप कॉल कर सकते हैं:

<Tabs>
<TabItem label="Swift">
```swift
import PushwooshFramework

// Clear the stored HWID from Keychain
Pushwoosh.Keychain.clearPersistentHWID()
```
</TabItem>
<TabItem label="Objective-C">
```objective-c
@import PushwooshFramework;

// Clear the stored HWID from Keychain
[Pushwoosh.Keychain clearPersistentHWID];
```
</TabItem>
</Tabs>

<Aside type="note">
साफ़ करने के बाद, अगला ऐप लॉन्च एक नया HWID उत्पन्न करेगा और संग्रहीत करेगा।
</Aside>