# ऐप स्टोर सब्सक्रिप्शन ट्रैकिंग

<Aside type="caution" icon="setting" title="डेवलपर सहायता की आवश्यकता है">
आपको इस इंटीग्रेशन को सेट अप करने के लिए अपनी डेवलपमेंट टीम से मदद की आवश्यकता होगी। कृपया इस गाइड को उनके साथ साझा करें।
</Aside>

## इंटीग्रेशन का अवलोकन

[ऐप स्टोर सर्वर नोटिफिकेशन्स](https://developer.apple.com/documentation/appstoreservernotifications) एप्पल की सर्वर-टू-सर्वर सेवा है जो आपके बैकएंड को एक रियल-टाइम संदेश भेजती है जब भी किसी सब्सक्रिप्शन की स्थिति बदलती है।

ऐप स्टोर सर्वर नोटिफिकेशन्स को Pushwoosh से कनेक्ट करके, आप खरीद, नवीनीकरण, रद्दीकरण, बिलिंग समस्याओं, समाप्ति और रिफंड सहित पूरे सब्सक्रिप्शन जीवनचक्र पर प्रतिक्रिया दे सकते हैं - बिना अपना खुद का बैकएंड इंफ्रास्ट्रक्चर बनाए। जब भी किसी उपयोगकर्ता के ऐप स्टोर खाते में सब्सक्रिप्शन की स्थिति बदलती है, तो एप्पल Pushwoosh को सूचित करता है, और Pushwoosh उपयोगकर्ता प्रोफ़ाइल पर संबंधित [`PW_Subscription*`](#tracked-events) इवेंट को फायर करता है।

<Aside type="note">
यह इंटीग्रेशन **iOS सब्सक्रिप्शन** (ऐप स्टोर सर्वर नोटिफिकेशन्स V2) का समर्थन करता है। एंड्रॉइड सब्सक्रिप्शन को ट्रैक करने के लिए, [गूगल प्ले सब्सक्रिप्शन ट्रैकिंग](/hi/product/integrations/google-play-subscription-tracking/) देखें।
</Aside>

### इंटीग्रेशन का प्रकार

**स्रोत:** ऐप स्टोर सर्वर नोटिफिकेशन्स एप्पल से Pushwoosh को भेजे जाते हैं।

### ट्रैक किए गए इवेंट्स

Pushwoosh हर समर्थित ऐप स्टोर नोटिफिकेशन को एक एकीकृत `PW_Subscription*` इवेंट सेट पर मैप करता है, ताकि आप सब्सक्रिप्शन जीवनचक्र के किसी भी चरण पर अभियान शुरू कर सकें।

| इवेंट | कब फायर होता है |
| ----- | ---------- |
| `PW_SubscriptionStart` | जब कोई उपयोगकर्ता पहली बार सब्सक्रिप्शन खरीदता है। |
| `PW_SubscriptionRenew` | जब सब्सक्रिप्शन एक नए बिलिंग अवधि के लिए स्वतः-नवीनीकृत होता है। |
| `PW_SubscriptionCancel` | जब कोई उपयोगकर्ता स्वतः-नवीनीकरण बंद कर देता है। सब्सक्रिप्शन समाप्त होने तक सक्रिय रहता है। |
| `PW_SubscriptionResume` | जब कोई उपयोगकर्ता स्वतः-नवीनीकरण को फिर से सक्षम करता है, या सब्सक्रिप्शन समाप्त होने से पहले फिर से सब्सक्राइब करता है। |
| `PW_SubscriptionBillingIssue` | जब एक नवीनीकरण भुगतान विफल हो जाता है और सब्सक्रिप्शन एप्पल की बिलिंग पुनः प्रयास अवधि में प्रवेश करता है। |
| `PW_SubscriptionRecovered` | जब पहले विफल हुआ नवीनीकरण सफल हो जाता है और सब्सक्रिप्शन फिर से सक्रिय हो जाता है। |
| `PW_SubscriptionExpired` | जब सब्सक्रिप्शन पूरी तरह से समाप्त हो गया है और अब सक्रिय नहीं है। |
| `PW_SubscriptionRefund` | जब एप्पल खरीद को रिफंड करता है या पहुंच रद्द करता है। |

हर इवेंट में समान एट्रिब्यूट्स होते हैं:

- **productID:** सब्सक्रिप्शन का ऐप स्टोर उत्पाद पहचानकर्ता।
- **expiresAt:** जब वर्तमान भुगतान अवधि समाप्त होती है, सेकंड में यूनिक्स टाइमस्टैम्प के रूप में। जब एप्पल इसे प्रदान करता है तो शामिल किया जाता है।

<details>

<summary>इवेंट्स ऐप स्टोर सर्वर नोटिफिकेशन्स से कैसे मैप होते हैं</summary>

इंटीग्रेशन को सत्यापित करने वाले डेवलपर्स के लिए, प्रत्येक Pushwoosh इवेंट इन ऐप स्टोर `notificationType` (और `subtype`) मानों से मेल खाता है:

| Pushwoosh इवेंट | `notificationType` / `subtype` |
| --------------- | ------------------------------ |
| `PW_SubscriptionStart` | `SUBSCRIBED` / `INITIAL_BUY` |
| `PW_SubscriptionRenew` | `DID_RENEW` |
| `PW_SubscriptionCancel` | `DID_CHANGE_RENEWAL_STATUS` / `AUTO_RENEW_DISABLED` |
| `PW_SubscriptionResume` | `DID_CHANGE_RENEWAL_STATUS` / `AUTO_RENEW_ENABLED`, `SUBSCRIBED` / `RESUBSCRIBE` |
| `PW_SubscriptionBillingIssue` | `DID_FAIL_TO_RENEW` |
| `PW_SubscriptionRecovered` | `DID_RENEW` / `BILLING_RECOVERY` |
| `PW_SubscriptionExpired` | `EXPIRED` |
| `PW_SubscriptionRefund` | `REFUND`, `REVOKE` |

अन्य नोटिफिकेशन प्रकार, जैसे कि मूल्य वृद्धि, योजना परिवर्तन, ऑन-होल्ड, और खपत अनुरोध, स्वीकार किए जाते हैं लेकिन कोई इवेंट पोस्ट नहीं करते हैं।

</details>


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

1. एक उपयोगकर्ता के ऐप स्टोर खाते में सब्सक्रिप्शन की स्थिति बदलती है (एक खरीद, नवीनीकरण, रद्दीकरण, आदि)।
2. एप्पल आपके Pushwoosh नोटिफिकेशन URL पर एक ऐप स्टोर सर्वर नोटिफिकेशन (V2) भेजता है।
3. Pushwoosh हस्ताक्षरित पेलोड को डीकोड करता है और लेनदेन से `appAccountToken` पढ़ता है।
4. Pushwoosh उस डिवाइस को खोजता है जिसका HWID उस टोकन से मेल खाता है, उससे जुड़े उपयोगकर्ता को ढूंढता है, और उस उपयोगकर्ता के लिए संबंधित `PW_Subscription*` इवेंट पोस्ट करता है।

<Aside type="caution" title="महत्वपूर्ण">
एक ऐप स्टोर लेनदेन और एक Pushwoosh उपयोगकर्ता के बीच का मिलान `appAccountToken` पर निर्भर करता है। यदि आपका ऐप खरीद के समय इस टोकन को सेट नहीं करता है, तो Pushwoosh को नोटिफिकेशन तो मिलता है लेकिन **कोई इवेंट पोस्ट नहीं होता है**। [`appAccountToken` कैसे सेट करें](#set-appaccounttoken-to-the-devices-pushwoosh-hwid) देखें।
</Aside>

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

**मंथन करने वाले सब्सक्राइबर्स को वापस जीतें:** स्वतः-नवीनीकरण को अक्षम करने से पहुंच तुरंत समाप्त नहीं होती है। सब्सक्रिप्शन भुगतान अवधि समाप्त होने तक सक्रिय रहता है, और यह आपके लिए उपयोगकर्ता को वापस जीतने का अवसर है। `PW_SubscriptionCancel` पर, एक रिटेंशन पुश के साथ एक [कस्टमर जर्नी](/hi/product/customer-journey/pushwoosh-journey-overview/) शुरू करें, उन सुविधाओं के बारे में एक [ईमेल](/hi/product/messaging-channels/emails/) भेजें जिन्हें वे खो देंगे, या पहुंच समाप्त होने से पहले नवीनीकरण छूट के साथ एक [इन-ऐप संदेश](/hi/product/messaging-channels/in-apps/) भेजें।

**नए सब्सक्राइबर्स को ऑनबोर्ड करें:** `PW_SubscriptionStart` पर एक स्वागत श्रृंखला शुरू करें ताकि उपयोगकर्ताओं को उनकी योजना से जल्दी मूल्य प्राप्त करने में मदद मिल सके और नवीनीकरण के लिए मंच तैयार हो सके।

**विफल भुगतानों को बचाएं:** जब `PW_SubscriptionBillingIssue` फायर होता है, तो एक नवीनीकरण भुगतान सफल नहीं हुआ है और सब्सक्रिप्शन एप्पल की पुनः प्रयास विंडो में है। उपयोगकर्ता को उनकी भुगतान विधि अपडेट करने के लिए प्रेरित करें इससे पहले कि वे पहुंच खो दें, और इसे हल हो जाने पर पुष्टि करने के लिए `PW_SubscriptionRecovered` के साथ फॉलो-अप करें।

**चूक गए उपयोगकर्ताओं को फिर से संलग्न करें:** उन सब्सक्राइबर्स के लिए जो पूरी तरह से मंथन कर चुके हैं, `PW_SubscriptionExpired` पर एक लौटने वाले-ग्राहक प्रस्ताव के साथ एक पुनर्सक्रियन अभियान शुरू करें।


## इंटीग्रेशन को सेट अप करना

### डिवाइस के Pushwoosh HWID पर `appAccountToken` सेट करें

Pushwoosh डिवाइस के **HWID** से सही उपयोगकर्ता की पहचान करता है, इसलिए आपके ऐप को सब्सक्रिप्शन StoreKit के माध्यम से खरीदे जाने पर डिवाइस के Pushwoosh HWID को `appAccountToken` के रूप में संलग्न करना होगा।

डिफ़ॉल्ट रूप से, Pushwoosh iOS SDK डिवाइस के `identifierForVendor` (IDFV) को HWID के रूप में उपयोग करता है। IDFV पहले से ही एक `UUID` है, ठीक वही प्रारूप जो एप्पल को `appAccountToken` के लिए चाहिए। Pushwoosh फिर उस डिवाइस से वर्तमान में जुड़े उपयोगकर्ता को स्वचालित रूप से हल करता है, इसलिए यह काम करता है चाहे आप `setUserId` के साथ अपनी खुद की यूजर आईडी असाइन करें या नहीं।

<Tabs>
<TabItem label="StoreKit 2">
```swift
// Attach the device's Pushwoosh HWID (the default IDFV) as the appAccountToken
var options: Set<Product.PurchaseOption> = []
if let hwid = UIDevice.current.identifierForVendor {
    options.insert(.appAccountToken(hwid))
}

let result = try await product.purchase(options: options)
```
</TabItem>
<TabItem label="StoreKit 1">
```swift
// applicationUsername must be a UUID string to populate appAccountToken
let payment = SKMutablePayment(product: product)
payment.applicationUsername = UIDevice.current.identifierForVendor?.uuidString
SKPaymentQueue.default().add(payment)
```
</TabItem>
</Tabs>

<Aside type="caution">
यदि आपका ऐप Pushwoosh HWID को ओवरराइड करता है (उदाहरण के लिए, [`PushwooshKeychain`](/hi/developer/pushwoosh-sdk/ios-sdk/ios-keychain/) स्थायी HWID मॉड्यूल या एक कस्टम मान के माध्यम से), तो `appAccountToken` को उसी HWID पर सेट करें। टोकन को Pushwoosh में डिवाइस के HWID से मेल खाना चाहिए, अन्यथा इवेंट को एट्रिब्यूट नहीं किया जा सकता है।
</Aside>

### अपना Pushwoosh एप्लिकेशन कोड खोजें

Pushwoosh कंट्रोल पैनल में अपना एप्लिकेशन खोलें। आपका **एप्लिकेशन कोड** (प्रारूप `XXXXX-XXXXX`) साइडबार में प्रोजेक्ट नाम के नीचे दिखाया गया है।

आपको नोटिफिकेशन URL बनाने के लिए एप्लिकेशन कोड की आवश्यकता होगी।

### ऐप स्टोर कनेक्ट में नोटिफिकेशन URL जोड़ें

1. [ऐप स्टोर कनेक्ट](https://appstoreconnect.apple.com/) में, **ऐप्स → आपका ऐप → ऐप जानकारी** (*सामान्य* के अंतर्गत) पर जाएं, और **ऐप स्टोर सर्वर नोटिफिकेशन्स** तक स्क्रॉल करें।
2. **संस्करण 2** नोटिफिकेशन्स चुनें।
3. **प्रोडक्शन सर्वर URL** और **सैंडबॉक्स सर्वर URL** दोनों को इस पर सेट करें:

```
https://appstore-notifications.pushwoosh.com/appstore/YOUR_APPLICATION_CODE/
```

4. `YOUR_APPLICATION_CODE` को पिछले चरण से प्राप्त एप्लिकेशन कोड से बदलें। अंतिम स्लैश को बनाए रखें।

<Aside type="note">
यदि आपका खाता **यूएस डेटा सेंटर** में होस्ट किया गया है, तो इसके बजाय `https://appstore-notifications.pushwoosh.us/appstore/YOUR_APPLICATION_CODE/` का उपयोग करें। यदि आप अनिश्चित हैं कि आपका खाता कौन सा डेटा सेंटर उपयोग करता है, तो अपने कस्टमर सक्सेस मैनेजर या [Pushwoosh सपोर्ट](https://www.pushwoosh.com/contact-us/) से संपर्क करें।
</Aside>

### Pushwoosh में इवेंट्स की पुष्टि करें

Pushwoosh आपके प्रोजेक्ट में प्रत्येक `PW_Subscription*` इवेंट को पहली बार होने पर `productID` और `expiresAt` एट्रिब्यूट्स के साथ पंजीकृत करता है। एक सैंडबॉक्स परीक्षण के बाद, **ऑडियंस → इवेंट्स** खोलें ताकि यह सत्यापित हो सके कि इवेंट्स दिखाई देते हैं। वे फिर सेगमेंटेशन, सांख्यिकी और कस्टमर जर्नी के लिए तैयार हैं।

### अपना अभियान बनाएं

किसी भी `PW_Subscription*` इवेंट पर [ट्रिगर-आधारित एंट्री](/hi/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) के साथ एक [कस्टमर जर्नी](/hi/product/customer-journey/pushwoosh-journey-overview/) बनाएं, उदाहरण के लिए `PW_SubscriptionCancel` वापस जीतने के लिए या `PW_SubscriptionStart` ऑनबोर्डिंग के लिए, और वे संदेश जोड़ें जिन्हें आप भेजना चाहते हैं।

## परीक्षण

ऐप स्टोर सर्वर नोटिफिकेशन्स को एप्पल के **सैंडबॉक्स** वातावरण में ट्रिगर किया जा सकता है। इंटीग्रेशन को सत्यापित करने के लिए:

1. ऊपर वर्णित अनुसार `appAccountToken` सेट के साथ एक सैंडबॉक्स सब्सक्रिप्शन खरीद करें। यह `PW_SubscriptionStart` को फायर करता है।
2. डिवाइस की सब्सक्रिप्शन प्रबंधन स्क्रीन से स्वतः-नवीनीकरण अक्षम करें। यह `PW_SubscriptionCancel` को फायर करता है।
3. Pushwoosh कंट्रोल पैनल में, उपयोगकर्ता प्रोफ़ाइल खोलें और [इवेंट्स हिस्ट्री](/hi/product/audience-data-and-segmentation/user-explorer/#events-history-tab) पर जाएं।
4. पुष्टि करें कि इवेंट्स कुछ ही क्षणों में दिखाई देते हैं।