iOS ऐप्स और SDKs के लिए PrivacyInfo.xcprivacy कैसे लागू करें

opoinstall
2026-08-21
5 min read

iOS ऐप्स के लिए PrivacyInfo.xcprivacy कैसे लागू करें? PrivacyInfo.xcprivacy को लागू करने के लिए आपके एप्लिकेशन या SDK टारगेट में एक वैध गोपनीयता मेनिफेस्ट (privacy manifest) जोड़ने, उपयोग किए जाने वाले किसी भी आवश्यक कारण API (जैसे User Defaults या System Boot Time) के लिए स्वीकृत कारण कोड घोषित करने, और यह सत्यापित करने की आवश्यकता होती है कि तृतीय-पक्ष निर्भरताएँ उनके वितरण स्वरूप पर लागू होने वाली गोपनीयता-मेनिफेस्ट और हस्ताक्षर आवश्यकताओं को पूरा करती हैं।

गोपनीयता मेनिफेस्ट (PrivacyInfo.xcprivacy) iOS ऐप्स और तृतीय-पक्ष SDKs के भीतर बंडल की गई एक मानकीकृत प्रॉपर्टी सूची फ़ाइल है जो डेटा संग्रह श्रेणियों, ट्रैकिंग डोमेन कॉन्फ़िगरेशन, और Apple-निर्दिष्ट आवश्यक कारण API (Required Reason APIs) तक पहुँचने के लिए स्वीकृत औचित्य घोषित करती है। 1 मई, 2024 से, App Store Connect पर सबमिट किए जाने वाले ऐप्स में ऐप के कोड द्वारा उपयोग किए जाने वाले आवश्यक कारण API के लिए स्वीकृत कारण शामिल होने चाहिए, जिसमें लागू तृतीय-पक्ष SDK कोड भी शामिल है।

शब्द परिभाषा
PrivacyInfo.xcprivacy ऐप और SDK गोपनीयता प्रथाओं को घोषित करने के लिए Apple का मानकीकृत प्रॉपर्टी सूची प्रारूप।
Required Reason APIs विशिष्ट प्लेटफ़ॉर्म API (जैसे User Defaults या Disk Space) जिनके लिए स्पष्ट औचित्य कोड की आवश्यकता होती है।
Resource Bundle Signing जनरेट किए गए संसाधन-बंडल लक्ष्यों पर लागू बिल्ड-सिस्टम कोड-हस्ताक्षर व्यवहार, जिसके लिए कुछ Xcode और CocoaPods कॉन्फ़िगरेशन में समस्या निवारण की आवश्यकता हो सकती है।
Privacy Report संग्रहीत ऐप और लिंक्ड SDK में खोजी गई गोपनीयता-मेनिफेस्ट घोषणाओं को संयोजित करने वाली Xcode 15+ द्वारा जनरेट की गई एक समेकित PDF सारांश रिपोर्ट।

iOS SDKs के लिए Apple गोपनीयता मेनिफेस्ट आवश्यकताओं को समझना

गोपनीयता मेनिफेस्ट की वास्तुकला: मुख्य एप्लिकेशन मेनिफेस्ट बनाम एम्बेडेड SDK मेनिफेस्ट

Apple का गोपनीयता मेनिफेस्ट ढांचा iOS सॉफ्टवेयर आपूर्ति श्रृंखला में एक मॉड्यूलर पारदर्शिता मॉडल स्थापित करता है। होस्ट एप्लिकेशन को प्रत्येक आयातित लाइब्रेरी के आंतरिक कार्यान्वयन विवरणों को मैन्युअल रूप से ऑडिट और घोषित करने की आवश्यकता के बजाय, Apple गोपनीयता शासन को अलग-अलग परतों में विभाजित करता है:

  • मुख्य एप्लिकेशन मेनिफेस्ट (Main Application Manifest): प्रथम-पक्ष डेटा संग्रह, ऐप-स्तरीय ट्रैकिंग डोमेन, और प्राथमिक एप्लिकेशन टारगेट कोड द्वारा सीधे呼び जाने वाले आवश्यक कारण API को कवर करता है।
  • एम्बेडेड SDK मेनिफेस्ट (Embedded SDK Manifests): आवश्यक कारण API घोषणाओं के स्वामित्व उस ऐप या तृतीय-पक्ष SDK कोड के पास होने चाहिए जो उन API का उपयोग करता है। निष्पादन योग्य (executables) और गतिशील लाइब्रेरीज़ के लिए, उस निष्पादन योग्य या लाइब्रेरी वाले बंडल में प्रासंगिक गोपनीयता मेनिफेस्ट शामिल होना चाहिए; कोई तृतीय-पक्ष SDK अपनी SDK के आवश्यक कारण API उपयोग की रिपोर्ट करने के लिए होस्ट ऐप के मेनिफेस्ट पर भरोसा नहीं कर सकता है।
  • स्वचालित निर्भरता एकत्रीकरण (Automated Dependency Aggregation): जब किसी एप्लिकेशन को Xcode 15 या बाद के संस्करण में संग्रहीत (archive) किया जाता है, तो बिल्ड सिस्टम निर्भरता ग्राफिक को पार करता है, सभी बंडल किए गए PrivacyInfo.xcprivacy फ़ाइलों को खोजता है, और उन्हें एक एकल, एकीकृत गोपनीयता रिपोर्ट में एकत्रित करता है।

PrivacyInfo xcprivacy app and SDK manifest architecture

चार मूल कॉन्फ़िगरेशन कुंजियाँ (Root Configuration Keys)

प्रत्येक PrivacyInfo.xcprivacy फ़ाइल को अधिकतम चार मूल-स्तरीय कुंजियों वाली XML प्रॉपर्टी सूची शब्दकोश के रूप में संरचित किया गया है:

  • NSPrivacyTracking (बूलियन): घोषित करता है कि क्या एप्लिकेशन या SDK Apple ऐप ट्रैकिंग ट्रांसपेरेंसी (ATT) परिभाषाओं के तहत ट्रैकिंग के लिए ऐप से एकत्र किए गए डेटा का उपयोग करता है।
  • NSPrivacyTrackingDomains (स्ट्रिंग्स की सरणी): ऐप या SDK द्वारा कनेक्ट किए जाने वाले इंटरनेट डोमेन को सूचीबद्ध करता है जो ट्रैकिंग में संलग्न हैं। यदि कोई उपयोगकर्ता ATT प्राधिकरण प्रदान नहीं करता है, तो iOS इस सरणी में घोषित डोमेन के साथ नेटवर्क कनेक्शन को ब्लॉक कर देता है। यदि कोई ऐप या SDK ट्रैकिंग डोमेन से कनेक्ट नहीं होता है, तो इस कुंजी को छोड़ा जा सकता है।
  • NSPrivacyCollectedDataTypes (शब्दकोशों की सरणी): ऐप या SDK द्वारा ऐप का उपयोग करने वाले लोगों के बारे में एकत्र किए जाने वाले डेटा की Apple-परिभाषित श्रेणियों की रिपोर्ट करता है, साथ ही यह भी बताता है कि क्या डेटा उपयोगकर्ता की पहचान से जुड़ा है, क्या इसका उपयोग ट्रैकिंग के लिए किया जाता है, और यह किन परिचालन उद्देश्यों के लिए एकत्र किया जाता है।
  • NSPrivacyAccessedAPITypes (शब्दकोशों की सरणी): बाइनरी द्वारा调用 किए गए Apple-निर्दिष्ट आवश्यक कारण API को घोषित करता है, साथ में स्वीकृत स्ट्रिंग कारण कोड भी होते हैं।

PrivacyInfo xcprivacy four root configuration keys

App Store Connect इंजेशन प्रवर्तन और त्रुटि निदान

App Store Connect बाइनरी इंजेशन के दौरान गोपनीयता मेनिफेस्ट को लागू करता है:

  • लापता API घोषणा (ITMS-91053): तब शुरू होता है जब कोई संकलित बाइनरी या लिंक्ड लाइब्रेरी किसी आवश्यक कारण API प्रतीक को कॉल करती है, लेकिन संगत श्रेणी कुंजी NSPrivacyAccessedAPITypes से गायब होती है।
  • अमान्य कारण कोड घोषणा: तब होता है जब कोई मेनिफेस्ट किसी विशिष्ट API श्रेणी के लिए किसी अस्वीकृत, विकृत (malformed), या पदावनत (deprecated) कारण स्ट्रिंग को घोषित करता है।
  • आवश्यक तृतीय-पक्ष SDK मेनिफेस्ट गायब: सूचीबद्ध SDKs के लिए Apple की वर्तमान तृतीय-पक्ष SDK आवश्यकताओं द्वारा परिभाषित सबमिशन परिदृश्यों में प्रवर्तित, बाइनरी वितरण के लिए गोपनीयता मेनिफेस्ट और वैध डिजिटल हस्ताक्षर दोनों की आवश्यकता होती है।

क्लाइंट एट्रिब्यूशन और डीप लिंकिंग को एकीकृत करने वाले डेवलपर्स मेनिफेस्ट घोषणाओं के संबंध में तकनीकी विनिर्देशों के लिए iOS SDK एकीकरण दस्तावेज़ देख सकते हैं।

यह भी देखें: iOS SDK ──> मोबाइल एट्रिब्यूशन आर्किटेक्चर

आवश्यक कारण API श्रेणियाँ और स्वीकृत कारण कोड

पाँच आवश्यक कारण API श्रेणियाँ

Apple Developer Technote TN3183 के अनुसार, Apple पाँच विशिष्ट API श्रेणियों को परिभाषित करता है जिनके लिए NSPrivacyAccessedAPITypes में स्पष्ट औचित्य कोड की आवश्यकता होती है। मोबाइल SDKs और iOS एप्लिकेशन आमतौर पर चार प्राथमिक श्रेणियों के साथ इंटरैक्ट करते हैं:

  • NSPrivacyAccessedAPICategoryUserDefaults: UserDefaults या NSUserDefaults के माध्यम से स्थानीय ऐप सेटिंग्स तक पहुँचना।
  • NSPrivacyAccessedAPICategorySystemBootTime: sysctl(KERN_BOOTTIME) या systemUptime जैसे सिस्टम बूट API का उपयोग करके बीते हुए समय या टाइमस्टैम्प को मापना।
  • NSPrivacyAccessedAPICategoryDiskSpace: statfs, statvfs, या volumeAvailableCapacityKey के माध्यम से फ़ाइल सिस्टम क्षमता का निरीक्षण करना।
  • NSPrivacyAccessedAPICategoryFileTimestamp: stat, getattrlist, या contentModificationDateKey के माध्यम से फ़ाइल निर्माण या संशोधन तिथियों की जाँच करना।
  • NSPrivacyAccessedAPICategoryActiveKeyboards: सक्रिय कस्टम कीबोर्ड एक्सटेंशन का निरीक्षण करना (मुख्य रूप से विशेष कीबोर्ड यूटिलिटीज द्वारा उपयोग किया जाता है)।

सामान्य SDK उपयोग के मामलों के लिए चयनित स्वीकृत कारण कोड मैपिंग

नीचे दी गई तालिका सामान्य-उद्देश्य वाले मोबाइल SDKs में आमतौर पर आने वाली श्रेणियों पर केंद्रित है; एक्टिव कीबोर्ड सहित संपूर्ण कारण सूची के लिए Apple के वर्तमान दस्तावेज़ को देखें। Apple दिशा-निर्देशों का पालन करने के लिए, डेवलपर्स को ऐसे कारण कोड चुनने चाहिए जो उनके वास्तविक रनटाइम डेटा उपयोग से सटीक रूप से मेल खाते हों:

API श्रेणी कुंजी (API Category Key) स्वीकृत कोड आधिकारिक Apple-संरेखित उद्देश्य
NSPrivacyAccessedAPICategoryUserDefaults CA92.1 केवल ऐप स्वयं के लिए सुलभ डेटा को पढ़ना और लिखना
NSPrivacyAccessedAPICategoryUserDefaults 1C8F.1 केवल समान ऐप ग्रुप के अंदर साझा किए जाने वाले डेटा को पढ़ना और लिखना
NSPrivacyAccessedAPICategoryUserDefaults C56D.1 होस्ट ऐप को की-वैल्यू कार्यक्षमता प्रदान करने वाला तृतीय-पक्ष SDK रैपर
NSPrivacyAccessedAPICategorySystemBootTime 35F9.1 ऐप के भीतर होने वाली घटनाओं के बीच बीते समय को मापना या 타이मर को संभालना
NSPrivacyAccessedAPICategorySystemBootTime 8FFB.1 ऐप के भीतर हुई घटनाओं के लिए पूर्ण टाइमस्टैम्प की गणना करना
NSPrivacyAccessedAPICategoryDiskSpace E174.1 फ़ाइलें लिखने से पहले डिस्क स्थान की जाँच करना और यदि स्थान कम है तो ऐप के व्यवहार को संशोधित करना
NSPrivacyAccessedAPICategoryDiskSpace 85F4.1 उपयोगकर्ता को उपलब्ध क्षमता प्रदर्शित करने के लिए डिस्क-स्पेस जानकारी तक पहुँचना
NSPrivacyAccessedAPICategoryFileTimestamp C617.1 ऐप कंटेनर, ऐप ग्रुप, या क्लाउडकिट कंटेनर के अंदर फ़ाइल मेटाडेटा तक पहुँचना
NSPrivacyAccessedAPICategoryFileTimestamp 3B52.1 उपयोगकर्ता द्वारा स्पष्ट रूप से चयनित फ़ाइलों या निर्देशिकाओं के लिए मेटाडेटा तक पहुँचना
NSPrivacyAccessedAPICategoryFileTimestamp 0A2A.1 केवल होस्ट ऐप की ओर से फ़ाइल टाइमस्टैम्प तक पहुँचने वाला तृतीय-पक्ष SDK रैपर

Required Reason API categories and approved reason codes

एक उदाहरण PrivacyInfo.xcprivacy प्रॉपर्टी सूची का निर्माण करना

डेटा संग्रह प्रकारों को कॉन्फ़िगर करना

NSPrivacyCollectedDataTypes सरणी ऐप या SDK द्वारा ऐप का उपयोग करने वाले लोगों के बारे में एकत्र किए जाने वाले डेटा की Apple-परिभाषित श्रेणियों की रिपोर्ट करती है, साथ ही यह भी बताती है कि क्या डेटा उपयोगकर्ता की पहचान से जुड़ा है, क्या इसका उपयोग ट्रैकिंग के लिए किया जाता है, और यह किन परिचालन उद्देश्यों के लिए एकत्र किया जाता है:

  • NSPrivacyCollectedDataType: मानक Apple स्ट्रिंग पहचानकर्ता (जैसे, NSPrivacyCollectedDataTypeDeviceID)।
  • NSPrivacyCollectedDataTypeLinked: एक बूलियन जो यह इंगित करता है कि क्या डेटा किसी व्यक्तिगत उपयोगकर्ता की पहचान से जुड़ा है।
  • NSPrivacyCollectedDataTypeTracking: एक बूलियन जो यह इंगित करता है कि क्या डेटा का उपयोग क्रॉस-ऐप ट्रैकिंग के लिए किया जाता है।
  • NSPrivacyCollectedDataTypePurposes: मानक उद्देश्य स्ट्रिंग्स की एक सरणी (जैसे, NSPrivacyCollectedDataTypePurposeAnalytics)।

ट्रैकिंग डोमेन घोषित करना

यदि कोई SDK या एप्लिकेशन ATT परिभाषाओं के तहत ट्रैकिंग में संलग्न है, तो सभी संबंधित ट्रैकिंग डोमेन को NSPrivacyTrackingDomains के तहत घोषित किया जाना चाहिए। यदि उपयोगकर्ता द्वारा ट्रैकिंग प्राधिकरण नहीं दिया जाता है, तो iOS घोषित डोमेन से नेटवर्क कनेक्शन को ब्लॉक कर देता है। यदि ऐप या SDK ट्रैकिंग में संलग्न नहीं है, तो NSPrivacyTracking को false पर सेट किया जाना चाहिए और NSPrivacyTrackingDomains को छोड़ा जा सकता है।

नीचे दिया गया प्रॉपर्टी सूची कॉन्फ़िगरेशन एक उदाहरण PrivacyInfo.xcprivacy स्कीमा को दर्शाता है। केवल उन श्रेणियों और कारणों को शामिल करें जो आपके एप्लिकेशन के वास्तविक कार्यान्वयन को दर्शाते हैं:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyCollectedDataTypes</key>
    <array>
        <dict>
            <key>NSPrivacyCollectedDataType</key>
            <string>NSPrivacyCollectedDataTypeDeviceID</string>
            <key>NSPrivacyCollectedDataTypeLinked</key>
            <false/>
            <key>NSPrivacyCollectedDataTypeTracking</key>
            <false/>
            <key>NSPrivacyCollectedDataTypePurposes</key>
            <array>
                <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
                <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
            </array>
        </dict>
    </array>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>CA92.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>35F9.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>E174.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

CocoaPods रिसोर्स बंडल कोड साइनिंग त्रुटियों को हल करना

मूल कारण: Xcode 15 और 16 में रिसोर्स बंडल साइनिंग विफलताएँ

Xcode 15 या 16 में CocoaPods के माध्यम से निर्भरताओं को एकीकृत करते समय, डेवलपर्स अक्सर संकलन रुकने का सामना करते हैं:

Signing for "libOpoInstallSDK-OPPrivacy" requires a development team. Select a development team in the Signing & Capabilities editor.

यह बिल्ड विफलता एक Xcode और CocoaPods एकीकरण समस्या है:

  • एक पारंपरिक .a स्टैटिक लाइब्रेरी सीधे PrivacyInfo.xcprivacy जैसे संसाधनों को शामिल नहीं कर सकती है। Apple एक स्टैटिक फ्रेमवर्क के भीतर स्टैटिक SDK कोड और संसाधनों को एक साथ पैक करने की सलाह देता है।
  • कुछ CocoaPods एकीकरण इसके बजाय स्टैटिक लाइब्रेरी के साथ संसाधनों को वितरित करने के लिए अलग-अलग रिसोर्स-बंडल टारगेट जनरेट करते हैं।
  • निश्चित CocoaPods-जनरेटेड रिसोर्स-बंडल टारगेट ऐसे साइनिंग कॉन्फ़िगरेशन को इनहेरिट कर सकते हैं जिससे Xcode बिल्ड एक डेवलपमेंट टीम का अनुरोध करते हुए रुक जाते हैं। यह PrivacyInfo.xcprivacy स्कीमा आवश्यकता के बजाय एक बिल्ड-सिस्टम एकीकरण समस्या है।

Podfile में लक्षित बिल्ड-सिस्टम वर्कअराउंड लागू करना

स्वचालित बिल्ड में इस त्रुटि को हल करने के लिए, डेवलपर अपने प्रोजेक्ट Podfile में एक स्कोप किए गए post_install हुक का उपयोग कर सकते हैं। चूँकि यह गैर-निष्पादन योग्य संसाधन बंडलों के लिए एक बिल्ड-सिस्टम वर्कअराउंड है, इसलिए टीमों को इसे विशिष्ट प्रभावित बंडल टारगेट तक सीमित करना चाहिए या वैश्विक स्तर पर परिवर्तन लागू करने से पहले प्रभावित निर्भरताओं को सत्यापित करना चाहिए।

नीचे दी गई रूबी स्क्रिप्ट यह प्रदर्शित करती है कि CocoaPods टारगेट के माध्यम से कैसे पुनरावृत्ति (iterate) की जाए और नामित संसाधन बंडल टारगेट पर साइनिंग को कैसे अक्षम किया जाए:

post_install do |installer|
  # Specify non-executable resource bundle targets that encounter signing errors without a development team
  target_bundle_names = [
    'libOpoInstallSDK-OPPrivacy'
  ]

  installer.pods_project.targets.each do |target|
    if target.respond_to?(:product_type) &&
       target.product_type == "com.apple.product-type.bundle" &&
       target_bundle_names.include?(target.name)
      target.build_configurations.each do |config|
        # Strip code signing requirement from designated non-executable resource bundles
        config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        config.build_settings['CODE_SIGN_IDENTITY'] = ''
      end
    end
  end
end

Xcode में समेकित गोपनीयता रिपोर्ट का ऑडिट करना और उसे जनरेट करना

Xcode आर्काइव ऑर्गनाइज़र के माध्यम से एकीकृत गोपनीयता रिपोर्ट जनरेट करना

यह सत्यापित करने के लिए कि बाइनरी सबमिट करने से पहले सभी प्रथम-पक्ष टारगेट और तृतीय-पक्ष निर्भरताएँ ठीक से घोषित की गई हैं:

  1. Xcode 15 या बाद के संस्करण में अपना प्रोजेक्ट खोलें।
  2. रिलीज आर्काइव बनाने के लिए Product > Archive चुनें।
  3. Xcode ऑर्गनाइज़र में, आर्काइव पर राइट-क्लिक (या कंट्रोल-क्लिक) करें और Generate Privacy Report चुनें।
  4. यह पुष्टि करने के लिए कि सभी आवश्यक कारण API, डेटा श्रेणियाँ और तृतीय-पक्ष SDK मेनिफेस्ट सटीक रूप से दिखाई देते हैं, जनरेट की गई PDF रिपोर्ट को सहेजें और उसका निरीक्षण करें।

कमांड-लाइन स्टैटिक एनालिसिस: सबमिशन-पूर्व ह्यूरिस्टिक स्कैन

विकास टीमें nm और otool का उपयोग करके प्रतिबंधित प्रतीकों के लिए संकलित बाइनरी को स्कैन करके निरंतर एकीकरण (CI/CD) पाइपलाइनों के भीतर ह्यूरिस्टिक सबमिशन-पूर्व ऑडिट लागू कर सकती हैं:

# Scan unpacked application binary for candidate Required Reason API symbols
nm -u /path/to/Payload/YourApp.app/YourApp | grep -E 'sysctl|statfs|statvfs|getattrlist|NSUserDefaults'

# Check embedded frameworks and bundles for PrivacyInfo.xcprivacy manifests
find /path/to/Payload/YourApp.app -name "PrivacyInfo.xcprivacy"

प्रतीक की उपस्थिति अपने आप में यह स्थापित नहीं करती है कि कौन सा स्वीकृत कारण लागू होता है; मेनिफेस्ट को संशोधित करने से पहले वास्तविक कॉल पथ और उपयोग के मामले की समीक्षा करें। आधिकारिक सत्यापन के लिए टीमों को Xcode के Generate Privacy Report और App Store Connect प्री-चेक का उपयोग करना चाहिए।

iOS privacy manifest pre submission audit workflow

डायग्नोस्टिक मैट्रिक्स: ऐप स्टोर गोपनीयता मेनिफेस्ट अस्वीकृतियों के मूल कारण

विफलता मोड / त्रुटि कोड (Failure Mode / Error Code) अंतर्निहित मूल कारण देखा गया सिस्टम व्यवहार अनुशंसित उपाय
लापता API घोषणा (ITMS-91053) बाइनरी किसी प्रतिबंधित API को कॉल करती है लेकिन मेनिफेस्ट श्रेणी को छोड़ देता है App Store Connect अपलोड चेतावनी या अस्वीकृति मिलान करने वाली API श्रेणी और वैध कारण कोड घोषित करें
अमान्य कारण कोड (Invalid Reason Code) निर्दिष्ट कारण कोड उस श्रेणी के लिए Apple द्वारा स्वीकृत नहीं है App Store Connect सबमिशन को अस्वीकार करता है Apple विनिर्देशों से स्वीकृत कारण स्ट्रिंग का उपयोग करने के लिए XML को अपडेट करें
लापता तृतीय-पक्ष SDK मेनिफेस्ट एक सूचीबद्ध तृतीय-पक्ष SDK निर्भरता में एम्बेडेड मेनिफेस्ट का अभाव है App Store Connect लापता SDK मेनिफेस्ट को फ़्लैग करता है PrivacyInfo.xcprivacy प्रदान करने वाले संस्करण में निर्भरता को अपग्रेड करें
रिसोर्स बंडल कोड साइनिंग त्रुटि CocoaPods बिना किसी साइनिंग टीम के एक संसाधन बंडल टारगेट जनरेट करता है बिल्ड के दौरान Xcode संकलन रुक जाता है विफल होने वाले बंडल टारगेट का मूल्यांकन करें और एक स्कोप किया गया Podfile साइनिंग वर्कअराउंड लागू करें
अघोषित ट्रैकिंग एंडपॉइंट ऐप उस ट्रैकिंग सर्वर से कनेक्ट होता है जो NSPrivacyTrackingDomains में सूचीबद्ध नहीं है ऐप के ट्रैकिंग व्यवहार के लिए गोपनीयता कॉन्फ़िगरेशन अधूरा है NSPrivacyTrackingDomains के तहत सभी ट्रैकिंग एंडपॉइंट सूचीबद्ध करें

अक्सर पूछे जाने वाले प्रश्न (FAQ)

क्या प्रत्येक तृतीय-पक्ष SDK को अपनी स्वयं की PrivacyInfo.xcprivacy फ़ाइल की आवश्यकता होती है?
केवल इसलिए नहीं क्योंकि यह एक तृतीय-पक्ष लाइब्रेरी है। आवश्यक कारण API (Required Reason APIs) का उपयोग करने वाले SDK को अपने स्वयं के गोपनीयता मेनिफेस्ट में उन उपयोगों की रिपोर्ट करनी चाहिए, और डेटा एकत्र करने वाले SDK को अपने स्वयं के मेनिफेस्ट में उस संग्रह का वर्णन करना चाहिए। इसके अतिरिक्त, Apple अपनी वर्तमान तृतीय-पक्ष SDK आवश्यकताओं में वर्णित सबमिशन परिदृश्यों में सूचीबद्ध SDKs के लिए गोपनीयता मेनिफेस्ट की मांग करता है, जब उन सूचीबद्ध SDKs का उपयोग बाइनरी निर्भरता के रूप में किया जाता है तो अतिरिक्त रूप से हस्ताक्षरों की भी आवश्यकता होती है। होस्ट एप्लिकेशन किसी एम्बेडेड SDK की ओर से आवश्यक कारण API घोषित नहीं कर सकते हैं।
यदि कोई ऐप स्वीकृत कारण घोषित किए बिना UserDefaults का उपयोग करता है तो क्या होता है?
यदि कोई ऐप बाइनरी या लिंक्ड SDK किसी वैध कारण कोड (जैसे ऐप-आंतरिक डेटा के लिए `CA92.1` या ऐप समूहों के लिए `1C8F.1`) के साथ `NSPrivacyAccessedAPICategoryUserDefaults` घोषित किए बिना `UserDefaults` API को कॉल करता है, तो App Store Connect बाइनरी को `ITMS-91053` त्रुटि के साथ फ़्लैग कर देगा या सबमिशन को ब्लॉक कर देगा। सही कारण कोड वास्तविक रनटाइम डेटा उपयोग पर निर्भर करता है।
क्या कोई एप्लिकेशन एकल API श्रेणी के लिए कई कारण घोषित कर सकता है?
हाँ। `NSPrivacyAccessedAPITypeReasons` कुंजी स्ट्रिंग्स की एक सरणी स्वीकार करती है। यदि कोई एप्लिकेशन या SDK कई अलग-अलग स्वीकृत उद्देश्यों के लिए किसी API का उपयोग करता है (उदा., `E174.1` के माध्यम से ऐप व्यवहार को संशोधित करने के लिए पर्याप्त डिस्क स्थान की जाँच करना और उपयोगकर्ता को `85F4.1` के माध्यम से उपलब्ध डिस्क स्थान प्रदर्शित करना भी), तो दोनों स्वीकृत कारण कोड सरणी के भीतर घोषित किए जा सकते हैं।

सारांश और निर्णय ढांचा (Summary and Decision Framework)

Apple का गोपनीयता मेनिफेस्ट ढांचा iOS सॉफ्टवेयर आपूर्ति श्रृंखला में पारदर्शिता लागू करता है। सुचारू App Store सबमिशन सुनिश्चित करने के लिए विकास टीमों को आवश्यक कारण API उपयोग के लिए प्रथम-पक्ष कोड का ऑडिट करने, यह सत्यापित करने की आवश्यकता होती है कि तृतीय-पक्ष SDK निर्भरताएँ उनके API उपयोग पर लागू होने वाली गोपनीयता-मेनिफेस्ट आवश्यकताओं को पूरा करती हैं, और CocoaPods रिसोर्स बंडल साइनिंग को उचित रूप से प्रबंधित करती हैं।

उत्पाद-विशिष्ट गोपनीयता-मेनिफेस्ट घोषणाओं के लिए, OpoInstall दस्तावेज़ की समीक्षा करें और भेजे गए मेनिफेस्ट की तुलना एप्लिकेशन के वास्तविक एकीकरण और Apple की वर्तमान आवश्यकताओं से करें।

संबंधित सामग्रियां (Related Materials)

  • अवधारणाएँ (Concepts): गोपनीयता मेनिफेस्ट, आवश्यक कारण API, रिसोर्स बंडल कोड साइनिंग, गोपनीयता रिपोर्ट, ऐप स्टोर अनुपालन

  • प्रौद्योगिकियाँ (Technologies): Xcode 15+, CocoaPods डिपेंडेंसी मैनेजर, स्विफ्ट पैकेज मैनेजर, OpoInstall iOS SDK

  • मानक (Standards): Apple गोपनीयता मेनिफेस्ट विनिर्देश, ऐप स्टोर समीक्षा दिशा-निर्देश अनुभाग 5.1.1

  • APIs & कॉन्फ़िगरेशन: PrivacyInfo.xcprivacy, NSPrivacyAccessedAPITypes, Podfile post_install हुक

आधिकारिक दस्तावेज़ (Official Documentation)

Share this article

Keep Discovering

OpenAI ने Mac पर ChatGPT में Apple Messages नियंत्रण जोड़ा

OpenAI ने Mac पर ChatGPT में Apple Messages नियंत्रण जोड़ा

OpenAI ने Mac पर ChatGPT में Apple Messages समर्थन जोड़ा है। जानिए नई अनुमतियां, डिफ़ॉल्ट संदेश भेजने की स्वीकृतियां और macOS स्वचालन (automation) एजेंट सुरक्षा को कैसे प्रभावित करते हैं।

Alibaba Qwen UI Agent 150 से अधिक ऐप्स पर वास्तविक फोन को नियंत्रित करता है

Alibaba Qwen UI Agent 150 से अधिक ऐप्स पर वास्तविक फोन को नियंत्रित करता है

Alibaba Qwen UI Agent 150 से अधिक ऐप्स पर वास्तविक फोन को नियंत्रित करता है। इस GUI फाउंडेशन मॉडल और इसके बेंचमार्क का हमारा तकनीकी विश्लेषण पढ़ें।

SKAdNetwork S2S वर्कफ़्लो: विज्ञापन नेटवर्क पोस्टबैक को कैसे सत्यापित करें

SKAdNetwork S2S वर्कफ़्लो: विज्ञापन नेटवर्क पोस्टबैक को कैसे सत्यापित करें

जानें कि DSPs और विज्ञापन नेटवर्क Apple SKAdNetwork S2S पोस्टबैक को कैसे सत्यापित करते हैं: U+2063 सिरीलाइज़ेशन, ECDSA P-256 हस्ताक्षर, और ट्रांजैक्शन-आईडी डुप्लीकेशन से बचाव में महारत हासिल करें।