Xamarin - ITMS-90683:Info.plist 中缺少目的字符串

Xamarin - ITMS-90683: Missing Purpose String in Info.plist

我正在使用 Xamarin Forms(Android 和 iOS)开发应用程序。我已经准备好第一个应用程序版本,我正在尝试将其上传到 TestFlight,以便与不同的用户一起测试该应用程序。为了减小 ipa 的大小,我将链接器行为设置为 "Link framework SDKs only".

减小ipa大小后,我尝试上传应用程序进行试飞,但出现下一条错误消息:

问题是我没有使用列表中提到的 none 项。我没有在我的应用程序中使用 WebView,也没有请求位置或日历的权限。我知道一旦我将权限添加到 inflo.plist,这些错误就会消失,但我没有使用位置或日历。

如何修改我的应用程序以从 TestFlight 平台中删除这些错误?

我如何才能注意到我正在使用的库(或 NuGet)正在请求这些项目中的任何一项?

摆脱这个

ITMS-90809:已弃用 API 用法 - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性。

灵魂 - https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/webview#uiwebview-deprecation

其他问题

灵魂 - https://docs.microsoft.com/en-us/xamarin/ios/app-fundamentals/security-privacy

您需要为您将在应用中使用的设备功能手动设置消息。

例如相机、位置、日历等

  • ITMS-90683:您需要在 Info.plist
  • 中添加此行

<key>NSLocationAlwaysUsageDescription</key> 
<string>We would like to know your location to find places near you</string>

<key>NSCalendarsUsageDescription</key>
<string>This app needs access to calendar when open</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>We would like to know your location to find places near you</string>
  • ITMS-90809:

    1. 更新 Xamarin.Forms 版本
    2. 您可以转到您的 iOS 项目,打开项目属性并在附加的 mtouch 参数字段中添加此标志:--optimize=experimental-xforms-product-type 此标志与链接器一起使用行为设置为仅 SDK 或全部。

https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/

我的 Xamarin 项目在第一次上传到 AppStore 时遇到了同样的问题:TMS-90809 虽然只使用 WKWebView 和几乎所有可能的 ITMS-90683 版本(联系人、日历、音乐、Siri、麦克风、位置) , 蓝牙),而我的应用程序使用了 none。

因此,将 UsageDescriptions 添加到 plist 将是一个非常糟糕的做法,我不知道是我的哪个 nuget 包导致了这个问题。我假设它可能是 Syncfusion 或 Google Cloud Translate,但无法在网络上找到确认信息。

简单的解决方案是启用托管 Linking,因此在 Apple 验证过程中,所有产生问题的部分都不会被视为应用程序的一部分:

  • 在 Xamarin iOS 项目选项中,转到“iOS 构建”
  • select 配置“发布”和平台“iPhone”
  • as “Linker Behaviour” select “Link Framework SDKs Only”(或者 Link All,如果这也适用于您的应用程序)。

一下子解决了所有问题。