iOS 10 - कैमरा, माइक्रोफ़ोन और फोटो लाइब्रेरी की अनुमति पूछने में परिवर्तन से एप्लिकेशन क्रैश हो जाता है


103

iOS 10, अब एक्सेस मीडिया लाइब्रेरी, फोटो, कैमरा और इन जैसे अन्य हार्डवेयर के लिए उपयोगकर्ता की अनुमति की आवश्यकता है। इसका समाधान यह है info.plistकि उपयोगकर्ता के विवरण के साथ उनकी कुंजी को जोड़ा जाए कि हम उनके डेटा का उपयोग कैसे कर रहे हैं,

मैं केवल कुछ चाबियाँ पा सकता था

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

मैं यह जानना चाहता हूं कि क्या अन्य हार्डवेयर के लिए भी अधिक कुंजियां हैं जैसे कि iOS 10 यदि आपने info.plistउचित कुंजियों के विवरण के साथ प्रदान नहीं किया है तो यदि XCode - 8 बीटा का उपयोग करते हुए आपका एप्लिकेशन क्रैश हो जाएगा


NDA के तहत iOS 10 नहीं है?
ऋषि ४४४

मैं इस बारे में निश्चित नहीं हूँ।
सैयद अली सलमान

जवाबों:


138

[IOS 13 को अद्यतन गोपनीयता कुंजी सूची - नीचे देखें]

वहाँ सभी की एक सूची है Cocoa Keysजिसे आप अपनी Info.plistफ़ाइल में निर्दिष्ट कर सकते हैं :

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

(Xcode: लक्ष्य -> ​​जानकारी -> कस्टम iOS लक्ष्य गुण)

iOS को पहले से ही माइक्रोफोन, कैमरा और मीडिया लाइब्रेरी (iOS 6, iOS 7) को एक्सेस करने के लिए पहले से ही अनुमति की आवश्यकता होती है, लेकिन चूंकि iOS 10 ऐप क्रैश हो जाएगा यदि आप विवरण नहीं देते हैं कि आप अनुमति क्यों मांग रहे हैं (यह नहीं हो सकता है खाली)।

उदाहरण विवरण के साथ गोपनीयता कुंजी: प्रवंचक पत्रक

स्रोत

वैकल्पिक रूप से, आप Info.plistस्रोत कोड के रूप में खोल सकते हैं : सोर्स कोड

स्रोत

और इस तरह गोपनीयता कुंजी जोड़ें:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>

सभी गोपनीयता कुंजी की सूची: [iOS 13 को अद्यतन]

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription

अपडेट 2019:

पिछले महीनों में, मेरे दो ऐप्स को समीक्षा के दौरान अस्वीकार कर दिया गया था क्योंकि कैमरा उपयोग विवरण निर्दिष्ट नहीं कर रहा था कि मैं फ़ोटो के साथ क्या करता हूं।

मुझे वर्णन ${PRODUCT_NAME} need access to the camera to take a photoको तब ${PRODUCT_NAME} need access to the camera to update your avatarभी बदलना पड़ा जब ऐप का संदर्भ स्पष्ट था (अवतार पर टैप किया गया उपयोगकर्ता)।

ऐसा लगता है कि Apple अब गोपनीयता उपयोग विवरणों पर और भी अधिक ध्यान दे रहा है, और हमें विवरणों में स्पष्ट करना चाहिए कि हम अनुमति क्यों मांग रहे हैं।


2
हां, लेकिन हालांकि यह बदलाव है कि यदि आप अनुमति नहीं मांग रहे हैं, तो आप इस बारे में विवरण नहीं देंगे कि आवेदन अब दुर्घटनाग्रस्त हो जाएगा। अगर मैं गलत हूं कृपया मुझे सही।
सैयद अली सलमान

1
@ सैयद अली सलमान आप सही हैं - यह iOS10 के बाद से दुर्घटनाग्रस्त हो जाएगा, अब वास्तव में आपका सवाल है। उत्तर को अपडेट करेगा। :)
क्लिमेक्जाम

1
मुझे उम्मीद है कि सेब यह तय करेगा कि यह अनिवार्य है या नहीं। सेब प्रलेखन के अनुसार यह नहीं है:Explain why your app needs the information if it’s not obvious. You can add custom text to the system-provided permission request alert. Make the text specific and polite, so people don’t feel pressured. Keep the text short, and use sentence case. There’s no need to include your app name. The system already identifies your app as the one making the request.
sumofighter666

मैंने पहले सिस्टम-जनरेटेड मैसेज को प्रदर्शित करने के लिए इन मूल्यों को खाली छोड़ने में सक्षम होने के बारे में टिप्पणी की, और जब यह कार्यात्मक रूप से ठीक काम करता है, तो ऐसा प्रतीत होता है कि यदि आप इन कुंजियों को शामिल करते हैं तो Apple आपके बाइनरी को ऑटो-रिजेक्ट कर देगा, लेकिन उनके लिए कोई मूल्य निर्धारित नहीं करता है ।
Stonz2

13
यह मुझे लगता है कि यह ऐप्पल से कुल बकवास है , एक ऐप को बस क्रैश करने के लिए जब यह एक अनुमति विवरण की कमी है ... क्या एक गरीब उपयोगकर्ता अनुभव! (बेनामी) ऐपस्टोर समीक्षा में तेजी से प्रवाह की शिकायत करता है ... और निश्चित रूप से सिमुलतोर अलग तरह से व्यवहार करता है ...
गेब्रियल

65

कृपया ios 10 अनुरोध अनुमति नमूने के लिए नीचे दिए गए कोड खोजें info.plist
आप अपने कस्टम संदेश के लिए संशोधित कर सकते हैं।

    <key>NSCameraUsageDescription</key>
    <string>${PRODUCT_NAME} Camera Usage</string>

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>${PRODUCT_NAME} BluetoothPeripheral</string>

    <key>NSCalendarsUsageDescription</key>
    <string>${PRODUCT_NAME} Calendar Usage</string>

    <key>NSContactsUsageDescription</key>
    <string>${PRODUCT_NAME} Contact fetch</string>

    <key>NSHealthShareUsageDescription</key>
    <string>${PRODUCT_NAME} Health Description</string>

    <key>NSHealthUpdateUsageDescription</key>
    <string>${PRODUCT_NAME} Health Updates</string>

    <key>NSHomeKitUsageDescription</key>
    <string>${PRODUCT_NAME} HomeKit Usage</string>

    <key>NSLocationAlwaysUsageDescription</key>
    <string>${PRODUCT_NAME} Use location always</string>

    <key>NSLocationUsageDescription</key>
    <string>${PRODUCT_NAME} Location Updates</string>

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>${PRODUCT_NAME} WhenInUse Location</string>

    <key>NSAppleMusicUsageDescription</key>
    <string>${PRODUCT_NAME} Music Usage</string>

    <key>NSMicrophoneUsageDescription</key>
    <string>${PRODUCT_NAME} Microphone Usage</string>

    <key>NSMotionUsageDescription</key>
    <string>${PRODUCT_NAME} Motion Usage</string>

    <key>kTCCServiceMediaLibrary</key>
    <string>${PRODUCT_NAME} MediaLibrary Usage</string>

    <key>NSPhotoLibraryUsageDescription</key>
    <string>${PRODUCT_NAME} PhotoLibrary Usage</string>

    <key>NSRemindersUsageDescription</key>
    <string>${PRODUCT_NAME} Reminder Usage</string>

    <key>NSSiriUsageDescription</key>
    <string>${PRODUCT_NAME} Siri Usage</string>

    <key>NSSpeechRecognitionUsageDescription</key>
    <string>${PRODUCT_NAME} Speech Recognition Usage</string>

    <key>NSVideoSubscriberAccountUsageDescription</key>
    <string>${PRODUCT_NAME} Video Subscribe Usage</string>

iOS 11 और प्लस, यदि आप अपने पुस्तकालय में फोटो / छवि जोड़ना चाहते हैं तो आपको यह कुंजी जोड़ना होगा

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>

धन्यवाद, इसका सही जवाब, बस Apple कहता है "आपके ऐप नाम को शामिल करने की कोई आवश्यकता नहीं है। सिस्टम पहले से ही आपके ऐप को अनुरोध करने वाले के रूप में पहचानता है।"
यूनेल बेयरम

2
यही वह जवाब है जिसकी मुझे तलाश थी
दिनेश फलवाडिय़ा

19

आपको iOS 10 के लिए Info.plist में इस अनुमति को जोड़ना होगा।

तस्वीर :

Key       :  Privacy - Photo Library Usage Description    
Value   :  $(PRODUCT_NAME) photo use

माइक्रोफोन:

Key        :  Privacy - Microphone Usage Description    
Value    :  $(PRODUCT_NAME) microphone use

कैमरा :

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use

सही चाबी की तरह हैं NSPhotoLibraryUsageDescription
बैंगऑपरेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.