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


153

검토를 위해 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에 액세스하고 수정하는 방법을 모르겠습니다.

어떤 생각?


3
내 앱에서 위치 서비스를 사용하지 않는다는 점을 감안할 때 최신 빌드와 동일한 문제가 있습니다. 그리고 Apple은이 변경에 대한 공식적인 문서를 가지고 있지 않습니다.
huong

3
+1 2 일 전에 같은 앱을 출시했으며 모든 것이 정상입니다. 이일 후, 단지 (더 포드 또는 그런 일을 추가하지 않은) 새로운 릴리스를 할 몇 줄기의 코드를 변경하고 나는이 메시지가 있어요
티아구 Ornelas의

2
우리는 같은 문제를 경험했습니다. 나는 그것이 승인 과정에서 버그라고 생각한다. 주말 동안 무시하고 월요일에 고정되기를 바랍니다.
AMB

2
우리 앱에는 위치 서비스가 항상 필요하지 않지만 지금은 똑같은 문제에 직면했습니다. 이미 목적 문자열이있는 NSLocationWhenInUseUsageDescription 만 있으면됩니다. 아마도 이것이 애플의 결말 일까?
ilight

3
그리고 애플 패션에서는 이메일을 통해 수정하기 위해 제공하는 링크가 깨졌습니다.
gwalshington

답변:


45

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

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

엑스포 문서


25
실제로는 NOT "일부 유화 애플 메시지"하지만이 경우 사용자의 생성 된 데이터 (위치)와 함께 무엇을하고 있는지 사용자의 노하우를 할 수 있습니다. 그것은 개인 정보 보호 문제의 문제이며 귀하의 앱 사용자에게 공평하다고 생각합니다.
Lookaji

4
잡았다! 나는 그렇게 떠나고 싶은 유혹을받는 초보자들을 생각하고있었습니다! 나는 심술 sound 지 말고 싶지 않았다 :) 건배!
Lookaji

@ gwalshington 나는 app.json에 엑스포 객체가 없습니다
Heemanshu Bhalla

@HeemanshuBhalla 흠, 왜 그런지 모르겠습니다. 내 app.json에서 맨 위에 있고 첫 번째 객체가 선언되었습니다. 버전 번호, 번들 식별자 등을 선언하는 위치입니다. 앱을 추출한 경우 약간 다르게 보일 수 있습니까?
gwalshington

2
데이터를 수집하지 않고 입력 할 경우 어떤 텍스트를 입력해야합니까? 우리는 거짓말을해야한다 : S
Primož Kralj

62

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키와 당신이 (당신이 정말로 ... 사용하지 않는 경우에도) 값으로 그것들을 사용하는 이유에 대한 간단한 설명한다.


2
2019 년 4 월 수정에서 지원 중단이 취소되지 않습니까? 내가 본 것에서 NSLocationUsageDescription은 더 이상 사용되지 않습니다. 여기를 보면 : developer.apple.com/library/archive/documentation/General/…
apricity

Apple에서받은 이메일에는 NSLocationAlwaysUsageDescription이 언급되어 있으므로 리버스가 된 것 같습니다.
Dror Bar

@apricity @DrorBar 죄송합니다. 실수로 실수를 저질렀습니다. 그것은 반대하지만 실수가 아직 거기되지 않은, NSLocationAlwaysUsageDescription교체해야 NSLocationAlwaysAndWhenInUseUsageDescription하고 NSLocationWhenInUseUsageDescription ,하지에 의해 NSLocationUsageDescription(내가 이전에 ... 죄송합니다, 쓴). 프로세스의 요약을 추가하기 위해 답변을 업데이트했습니다.
AnthoPak

48

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

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

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

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

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


5
와우, 나는 방금 이것을 얻었고, 모두가 이것도 얻는다는 것을 깨달았습니다!
Cameron A. Ellis 5

첫 번째 키가 현재로 변경되었습니다<key>NSLocationUsageDescription</key>
Hudi Ilfeld

1
info.plist를 업데이트 한 후 다시 아카이브해야합니까?
Bishoy Hanna

새 바이너리를 업로드하려면 번들 버전 또는 버전 번호를 늘려야합니까?
Dror Bar

20

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

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


1
다른 응용 프로그램 업데이트, 애플도이 권한을 요청 : "개인 정보 보호 - 위치 항상 사용 설명"
후안 호세 라미레즈

2
이 기능을 사용하지 않으면 거기에 무엇을 써야합니까? "나중에 사용하기 위해 수집 위치를 모으는 것"과 같은 거짓말입니까?
Ruslan Shashkov

네, 애플은 궁금한 점이 있으면 연락을 드릴 것입니다
Juan José Ramírez

내 xcode 10.1에서 정보 속성 목록 을 찾을 수 없습니다. 어디에서 찾을 수 있는지 언급해야합니다. 대상과 프로젝트 모두에 대한 빌드 설정을 찾았습니다
Awais Nasir

1
좋아요 그래서 Targets-은> Info-> 사용자 정의 IOS 대상 속성 정확한 위치했다
Awais 나시

15

더 단순화하기 위해 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>

2
<key> 태그에서 여분의 공백을 제거해야했고 효과가있었습니다.
innich

@innich 지적 해 주셔서 감사합니다. 대답을 변경했습니다.
Sachin Nautiyal

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

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


8

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

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

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

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


그것은 단지 바보입니다 .... 그것을 사용하지 않으면 사람들이 그 때문에 내 앱을 다운로드하지 못하게 할 수 있습니다. -_-
Mayoul

3
실제로는 아닙니다. 코드의 어딘가에 CLLocationManager.requestWhenInUseAuthorization()호출 하지 않으면 현지화를 사용하라는 경고가 표시되지 않습니다 . Apple은 각 앱 코드를 분석하여 이러한 함수를 호출 할 수 있는지 확인했습니다. 호출되지 않은 경우 경고가 표시되지 않습니다.
sebleclerc

6

이 문제는 포함되지 않았기 때문에 발생합니다

 <NSLocationAlwaysUsageDescription>

귀하의 앱. AppStore에서 앱을 제출하려고 할 때도 같은 문제가 발생했습니다. 앱이 처리 된 후 같은 메일을 받았습니다. 방금 설명을 추가하고 이제 해결되었습니다.

도움이 되었기를 바랍니다.


이것은 나를 도왔다. 앱에서 위치를 사용하는 경우 (또는 어쩌면 항상)이 줄과 그 아래에 문자열을 추가해야합니다. <key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
MaylorTaylor

6

다음과 같은 경우가 있습니다.

NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription          (iOS>11)
NSLocationAlwaysUsageDescription             (iOS<=10)
NSLocationUsageDescription                   (seems very old, iOS8?)

Apple은 다음과 같이 말합니다.

Info.plist 파일에 NSLocationWhenInUseUsageDescription키와 NSLocationAlwaysAndWhenInUseUsageDescription키를 추가 하십시오.

과:

앱이 iOS 10 및 이전 버전을 지원하는 경우 NSLocationAlwaysUsage

NSLocationUsageDescriptionADC 사이트에서 유일한 참조는 다음과 같습니다 : https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

따라서 처음 3을 사용하십시오.


3

이 답변은 모두 경고를 피하기 위해 App Store 규칙을 준수하는 방법을 알려주지 만 실제로 사용하지 않는 한 Expo가 위치 서비스에 대한 SDK 요구 사항을 비활성화 할 수 있도록하는 것이 진정한 해결책입니다. 가능한.


3

2 월 19 일에 동일한 문제로 사용하지 않는 많은 권한이있는 이메일을 받았으며 플러그인에서 온 것으로 가정합니다. 애플은 3 월 19 일에 이것이 필수 조건이라고 말하면서 info.plst에 추가하고 다시 업로드하고 있습니다.

정말 바보입니다.


2
더 많은 의견이 정말로 ...?
Steve

3

나도 같은 문제에 직면했지만 27 시간이 지난 후에도 아무 조치도 취하지 않았다는 이메일을 받았습니다. 따라서이 모든 과정을 다시 수행하는 대신 약 24 시간 동안 기다리십시오.


1
예, 버그입니다!
Danh Huynh

2

나는 한 <key>NSLocationWhenInUseUsageDescription </key> 대신 <key>NSLocationWhenInUseUsageDescription</key>

후행 공백을 제거하십시오


2

** App Store Connect **에서받은 이메일을 검토하십시오.

누락 된 키 식별 여기에 이미지 설명을 입력하십시오

명령

  1. info.plist 파일을여십시오.

  2. 제공된 옵션에서 누락 된 키 추가 및 검색 (예 : 연락처 = 개인 정보 보호-연락처 사용 설명)

  3. 사용법 설명 추가 :

$ (PRODUCT_NAME)은 "이유 제공"에 연락처 액세스 권한이 필요합니다.

예:


1
선생님 같은 오류가 있지만 왜 info.plist에 추가하면 실제로 내 앱에서 연락처 기능을 사용하지 않아서 추가해야합니까?
Kapil soni

@Kapilsoni 민감한 사용자 데이터에 액세스 할 수있는 하나 이상의 API에 액세스하지 않도록하십시오
Zeus

1
: 내 앱에서 카메라와 위치 만 사용 했습니까?
Kapil soni

2

Xcode 11을 사용하여 키를 복사 하고이 탭 NSLocationAlwaysUsageDescription을 추가하십시오 Info-> Custom iOS Target Properties-> +이 탭의 왼쪽 하단을 클릭 하고 값으로 다음과 같은 설명을 삽입하십시오 This app requires location access to function properly..


2

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

info.plist를 소스 코드로여십시오.
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>

1

내 응용 프로그램도 그것을 얻었고 그것에 대해 아무것도하지 않지만 잘 실행할 수 있습니다. 다음에는 plist에 이러한 키를 추가해야한다고 생각합니다.


1

위의 문제에 대한 짧은 답변-

NSLocationAlwaysUsageDescription Info.plist 파일에서 다음 설명으로 업데이트해야합니다.

{Your App Name}에서 뎅기열 발생 지역을 제안하는 위치에 액세스해야합니다.


0

우리의 경우 NSLocationWhenInUseUsageDescription앱에서 사용 하고 있었지만 사용하지 않았습니다 NSLocationAlwaysUsageDescription.

여기 주석 에서 읽은 내용 (매트-오크 덕분)NSLocationAlwaysUsageDescription 우리가 사용하는 종속성 프레임 워크 중 하나에서 사용되는 .

우리의 응용 프로그램을 실행하면 실제 NSLocationAlwaysUsageDescription 권한 모달이 표시되지 않으므로 백그라운드에서이를 처리하는 것으로 보입니다.

요약 NSLocationAlwaysUsageDescription하면 Info.plist에 추가 하면 경고 이메일이 수정되고 앱의 동작이 변경되지 않았습니다.

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