사용 설명 누락으로 인해 앱이 거부 됨 (Xcode8)


91

그래서 오늘이 메일을 받았는데, 사용 설명이 누락되어 내 앱의 최신 빌드가 iTunes Connect에서 거부되었다는 내용입니다. 정확히는:

이 앱은 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고합니다. 앱의 Info.plist에는 앱이이 데이터를 사용하는 방법을 사용자에게 설명하는 문자열 값과 함께 NSContactsUsageDescription 키가 포함되어야합니다.

이 앱은 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고합니다. 앱의 Info.plist에는 앱이이 데이터를 사용하는 방법을 사용자에게 설명하는 문자열 값과 함께 NSCalendarsUsageDescription 키가 포함되어야합니다.

이 앱은 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고합니다. 앱의 Info.plist에는 앱이이 데이터를 사용하는 방법을 사용자에게 설명하는 문자열 값과 함께 NSPhotoLibraryUsageDescription 키가 포함되어야합니다.

이 앱은 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고합니다. 앱의 Info.plist에는 앱이이 데이터를 사용하는 방법을 사용자에게 설명하는 문자열 값과 함께 NSBluetoothPeripheralUsageDescription 키가 포함되어야합니다.

이 앱은 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고합니다. 앱의 Info.plist에는 앱이이 데이터를 사용하는 방법을 사용자에게 설명하는 문자열 값이있는 NSMicrophoneUsageDescription 키가 포함되어야합니다.

이 앱은 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고합니다. 앱의 Info.plist에는 앱이이 데이터를 사용하는 방법을 사용자에게 설명하는 문자열 값과 함께 NSMotionUsageDescription 키가 포함되어야합니다.

이러한 문제가 수정되면 수정 된 바이너리를 다시 제공 할 수 있습니다.

나는 이것들이 iOS 10에서 필수가되었다는 것을 알았지 만, 유일한 문제는 내 앱이 이들 중 하나에 액세스 할 수있는 권한을 요청하지 않는다는 것입니다. 실제로 권한을 요청한 경우에만 설명이 필수라고 생각 했습니까?

내 종속성 중 하나 (Cocoapods)에 이러한 권한을 요청하는 코드가 포함될 수 있기 때문입니까? 또는 사용자 캘린더, 연락처 등을 보도록 요청하지 않더라도 이러한 설명은 필수입니까?


3
내 경험에 따르면 권한을 요청하는 경우에만 필요합니다. 그래서 아마도 어떤 의존성은 당신을 위해 이것을하고 있습니다. 또한 이러한 모든 권한은 특히 앱이 간단한 할 일 목록 인 경우 수상한 냄새가납니다. 일부 의존성이 피싱이 될 수 있습니까?
Eimantas 16.09.09

PodFile사용하는 라이브러리 목록 을 게시 할 수 있습니까 (외부 코코아 포드를 사용하는 경우)?
Julien Quere 16.09.09

그것은이었다 github.com/nickoneill/PermissionScope .. 당신의 도움을 주셔서 감사합니다!
KimHafr

ُ his 설명 및 사용법 표시 : iosdevcenters.blogspot.com/2016/09/…
Saeid dec.

나는 정확히 같은 문제가 그리고 난 그것이 의해 발생 같아요 포드 'ReactNativePermissions': 경로 => '../node_modules/react-native-permissions'
luky

답변:


33

설명은 귀하 또는 귀하가 액세스 시도에 대해 링크하는 모든 프레임 워크에 대해 필수입니다. 사용 설명이 제공되지 않은 경우 콘텐츠에 액세스하려고하면 오류가 생성되므로 이러한 오류가 발생하면 앱에서 요청해야합니다. 앱 또는 프레임 워크에 이러한 항목이 필요한 이유를 파악하고 앱의 info.plist에 적절한 사용 설명을 추가해야합니다.

이상적으로는 액세스가 필요하지 않은 경우 요청하지 않는 방법이 있는지 확인하십시오 (또는 불필요하게 수행하는 프레임 워크 사용).


11
이 모든 권한을 요청하는 라이브러리를 추가 할 것이라고 상상할 수 없었습니다. : 나는 그것을 발견했을 때 그러나 그것은 매우 분명했다 github.com/nickoneill/PermissionScope
KimHafr

1
네, 그런 프레임 워크는 앱이 필요한 것보다 더 많은 권한을 선언하게하므로 좋은 생각이 아닐 수 있습니다.
Matthew Seaman

3
나는 이것이 버그가 아닌 기능에 가깝다고 생각한다. iTunes Connect는 앱의 어딘가에서 누군가 권한을 요청할 수 있음을 감지합니다. 이 경우 실제로 퍼미션 범위에서 일부 코드를 호출 할 수있는 경우에 대비하여 이들 모두에 대한 사용법 설명을 입력해야합니다. 프레임 워크도 마음에 들고 교체 할 준비가되지 않았습니다. 그래서 가짜 텍스트를 입력했고 앱이 승인되었습니다. 나는 :-) 그래서 희망이 확인 될 것입니다, 앱 스토어에 그것을 제출 한
KimHafr

15
이러한 권한을 요청하는 프레임 워크를 감지하는 방법이 필요하십니까?
neobie

5
Neobie-권한을 요청하는 프레임 워크를 감지하는 방법을 찾았습니까?
Nitesh

140

iOS 10info.plist 에 권한을 추가해야합니다. 이 블로그를 검토하면됩니다 .-settings-in-ios-10 모든 아이디어를 얻을 수 있습니다.

오류 로그의 info.plist 파일 기반에 권한추가하십시오 .

참고 : 권한에 대한 적절한 이유를 문자열 값에 쓰지 않으면 애플이 앱을 다시 거부합니다.

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMotionUsageDescription

<key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use.</string>

NSLocationAlwaysUsageDescription

<key>NSLocationAlwaysUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

여기에 이미지 설명 입력


"$ (PRODUCT_NAME)"대신 "$ {PRODUCT_NAME}"이 아니어야합니까? "{}" 대신에 "()".
backslash-f

@ backslash-f, 새 프로젝트에서 기존 plist 파일을 확인하십시오 $(PRODUCT_NAME). Bundle nameplist 파일 과 같은 기본 속성을 볼 수 있습니다 .
Jayesh Thanki

1
이와 같은 일반적인 설명은 더 이상 앱 스토어 승인을 거치지 않습니다. 비슷한 설명을 위해 두 번 땡땡이 쳤습니다. 인간의 실제 사용법을 설명해야합니다
O'Rooney

9

다음과 같이 info.plist에 추가 할 수 있습니다.

<key>NSCalendarsUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Explain the reasons for accessing...</string>

기타

희망은 누군가를 도울 것입니다 ...


6

나는 같은 문제가 있었고 링크하는 프레임 워크 에이 권한을 요청하는 코드가있는 경우 (앱에서 요청하지 않더라도) 사용 설명이 필요합니다. 하지만 내 테스트에 따르면 요청하지 않으면 앱의 권한 목록에 표시되지 않습니다.


3

캘린더 : 키 : 개인 정보 보호-캘린더 사용법 설명
값 : $ (PRODUCT_NAME) 캘린더 이벤트

알림 : 키 : 개인 정보-알림 사용법 설명
값 : $ (PRODUCT_NAME) 알림 사용

연락처 : 키 : 개인 정보-연락처 사용 설명
값 : $ (PRODUCT_NAME) 연락처 사용

사진 : 키 : 개인 정보-사진 라이브러리 사용 설명
값 : $ (PRODUCT_NAME) 사진 사용

블루투스 공유 : 키 : 개인 정보-블루투스 주변기기 사용 설명
값 : $ (PRODUCT_NAME) 블루투스 주변기기 사용

마이크 : 키 : 개인 정보 보호-마이크 사용 설명
값 : $ (PRODUCT_NAME) 마이크 사용

카메라 : 키 : 프라이버시-카메라 사용량 설명
값 : $ (PRODUCT_NAME) 카메라 사용량

위치 : 키 : 프라이버시-위치 항상 사용 설명
값 : $ (PRODUCT_NAME) 위치 사용

키 : 개인 정보-사용시 위치 사용 설명
값 : $ (PRODUCT_NAME) 위치 사용

히스 : 키 : 개인 정보 보호 - 건강 공유 사용법 설명
값 : $ (PRODUCT_NAME) 히스 주 사용

키 : 개인 정보 보호-건강 업데이트 사용 설명
값 : $ (PRODUCT_NAME) 건강 업데이트 사용

HomeKit : 키 : 개인 정보 보호 - HomeKit 사용 설명
값 : $ (PRODUCT_NAME) 홈 키트 사용

미디어 라이브러리 : 키 : 개인 정보-미디어 라이브러리 사용 설명
값 : $ (PRODUCT_NAME) 미디어 라이브러리 사용

모션 : 키 : 프라이버시-모션 사용 설명
값 : $ (PRODUCT_NAME) 모션 사용

음성 인식 : 키 : 개인 정보 보호-음성 인식 사용 설명
값 : $ (PRODUCT_NAME) 음성 사용

SiriKit : 키 : 프라이버시 -Siri 사용 설명
값 : $ (PRODUCT_NAME) siri 사용

TV 제공 업체 : 키 : 개인 정보 보호-TV 제공 업체 사용 설명
값 : $ (PRODUCT_NAME) tvProvider 사용


0

왜 갑자기 앱이 이러한 모든 권한 설정을 가지고 있는지 궁금해하는 사람은 CocoaPods 또는 Carthage 때문일 수 있습니다. 방금 광범위한 Cocoapods (및 종속성) 설치가있는 cordova-plugin-firebasex를 사용하도록 앱을 업그레이드했습니다. 프로젝트의 루트에 PermissionsConfiguration.xcconfig를 넣어 프로젝트에 cocoapods를 설치하기 전에 이러한 권한을 끌 수 있습니다. 여기에서 자세한 내용을 읽을 수 있습니다. https://cocoapods.org/pods/Permission#installation

Info.plist 파일에서 누락 된 7 개의 권한 키 / 문자열로 내 앱의 새 버전이 거부되었을 때이 모든 것이 저를 놀라게했습니다. 그런 다음 내 앱이 이러한 권한을 필요로하지 않거나 사용하지 않기 때문에이 문제를 일으키는 원인을 찾기 위해 내 프로젝트를 조사해야했습니다.

존재할 수 있지만 현재는 포드 통합 후 권한을 제거하는 방법을 찾을 수 없습니다 ... 프로젝트를 다시 시작하지 않고이 작업을 수행하는 방법을 찾아야합니다.

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