[ios] Appstore connect 오류 : Info.plist 파일에 목적 문자열이 없습니다.

검토를 위해 App Store Connect에 앱을 제출했습니다. 앱을 아직 검토 중이지만 오류를 수정해야한다는 내용의 이메일을 받았습니다. 메시지 내용은 다음과 같습니다.

친애하는 개발자,

최근 앱 XXXXX의 게재와 관련하여 하나 이상의 문제가 확인되었습니다. 배송이 완료되었지만 다음 배송시 다음 문제를 해결하고자 할 수 있습니다.

“Info.plist 파일에 누락 된 목적 문자열. 앱의 코드는 민감한 사용자 데이터에 액세스하는 하나 이상의 API를 참조합니다. 앱의 Info.plist 파일에는 앱이 필요한 이유를 명확하고 완전하게 설명하는 사용자 지향 목적 문자열이있는 NSLocationAlwaysUsageDescription 키가 포함되어야합니다. 2019 년 봄부터 사용자 데이터에 액세스하는 App Store에 제출 된 모든 앱에는 목적 문자열이 포함되어야합니다. 외부 라이브러리 또는 SDK를 사용하는 경우 목적 문자열이 필요한 API를 참조 할 수 있습니다. API를 사용하지 않을 경우 목적 문자열이 여전히 필요합니다 라이브러리 또는 SDK 개발자에게 문의하여 API가 포함되지 않은 코드 버전을 릴리스하도록 요청할 수 있습니다.

문제를 해결 한 후 Xcode 또는 Application Loader를 사용하여 새 바이너리를 iTunes Connect에 업로드 할 수 있습니다.

친애하는,

App Store 팀

내 응용 프로그램은 Expo로 완벽하게 구축되었으며 Info.plist에 액세스하고 수정하는 방법을 모르겠습니다.

어떤 생각?



답변

Expo를 사용하는 경우 infoPlist를 app.json에 다음과 같이 추가하여 solve를 추가 할 수 있습니다.

  "expo": {
     "ios": {
       "bundleIdentifier": "com.app.myapp",
       "infoPlist": {
         "NSLocationAlwaysUsageDescription": "Some message to appease Apple.",
       },
     },
   }

엑스포 문서


답변

2019 년 4 월 수정 : 2019 년 봄이 시작될 때이 두 키를 추가해야합니다. 참고 NSLocationAlwaysUsageDescription현재 (아이폰 OS 11 이후) 사용되지 않으며 대체되었습니다 NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription. iOS 11보다 낮은 버전을 지원하려면 세 가지 값을 사용해야합니다.

요약하면 다음을 수행해야합니다.

  • iOS 11 이상에 NSLocationAlwaysAndWhenInUseUsageDescriptionAND 추가NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescriptioniOS 10 이하를 지원하려면 추가 하십시오.
  • 마지막으로 NSLocationUsageDescriptioniOS 8 이하를 지원 하려는 경우 추가 할 수 있습니다 .

이 메시지가 표시 되더라도 앱을 제출할 수 있습니다!

앱이 위치 기능을 사용하지 않더라도 어제 같은 문제에 직면했습니다. 이 선택적 기능이있는 프로젝트에 포함 된 일부 프레임 워크와 관련이있을 수 있습니다.

NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription키를 입력 하지 않아도 내 앱이 승인되었음을 확인할 수 있습니다 .info.plist

실제로 애플이 메일에서 언급 한 바와 같이 :

2019 년 봄부터 사용자 데이터에 액세스하는 App Store에 제출 된 모든 앱에는 목적 문자열이 포함되어야합니다.

따라서 할 일은 프로젝트 에이 키를 추가하여 (지금 당장 나아질 것이므로) 다음 업데이트에 포함될 것 입니다.

그냥 두 개의 새로운 항목을 추가 info.plist하여, NSLocationAlwaysUsageDescription그리고 NSLocationWhenInUseUsageDescription키와 당신이 (당신이 정말로 … 사용하지 않는 경우에도) 값으로 그것들을 사용하는 이유에 대한 간단한 설명한다.


답변

스토어에 일부 앱이 있는데 품질 보증 버전을 배포하려고했는데 동일한 두 가지 앱에서 발생했습니다. 이것이 Appstore connect에 빌드 업로드를 허용하는 새로운 기준이라고 생각합니다.

해결책은 간단합니다. .plist 파일에 다음 줄을 추가하십시오.

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

추신 : 필자의 경우 위치 기능을 사용하지 않았지만 Appstore 연결 지침을 준수하기 위해이 줄을 추가했습니다. Btw는 해당 이메일을받은 후 빌드에 문제가 있다고 말하더라도 앱을 테스트 할 수있었습니다.

나는 이것이 당신들에게 도움이되기를 바랍니다.


답변

위치를 사용하지 않더라도 애플의 새로운 요구 사항입니다. Xcode에서 권한을 추가하려면 “개인 정보-위치 사용 설명”및 “개인 정보-사용 위치 설명”을 찾아 각각에 대한 사용자 지정 문자열을 입력하십시오.

여기에 이미지 설명을 입력하십시오


답변

더 단순화하기 위해 info.plist에이 줄을 추가 할 수 있습니다. 이러한 오류는 2019 년 봄부터 사용자 데이터에 액세스하는 App Store에 제출 된 모든 앱에 목적 문자열을 포함해야하기 때문에 발생합니다.

  1. info.plist를 소스 코드로여십시오.
  2. plist에 다음 줄을 추가하십시오.

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>

답변

## info.plist 파일에서이 키를 사용하십시오.

NSLocationAlwaysUsageDescription 귀하의 위치는 xyz 혜택에 필요합니다 NSLocationWhenInUseUsageDescription 귀하의 위치는 xyz 혜택에 필요합니다


답변

동일한 이메일을 받았으며 CoreLocation을 전혀 사용하지 않습니다. 빠른 검색 후 Parse SDK가 CoreLocation을 사용할 수 있음을 발견했습니다. 애플의 이메일에서 그들은 분명히 다음과 같이 말합니다.

외부 라이브러리 또는 SDK를 사용하는 경우 목적 문자열이 필요한 API를 참조 할 수 있습니다.

즉, 코드 나 다른 라이브러리 또는 SDK가 CoreLocation을 사용할 수있는 순간을 의미합니다. 사용하지 않더라도 “사용 중”및 “항상 사용”에 대한 개인 정보 보호 설명을 제공해야합니다.

그것은 또한 Apple의 새로운 것이므로 지금은 경고 일뿐이지만 2019 년 봄부터 새로운 제출을 위해 필요합니다.