簡體   English   中英

Appstore 連接錯誤:Info.plist 文件中缺少目的字符串

[英]Error Appstore connect : Missing Purpose String in Info.plist File

我已將我的應用程序提交到 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。

任何的想法?

2019 年 4 月編輯:您現在必須添加這兩個鍵,因為 2019 年春季已經開始。 請注意NSLocationAlwaysUsageDescription現已棄用(自 iOS 11 起)並已替換為NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription 如果要支持低於 iOS 11 的版本,則必須使用這三個值。

總而言之,您必須:

  • 為 iOS 11 及更多版本添加NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription
  • 如果你想支持 iOS 10 及更低版本,請添加NSLocationAlwaysUsageDescription
  • 最后,如果你想支持 iOS 8 及更低版本,你可以添加NSLocationUsageDescription


即使收到此消息,您也可以提交您的應用程序!

我昨天剛遇到同樣的問題,即使應用程序沒有使用定位功能。 它可能與項目中包含的具有此可選功能的某些框架有關。

即使info.plist中沒有NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription鍵,我也可以確認我的應用程序已獲得批准

事實上,正如 Apple 在郵件中所說:

從 2019 年春季開始,所有提交到 App Store 的訪問用戶數據的應用程序都需要包含一個目的字符串。

所以唯一要做的就是在你的項目中添加這個密鑰(現在更好,這樣你就不會忘記),這樣它就會包含在你的下一次更新中。

只需在您的info.plist中添加兩個新條目,將NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription作為鍵,並簡要說明為什么將它們用作值(即使您沒有真正使用它們......)。

如果您使用的是 Expo,則可以通過將 infoPlist 添加到 app.json 來添加解決方案,如下所示:

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

世博會文件

我在商店里有一些應用程序,我試圖分發一個用於 QA 的版本,但同樣的事情發生在兩個不同的應用程序中。 我認為這是接受構建上傳到 Appstore connect 的新標准。

解決方法很簡單,在.plist文件中添加如下幾行。

<key>NSLocationAlwaysUsageDescription</key>
<string>custom message</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>custom message</string>

PS:在我的例子中沒有使用任何位置功能,但我添加了這些行以符合 Appstore 連接指南。 順便說一句,在收到那封電子郵件后,即使他們說構建它有一些問題,我也可以測試該應用程序。

我希望這對你們有用。

這是蘋果的新要求,即使您不使用位置也是如此。 如果要在 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 福利需要您的位置

“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>

我們確實收到了相同的電子郵件,但我們根本沒有使用 CoreLocation。 經過快速搜索,我們發現 Parse SDK 可以使用 CoreLocation。 在 Apple 的電子郵件中,他們明確表示:

如果您使用外部庫或 SDK,它們可能會引用需要目的字符串的 API。

這意味着您的代碼或任何其他庫或 SDK 可以使用 CoreLocation 的那一刻,即使您不使用它,您也需要提供“使用時”和“始終使用”的隱私說明。

這也是 Apple 的新功能,目前它只是一個警告,但從 2019 年春季開始,新提交將需要它。

有以下幾種情況:

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

Apple 聲明:

NSLocationWhenInUseUsageDescription鍵和NSLocationAlwaysAndWhenInUseUsageDescription鍵添加到您的Info.plist文件中。

和:

如果您的應用支持 iOS 10 及更早版本,請添加NSLocationAlwaysUsage

NSLocationUsageDescription似乎已死,ADC 站點中唯一的引用是: https ://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

所以可以肯定的是,使用第一個 3。

出現此問題是因為您沒有包括

 <NSLocationAlwaysUsageDescription>

為您的應用程序。 當我嘗試在 AppStore 上提交我的應用程序時,我遇到了同樣的問題。 應用程序處理后,我收到了相同的郵件。 我剛剛添加了說明,現在已解決。

希望這可以幫助。

這些答案都告訴你如何遵守 App Store 規則以避免警告,但真正的解決方法是 Expo 允許你禁用他們對定位服務的 SDK 要求,除非你實際使用它們 - 我不確定這是否是可能的。

請查看您從 **App Store Connect ** 收到的電子郵件

識別丟失的鑰匙在此處輸入圖像描述

指示

  1. 打開 info.plist 文件。

  2. 從提供的選項中添加並搜索缺少的密鑰(例如聯系人= 隱私 - 聯系人使用說明)

  3. 添加使用說明:

$(PRODUCT_NAME) 需要聯系人訪問權限才能“在此處提供原因”。

例子:

2 月 19 日出現同樣的問題,收到一封電子郵件,其中包含我未使用的一系列權限,我認為它們來自插件。 Apple 在 3 月 19 日表示這是一項要求,因此我將這些添加到 info.plst 中並再次上傳。

這確實很愚蠢。

我有<key>NSLocationWhenInUseUsageDescription </key>而不是<key>NSLocationWhenInUseUsageDescription</key>

一定要刪除尾隨空格

我也面臨同樣的問題,但 27 小時后,我收到了關於批准的電子郵件,即使我什么也沒做。 因此,等待大約 24 小時,而不是再次執行所有這些過程。

使用 Xcode 11 復制密鑰NSLocationAlwaysUsageDescription並將其添加到Info -> Custom iOS Target Properties -> 單擊此選項卡左下角的+並作為值插入某種描述,例如This app requires location access to function properly. .

我的應用程序也得到了,我什么也沒做,但它可以運行良好,下次我認為應該在 plist 中添加這樣的密鑰,只是做一些描述

對上述問題的簡短回答 -

NSLocationAlwaysUsageDescription必須使用 Info.plist 文件中的以下描述進行更新

{Your App Name} 需要訪問該位置以建議登革熱爆發區。

在我們的例子中,我們在我們的應用程序中使用了NSLocationWhenInUseUsageDescription ,但沒有使用NSLocationAlwaysUsageDescription

此處的評論(感謝 matt-oakes)閱讀,我們使用的依賴框架之一似乎正在使用NSLocationAlwaysUsageDescription

運行我們的應用程序,它不會顯示實際的 NSLocationAlwaysUsageDescription 權限模式,因此它看起來只是在后台處理它。

所以總而言之,將NSLocationAlwaysUsageDescription添加到 Info.plist 修復了警告電子郵件,並且沒有更改應用程序中的任何行為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM