【问题标题】:UIWebView Deprecation and App Store Rejection on Xamarin FormsXamarin 表单上的 UIWebView 弃用和 App Store 拒绝
【发布时间】:2020-08-20 03:28:45
【问题描述】:

我可以解决以下问题吗?

我的设置

Xamarin.iOS 版本:13.16.0.13(Visual Studio 社区)

Visual Studio Community 2019 for Mac 版本 8.5.2(内部版本 13)

Xamarin.Forms 4.5.0.617

我按照这里的说明进行操作

https://docs.microsoft.com/en-gb/xamarin/xamarin-forms/user-interface/webview?tabs=macos#uiwebview-deprecation-and-app-store-rejection-itms-90809

这里

https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment-542363338

解决这个问题

ITMS-90809:不推荐使用的 API 使用 - 使用 UIWebView 的新应用不可用 较长时间接受。相反,使用 WKWebView 来提高安全性和 可靠性。

但我在发布时收到以下错误

谢谢!

【问题讨论】:

  • UIWebView 弃用和 Xamarin.Forms :devblogs.microsoft.com/xamarin/…
  • 您能发布您的 info.plist 文件吗?看起来错误不在于 WebView,而是与不正确的 plist 配置有关。看第一行——Failed to parse PList data type
  • 感谢@MihailDuchev 抽出宝贵时间。我的应用程序因来自苹果的 ITMS-90809 错误而被拒绝。我按照说明进行操作,现在在发布之前出现此错误。我用 info.plist 编辑我的答案。
  • 嗯,这很奇怪。我看不出 plist 文件有什么问题。您在代码中是否对 UIWebView 有一些参考,例如某种 WebViewRenderer?
  • @MihailDuchev 我不在我的应用程序中使用 UIWebView 控件。某些页面使用 Xamarin.Essentials 打开浏览器。

标签: ios xamarin xamarin.forms xamarin.ios


【解决方案1】:

在 mtouch 参数 works 中添加 --optimize=force-rejected-types-removal。我已提交给 TestFlight,但没有收到关于 UIWebView 删除的电子邮件。

【讨论】:

    【解决方案2】:

    这不是一个答案,但我分享了我在这个特定问题上的经验,我也有。也许会有所帮助。

    在 2020 年 4 月 1 日之后向 Apple App Store Connect 发布新应用时,如果您使用 UIWebView,Apple 可能会拒绝您的应用。之前提交的应用有警告,但这些应用在 2020 年 12 月之后将无法提交。

    我的应用是新的,我在 4 月 1 日之后发布。我很难使用 VS 2019 Mac 和存档过程来发布这个应用程序。我不喜欢它。您可以在发布期间出现绿屏,并且在 appstoreconnect 上什么也看不到。这是因为 Apple 拒绝了您的应用。查看您的电子邮件,您有:

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

    我建议使用磁盘上的存档并使用 Transporter 应用程序上传。它有一个日志视图,并警告我有关内部版本号的问题。

    回到我的应用程序,我尝试了 mtouch 参数 --optimized 技巧,但它不起作用。我试过不要链接,只链接 SDK,确保链接全部。没有工作。苹果一直说我正在使用 UIWebView。我检查了我的代码,我在任何地方都看不到 UIWebView。

    所以我想使用最新版本的 Xamarin.Forms 4.6 从头开始​​尝试一个全新的应用程序并发布它。 Apple 也收到了同样的问题信息。然后我添加 --optimizer mtouch 参数并发布它。苹果很满意。所以这意味着“补丁”正在工作。

    所以由于我的代码没有任何 UIWebView,我认为这可能是一个分层库...但是如何找到...我正在尝试这个 https://levelup.gitconnected.com/how-to-find-and-remove-uiwebview-uses-in-your-ios-app-d9395f7baacc

    命令给了我这个:

    FirebaseCore FirebaseCore 诊断 GTMSessionFetcher GoogleAPIClientForREST 谷歌数据传输 GoogleDataTransportCCT 支持 GoogleToolboxForMac 谷歌实用程序 个性化广告同意 U _OBJC_CLASS_$_UIWebView 级别数据库 libSkiaSharp 纳米铅 protobuf

    所以我认为这些库不“兼容”...?

    如果我发现了什么,我会更新......

    【讨论】:

    • 我还在链接中使用了nm 命令来查找依赖项名称列表,但我很确定这些名称是 pod 依赖项。我检查了所有使用 UIWebView 找不到任何文件的依赖文件。那为什么呢?
    • 你找到任何与 firebase 库相关的东西了吗?
    【解决方案3】:

    我不知道为什么,但是当我更改了我的应用程序的版本号和内部版本号时,它就可以工作了。我还在 App Store Connect 上创建了一个新的应用版本。

    此链接中的相同错误对我有帮助

    https://forums.xamarin.com/discussion/172296/app-store-connect-application-loader-publishing-failed-failed-to-parse-altool-output

    我相信是两个不同的错误。第一个来自已弃用的 UIWebView,在第一次被苹果拒绝后出现另一个错误(发布错误)。

    谢谢。

    【讨论】:

    • 我做了同样的事情,得到了同样的结果。如果您已经在使用高于 4.6 的 XF 版本,这似乎是一个错误的错误。
    【解决方案4】:

    作为微软mentions in the Microsoft blog, this is fixed in Xamarin.Forms 4.6

    现在在 4.6 中,我们正在更新与 Google 库的绑定。我们有 改进了对样式的支持,例如设置按钮的 “禁用”文本颜色。 最新的库也去掉了引用 到 Apple 已弃用的 UIWebView。

    所以将您的 Xamarin.Forms 更新到版本 4.6。

    【讨论】:

    • 我已将我的应用程序升级到表单 4.6,但当我尝试提交到应用程序商店时仍然出现此错误。我做了一个干净的构建,但没有帮助。我还有其他事情要做吗?我的项目中确实有一个 WebView。这会导致这个吗?如果是这样,我该如何让它使用新的 WKWebView?
    • 没关系。原来你仍然需要链接器选项,不知何故我的被删除了。这仍然有效。
    • @user856232 太好了,你把它修好了。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多