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

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

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

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

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

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

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

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

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

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

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



답변

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

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


답변

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>

여기에 이미지 설명 입력


답변

다음과 같이 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>

기타

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


답변

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


답변

캘린더 :
키 : 개인 정보 보호-캘린더 사용법 설명
값 : $ (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 사용


답변

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

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

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


답변