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大小后,我尝试上传应用程序进行试飞,但出现下一条错误消息:
- 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 键
清楚完整地解释您的应用为何需要数据的字符串。
问题是我没有使用列表中提到的 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:
- 更新 Xamarin.Forms 版本
- 您可以转到您的 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,如果这也适用于您的应用程序)。
一下子解决了所有问题。
我正在使用 Xamarin Forms(Android 和 iOS)开发应用程序。我已经准备好第一个应用程序版本,我正在尝试将其上传到 TestFlight,以便与不同的用户一起测试该应用程序。为了减小 ipa 的大小,我将链接器行为设置为 "Link framework SDKs only".
减小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 键 清楚完整地解释您的应用为何需要数据的字符串。
问题是我没有使用列表中提到的 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:
- 更新 Xamarin.Forms 版本
- 您可以转到您的 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,如果这也适用于您的应用程序)。
一下子解决了所有问题。