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 이후) 사용되지 않으며 대체되었습니다 NSLocationAlwaysAndWhenInUseUsageDescription
및 NSLocationWhenInUseUsageDescription
. iOS 11보다 낮은 버전을 지원하려면 세 가지 값을 사용해야합니다.
요약하면 다음을 수행해야합니다.
- iOS 11 이상에
NSLocationAlwaysAndWhenInUseUsageDescription
AND 추가NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
iOS 10 이하를 지원하려면 추가 하십시오.- 마지막으로
NSLocationUsageDescription
iOS 8 이하를 지원 하려는 경우 추가 할 수 있습니다 .
이 메시지가 표시 되더라도 앱을 제출할 수 있습니다!
앱이 위치 기능을 사용하지 않더라도 어제 같은 문제에 직면했습니다. 이 선택적 기능이있는 프로젝트에 포함 된 일부 프레임 워크와 관련이있을 수 있습니다.
NSLocationAlwaysUsageDescription
및 NSLocationWhenInUseUsageDescription
키를 입력 하지 않아도 내 앱이 승인되었음을 확인할 수 있습니다 .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 파일에서이 키를 사용하십시오.
NSLocationAlwaysUsageDescription 귀하의 위치는 xyz 혜택에 필요합니다 NSLocationWhenInUseUsageDescription 귀하의 위치는 xyz 혜택에 필요합니다
더 단순화하기 위해 info.plist에이 줄을 추가 할 수 있습니다. 이러한 오류는 2019 년 봄부터 사용자 데이터에 액세스하는 App Store에 제출 된 모든 앱에 목적 문자열을 포함해야하기 때문에 발생합니다.
- 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>
We did receive the same email and we aren't using the CoreLocation at all. After a quick search, we found that Parse SDK could use CoreLocation. In Apple's email, they clearly say:
If you're using external libraries or SDKs, they may reference APIs that require a purpose string.
That mean the minute your code or any other Library or SDKs can use CoreLocation, even if you don't use it, you need to provide privacy description for "When In Use" and "Always Use".
It is also something new from Apple and for now it's only a warning but it will be required starting in Spring 2019 for new submissions.
There are the following cases:
NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription (iOS>11)
NSLocationAlwaysUsageDescription (iOS<=10)
NSLocationUsageDescription (seems very old, iOS8?)
Apple states at:
Add the
NSLocationWhenInUseUsageDescription
key and theNSLocationAlwaysAndWhenInUseUsageDescription
key to your Info.plist file.
and:
If your app supports iOS 10 and earlier, add the
NSLocationAlwaysUsage
NSLocationUsageDescription
seems dead, the only ref in ADC site is: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf
So to be sure, use first 3.
This issue is occurring because you haven't included
<NSLocationAlwaysUsageDescription>
for your app. I faced the same issue when I tried to submit my app on the AppStore. After the app was processed, I got the same mail. I just added the description and now its resolved.
Hope this helps.
These answers all tell you how to comply with the App Store rules to avoid the warning but the true fix would be for Expo to allow you to disable their SDKs requirement for Location Services unless you actually use them - I'm not sure if this is possible.
same issue in Feb 19, got an email with a bunch of permissions I am not using, I assume they are from plugins. Apple says in March 19 it is a requirement so I am adding these in info.plst and uploading again.
It is very silly indeed.
I also face the same issue but after 27 hours, I received the email about approved even I did nothing. So wait for approximately 24 hours instead of doing all this process again.
Please review the email you received from **App Store Connect **
Instructions
Open info.plist file.
Add and search for the missing key from the options provided (e.g. Contacts = Privacy - Contacts Usage Description)
Add Usage Description:
$(PRODUCT_NAME) needs Contacts access to "Provide The Reason Here".
My app also got that, and I do nothing about it but it can run well ,next time I think should add such key in plist,just do some description
I had <key>NSLocationWhenInUseUsageDescription </key>
instead of <key>NSLocationWhenInUseUsageDescription</key>
be sure to remove trailing whitespace
'IT' 카테고리의 다른 글
모범 사례 : HTML id 또는 이름 속성으로 양식 요소에 액세스 하시겠습니까? (0) | 2020.07.04 |
---|---|
LINQ 쿼리 결과 집합에서 DataSet 또는 DataTable 채우기 (0) | 2020.07.04 |
HMVC 패턴은 무엇입니까? (0) | 2020.07.04 |
요소가 페이지에 추가 될 때 알림을 받으려면 어떻게해야합니까? (0) | 2020.07.04 |
신호와 신호의 차이점은 무엇입니까? (0) | 2020.07.04 |