UIImagePickerController का उपयोग करते समय iOS 10 त्रुटि [पहुंच] <निजी>


102

मैं XCode 8 और iOS 10.2 बीटा के साथ परीक्षण कर रहा हूं।

मैंने फ़ोटो, फ़ोटोयूआई और मोबाइलकोर सर्विसेज फ्रेमवर्क को प्रोजेक्ट में जोड़ा है।

बहुत सरल कोड:

#import <Photos/Photos.h>
#import <PhotosUI/PhotosUI.h>
#import <MobileCoreServices/MobileCoreServices.h>

@interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHLivePhotoViewDelegate>

@property (strong, nonatomic) IBOutlet UIImageView *imageview;

@end

और आवेदन:

- (IBAction)grab:(UIButton *)sender{
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    picker.allowsEditing = NO;
    picker.delegate = self;

    // make sure we include Live Photos (otherwise we'll only get UIImages)
    NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
    picker.mediaTypes = mediaTypes;

    // bring up the picker
    [self presentViewController:picker animated:YES completion:nil];
}

जैसे ही मैं बटन टैप करता हूं, ऐप बहुत बेकार त्रुटि के साथ क्रैश हो जाता है:

[access] <private>

बस। और कुछ नहीं।

ब्रेक स्टेटमेंट का उपयोग करते हुए, ऐप "presentViewController" पर क्रैश होने लगता है।

यह एक बिल्कुल नया ऐप है और मेरे पास हड़पने के बटन के अलावा UI में और कुछ नहीं है।

इसके अलावा, iOS 9.3 पर परीक्षण, यह ठीक काम करता है। क्या मुझे आईओएस 10 में कुछ बदला जा सकता है?


साफ और फिर निर्माण। यदि कोई परिवर्तन नहीं हुआ, तो आसानी से Xcode 8 या iOS 10 बीटा में बग हो सकता है जो कि भविष्य के अपडेट में Apple द्वारा हल हो जाएगा। मुझे अक्सर लगता है कि यह मामला है - यदि यह अंतिम बीटा है, या जीएम रिलीज़ है और यह अभी भी काम नहीं कर रहा है, तो इसे ठीक करने के बारे में चिंता करने का समय होगा।
जॉर्डन स्मिथ

1
हां, एप को साफ करने और हटाने के बाद भी यही मुद्दा :(
प्रणॉय सी। जूल

मैं इसके बारे में तनाव नहीं होगा। यह एक बीटा रिलीज है। संभावना अधिक है कि यह बीटा के साथ एक मुद्दा है। मैं Xcode 7 पर विकसित करने का सुझाव दूंगा जब तक कि रिलीज के करीब नहीं।
जॉर्डन स्मिथ

ठीक है समझ में आता है! धन्यवाद @ जोर्डन
प्रणॉय सी। जूल

@ जोर्डन ऐसा लगता है कि iOS 10 के रूप में एक नई आवश्यकता है। समाधान देखें: stackoverflow.com/a/38241350/1634905
प्रणॉय C

जवाबों:


172

आपको अपनी मुट्ठी में NSPhotoLibraryUsageDescription लगानी पड़ सकती है। पसंद

<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) uses photos</string>

यहां सभी उपयोग विवरणों की जांच करें


1
क्षमा करें, आपको यह रिलीज़ नंबर कैसे मिला?
प्रणॉय सी। जूल

1
IOS डाउनलोड वेबसाइट में, मैं सिर्फ सही यूसेजडेसक्रिप्शन कुंजी के साथ हल करता हूं।
रॉकडस्विफ्ट

धन्यवाद, आपके उत्तर ने तुरंत समस्या हल कर दी! IOS के बाद से यह एक नई आवश्यकता है। 10. आपका स्वागत है स्टैक ओवरफ्लो btw!
प्रणॉय सी। जूल

बहुत बहुत धन्यवाद! मैं NSAppleMusicUsageDescription (आईट्यून्स म्यूजिक लाइब्रेरी तक पहुंच) से जल गया।
जीवनजॉय

4
@iomer मैंने इस मुद्दे को तय किया, मैंने info.plist में कुंजी जोड़ दी, लेकिन मैं इसे प्रोजेक्ट> लक्ष्य> जानकारी के तहत नहीं देख सका। इसलिए मैंने वहां भी जोड़ा, और Apple ने मेरे बाइनरी को पास किया। यह मेरे साथ एक बार पहले भी फेसबुक आईडी के साथ हुआ था। पता नहीं क्यों वहाँ नहीं दिखाया गया था।
राहील सादिक

132

IOS10 में, इससे पहले कि आप कैमरा, कॉन्टैक्ट्स जैसे प्राइवेसी-सेंसिटिव डेटा को एक्सेस करें, आपको ऑथराइजेशन के लिए पूछना होगा, या जब आप उन्हें एक्सेस करेंगे तो आपका ऐप क्रैश हो जाएगा। तब Xcode लॉग इन होगा:

यह एप्लिकेशन क्रैश हो गया है क्योंकि इसने उपयोग विवरण के बिना गोपनीयता-संवेदनशील डेटा तक पहुंचने का प्रयास किया। एप्लिकेशन के Info.plist NSContactsUsageDescriptionमें उपयोगकर्ता को यह बताते हुए एक स्ट्रिंग मान होना चाहिए कि ऐप इस डेटा का उपयोग कैसे करता है।

इससे कैसे निपटें?

अपने नाम की परियोजना में फ़ाइल खोलें info.plist, इसे राइट क्लिक करें, इसे खोलने के रूप में Source Code, नीचे इस कोड को पेस्ट करें। या आप डिफ़ॉल्ट info.plistरूप Property Listसे खोल सकते हैं, ऐड बटन पर क्लिक करें, Xcode आपको Privacy - कीबोर्ड ⬇️ और ⬆️ की मदद से टाइप करते हुए सुझाव पूर्णता देगा।

अपना वर्णन लिखना याद रखें कि आप इस प्राधिकरण के लिए क्यों कहते हैं, बीच में <string>और </string>, या ऐप द्वारा अस्वीकार कर दिया जाएगा:

<!-- 🖼 Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) photo use</string>

<!-- 📷 Camera -->
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>

<!-- 🖼 Write To Image Gallery>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME) save phots in gallry</string>


<!-- 🎤 Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) microphone use</string>

<!-- 📍 Location -->
<key>NSLocationUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>

<!-- 📍 Location When In Use -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>

<!-- 📍 Location Always -->
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) always uses location </string>

<!-- 📆 Calendars -->
<key>NSCalendarsUsageDescription</key>
<string>$(PRODUCT_NAME) calendar events</string>

<!--  Reminders -->
<key>NSRemindersUsageDescription</key>
<string>$(PRODUCT_NAME) reminder use</string>

<!-- 📒 Contacts -->
<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) contact use</string>

<!-- 🏊 Motion -->
<key>NSMotionUsageDescription</key>
<string>$(PRODUCT_NAME) motion use</string>

<!-- 💊 Health Update -->
<key>NSHealthUpdateUsageDescription</key>
<string>$(PRODUCT_NAME) heath update use</string>

<!-- 💊 Health Share -->
<key>NSHealthShareUsageDescription</key>
<string>$(PRODUCT_NAME) heath share use</string>

<!-- ᛒ🔵 Bluetooth Peripheral -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>$(PRODUCT_NAME) Bluetooth Peripheral use</string>

<!-- 🎵 Media Library -->
<key>NSAppleMusicUsageDescription</key>
<string>$(PRODUCT_NAME) media library use</string>

<!-- 📱 Siri -->
<key>NSSiriUsageDescription</key>
<string>$(PRODUCT_NAME) siri use</string>

<!-- 🏡 HomeKit -->
<key>NSHomeKitUsageDescription</key>
<string>$(PRODUCT_NAME) home kit use</string>

<!-- 📻 SpeechRecognition -->
<key>NSSpeechRecognitionUsageDescription</key>
<string>$(PRODUCT_NAME) speech use</string>

<!-- 📺 VideoSubscriber -->
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>$(PRODUCT_NAME) tvProvider use</string>

यदि यह काम नहीं करता है, तो पृष्ठभूमि प्राधिकरण के लिए पूछने का प्रयास करें:

<key>UIBackgroundModes</key>
<array>
    <!-- something you should use in background -->
    <string>location</string>
</array>

या जाने target -> Capabilities -> Background Modes -> open the background Modes:

यहां छवि विवरण दर्ज करें

फिर अपने प्रोजेक्ट को साफ करें, इसे चलाएं।

अधिक जानकारी के लिए पर जाएँ: iOS10AdaptationTips


2
मैंने कहीं भी फ़ोटो का उपयोग नहीं किया, और ऐप्पल मेरे ऐप को अस्वीकार कर रहा है, किसी भी विचार। मैं सभी पॉड्स प्रोजेक्ट की जाँच करता हूँ
राहील सादिक

@RaheelSadiq अपना विवरण लिखना याद रखें कि आप इस प्राधिकरण के लिए क्यों पूछते हैं, बीच में <string> और </string>, या ऐप द्वारा अस्वीकार कर दिया जाएगा।
एलोनचैन

23

अगर आप अपने ऐप में कैमरा या फोटो गैलरी का उपयोग कर रहे हैं तो iOS 10 में आपको नीचे दी गई इमेज में दी गई कुंजी को जोड़ना होगा

.plist छवि


14

आपको जानकारी में नई गोपनीयता सेटिंग्स जोड़ने की जरूरत है।

एप्लिकेशन को सेवा तक पहुंचने की आवश्यकता क्यों है, इसका वर्णन करना न भूलें।

यहां छवि विवरण दर्ज करें


9

IOS 10 में, Apple ने बदल दिया है कि आप किसी भी उपयोगकर्ता के निजी डेटा प्रकारों तक कैसे पहुंच सकते हैं।

आपको अपने ऐप और उनके उपयोग की जानकारी के लिए गोपनीयता - फोटो लाइब्रेरी उपयोग विवरण को जोड़ना होगा Info.plist

अधिक जानकारी के लिए कृपया नीचे दिया गया GIF देखें।

GIF

या यदि आप जोड़ना चाहते हैं info.plistतो आपको NSPhotoLibraryUsageDescription को जोड़ना होगा कुंजी ।

बस स्ट्रिंग में नीचे कॉपी और पेस्ट करें info.plist

<key>NSPhotoLibraryUsageDescription</key>
<string>Take the photo</string>

अधिक जानकारी के लिए कृपया नीचे दिया गया GIF खोजें।

GIF


1
और भी <key> NSCameraUsageDescription </ key> <string> फोटो लें </ string>
Nasir Khan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.