2016-07-21 12 views
76

iOS 10 Teraz wymaga się pozwolenia użytkownika na dostęp do biblioteki multimediów, zdjęć, aparatu fotograficznego i innego sprzętu takiego jak ten. Rozwiązaniem dla tego celu jest dodanie ich klucze do info.plist z opisem dla użytkownika, jak używamy ich danych,iOS 10 - Zmiany w pytaniach o uprawnienia kamery, mikrofonu i biblioteki zdjęć powodujące awarię aplikacji

udało mi się znaleźć tylko kilka klawiszy

NSPhotoLibraryUsageDescription 
NSMicrophoneUsageDescription 
NSCameraUsageDescription 

Chcę wiedzieć, czy jest więcej kluczy również w przypadku innego sprzętu, jak w przypadku iOS 10, jeśli nie podałeś info.plist z prawidłowym opisem klawiszy, aplikacja ulegnie awarii, jeśli kompilacja zostanie wykonana przy użyciu XCode - 8 beta.

+0

nie jest systemem iOS 10 w ramach umowy NDA? – sage444

+0

Nie jestem tego pewien. –

+0

Pozwolenie w Info.plist: https://iosdevcenters.blogspot.com/2016/09/infoplist-privacy-settings-in-ios-10.html –

Odpowiedz

98

Jest to lista wszystkich Cocoa Keys które można określić w pliku Info.plist:

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

(docelowej Xcode -> Informacje -> Niestandardowe iOS Właściwości docelowy)

iOS już wymaganych uprawnień dostęp do mikrofonu, kamery i biblioteki multimediów wcześniej (iOS6, iOS7), ale od iOS10 aplikacji będzie crash, jeśli nie dostarczysz opisu ription, dlaczego pytasz o pozwolenie (nie może być puste).

klucze prywatność przykład opis: cheatsheet

Source

Można również otwarty Info.plist jako kod źródłowy: source code

Source

i dodać je tak:

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

Lista wszystkich kluczy prywatności:

NSCameraUsageDescription 
NSBluetoothPeripheralUsageDescription 
NSCalendarsUsageDescription 
NSContactsUsageDescription 
NSHealthShareUsageDescription 
NSHealthUpdateUsageDescription 
NSHomeKitUsageDescription 
NSLocationAlwaysUsageDescription 
NSLocationUsageDescription 
NSLocationWhenInUseUsageDescription 
NSAppleMusicUsageDescription 
NSMicrophoneUsageDescription 
NSMotionUsageDescription 
kTCCServiceMediaLibrary 
NSPhotoLibraryUsageDescription 
NSRemindersUsageDescription 
NSSiriUsageDescription 
NSSpeechRecognitionUsageDescription 
NSVideoSubscriberAccountUsageDescription 
+2

tak, ale jednak zmiana jest taka, że ​​teraz aplikacja się zawiesza Podał opis, dlaczego pytamy o pozwolenie. Proszę, popraw mnie jeśli się mylę. –

+1

@Syed Ali Salman Masz rację - to się zawiesi od iOS10, teraz naprawdę masz pytanie. Zaktualizuje odpowiedź. :) – KlimczakM

+1

Mam nadzieję, że jabłko zdecyduje, czy jest obowiązkowe czy nie. Według dokumentacji Apple nie jest to: "Wyjaśnij, dlaczego Twoja aplikacja potrzebuje informacji, jeśli nie jest to oczywiste. Możesz dodać własny tekst do alertu żądania uprawnień, który jest podany przez system. Spraw, aby tekst był konkretny i uprzejmy, aby ludzie nie czuli presji. Zachowaj krótki tekst i używaj zdania w zdaniu. Nie musisz podawać nazwy swojej aplikacji. System już identyfikuje twoją aplikację jako tę, która zgłasza żądanie. " – sumofighter666

18

Trzeba dodać to uprawnienie w Info.plist dla iOS 10. więcej odniesienia All Permission.

Zdjęcie:

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

Mikrofon:

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

Aparat:

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

Tutaj znajdziesz kody ios 10 prosi o pozwolenie na próbę dla info.plist.
Możesz modyfikować niestandardową wiadomość.

<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> 
+0

Dzięki, to jest prawdziwa odpowiedź, tylko Apple mówi: "Nie musisz podawać nazwy aplikacji. System już identyfikuje twoją aplikację jako taką prośba." –

Powiązane problemy