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

时间:2020-05-25 17:52:56

标签: xamarin xamarin.forms xamarin.ios visual-studio-mac

我正在使用Xamarin Forms(Android和iOS)开发应用程序。我已经准备好第一个应用程序版本,并且试图将其上传到TestFlight,以便与其他用户一起测试该应用程序。为了减小ipa大小,我将链接器行为设置为“仅链接框架SDK”。

enter image description here

减小ipa大小后,我尝试上载该应用以测试飞行,但收到​​了下一条错误消息:

  • ITMS-90683:Info.plist中缺少目的字符串-您的应用代码 引用一个或多个访问敏感用户数据的API。的 应用的Info.plist文件应包含NSCalendarsUsageDescription 带有面向用户的目的字符串的键,清楚地说明和 完全说明了您的应用为何需要数据的原因。
  • ITMS-90809:不赞成使用的API-使用UIWebView的新应用没有 不再接受。相反,使用WKWebView可以提高安全性, 可靠性。
  • ITMS-90683:Info.plist中缺少目的字符串-您的应用代码 引用一个或多个访问敏感用户数据的API。的 应用的Info.plist文件应包含一个 NSLocationAlwaysUsageDescription键具有面向用户的目的 字符串,清楚,完整地说明您的应用为何需要数据。
  • ITMS-90683:Info.plist中缺少目的字符串-您的应用代码 引用一个或多个访问敏感用户数据的API。的 应用的Info.plist文件应包含一个 NSLocationWhenInUseUsageDescription键具有面向用户的目的 字符串,清楚,完整地说明您的应用为何需要数据。

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

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

如何知道正在使用哪个库(或NuGet)请求这些项目中的任何一个?

3 个答案:

答案 0 :(得分:1)

要摆脱这一点

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

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

例如Camera,Location,Calendar等

答案 1 :(得分:0)

  • 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/

答案 2 :(得分:0)

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

因此,将UsageDescriptions添加到plist确实是不好的做法,而且我不知道是哪个nuget软件包引起了这个问题。我认为它可能是Syncfusion或Google Cloud Translate,但实际上无法在网络上找到确认信息。

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

  • 在Xamarin iOS项目选项中,转到“ iOS Build”
  • 选择配置“发行”和平台“ iPhone”
  • 作为“链接器行为”,选择“仅链接框架SDK”(或者也可以链接所有,如果这也适用于您的应用程序)。

这立即解决了所有问题。