iOS 10-카메라, 마이크 및 사진 라이브러리 권한 요청 변경으로 인해 응용 프로그램이 중단됨


103

iOS 10, 이제 미디어 라이브러리, 사진, 카메라 및 이와 같은 기타 하드웨어에 액세스하려면 사용자 권한이 필요합니다. 이에 대한 해결책은 info.plist사용자가 데이터를 사용하는 방법에 대한 설명과 함께 키를 추가 하는 것입니다.

몇 개의 열쇠 만 찾을 수있었습니다

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

적절한 키 설명을 iOS 10 제공하지 않은 경우 info.plist 같이 다른 하드웨어에도 더 많은 키가 있는지 알고 싶습니다 . XCode-8 베타를 사용하여 빌드하면 애플리케이션이 충돌 합니다.


iOS 10은 NDA에 포함되지 않습니까?
sage444

이것에 대해 잘 모르겠습니다.
에드 알리 살만

답변:


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
예, 그러나 변경 사항은 권한을 요청하는 이유에 대한 설명을 제공하지 않으면 응용 프로그램이 이제 중단된다는 것입니다. 내가 틀렸다면 나를 바로 잡으십시오.
Syed Ali Salman

1
@Syed Ali Salman 당신이 맞아요-iOS10 이후로 충돌이 일어날 것입니다. 답변을 업데이트합니다. :)
KlimczakM

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 2016

13
권한 설명 이 없을 때 앱이 충돌하도록하는 것은 Apple의 말도 안되는 일인 것 같습니다. 사용자 경험이 좋지 않습니다! (Anonymous) AppStore 리뷰에서 흐름이 빠르다고 불평합니다 ... 물론 Simultor는 다르게 작동합니다 ...
Gabriel

65

.NET 용 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이 "앱 이름을 포함 할 필요가 없습니다. 시스템은 이미 귀하의 앱을 요청한 앱으로 식별합니다."라고 말합니다.
Yucel Bayram

2
그게 내가 찾던 대답
네쉬 Phalwadiya

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.