gpt4 book ai didi

c# - 遵循指南后,Xamarin iOS 应用程序被 UIWebView 拒绝

转载 作者:行者123 更新时间:2023-12-03 14:38:03 25 4
gpt4 key购买 nike

我们有一个新的应用程序正在尝试提交到应用程序商店(使用 TestFlight 进行预发布 beta 测试),但由于 UIWebView 的引用而收到无效的二进制消息:
TMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.
我们遵循了 Xamarin 在此处提供的指南:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=macos#uiwebview-deprecation-and-app-store-rejection-itms-90809

我们有:

  • 将 Xamarin Forms 升级到 4.6 或更高版本 - 4.6.0.706
  • 确保 Xamarin.iOS 13.10.0.17 或更高版本 - 13.16.0.13
  • 删除对 UIWebView 的引用(首先没有)
  • 确保 IOS 版本设置为“仅链接框架 SDK”(已经是)
  • 添加了必需的 mtouch 参数:“--optimize=experimental-xforms-product-type”
  • 更新了所有构建配置(发布/iphone、发布/模拟器、调试/iphone、调试/模拟器)

  • 我还删除了我的包、bin 和对象文件夹,以确保我获得完整的构建,但在上传时继续收到此响应。

    编辑:我在我的 MTOUCH 中添加了警告标志以查看它的使用位置,现在我确实看到了警告,所以它就在那里......某处。

    添加警告代码: --warn-on-type-ref=UIKit.UIWebView
    构建警告:
    Build with warning

    我怎样才能找到哪个包正在使用 UIWebView 而不随意更新它们并希望能解决问题(没有其他意想不到的后果)?

    编辑#2:
    我按照下面的建议进行了 GREP 搜索 - 这是我的结果
    grep -r 'UIWebView' .
    Binary file ./.vs/NorthernLights/xs/sqlite3/storage.ide matches
    ./iOS/NorthernLights.iOS.csproj: <MtouchExtraArgs>--optimize=experimental-xforms-product-type --warn-on-type-ref=UIKit.UIWebView</MtouchExtraArgs>
    Binary file ./packages/Xamarin.Forms.4.6.0.726/buildTransitive/XCODE10/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/Xamarin.Forms.4.6.0.726/buildTransitive/XCODE11/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/Xamarin.Forms.4.6.0.726/build/XCODE10/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/Xamarin.Forms.4.6.0.726/build/XCODE11/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/HockeySDK.Xamarin.5.2.0/lib/Xamarin.iOS10/HockeySDK.iOSBindings.dll matches

    在我看来,HockeyApp 可能是我的罪魁祸首之一。我已经更新了软件包,但我知道 HockeyApp 已迁移到 AppCenter,因此可能不再维护此代码。另请参阅引用 SQLite,这是一组在不破坏应用程序其他部分的情况下无法更新的软件包。

    编辑 #3

    我们已经删除了 HockeyApp,但仍然有两个引用警告。我已经删除了 SQLIte PCL 并将其重新添加到最新版本,但仍然看到对 storage.ide 文件的引用,我认为它只是一个我可以忽略的本地数据库文件。看起来剩下的就是 Xamarin.Forms 引用,但所有这些都应该通过我的 mtouch 参数来处理:
    <MtouchExtraArgs>--optimize=experimental-xforms-product-type --warn-on-type-ref=UIKit.UIWebView</MtouchExtraArg
    无法弄清楚我错过了什么......

    最佳答案

    好吧,我想出了我自己的实例。 grep 工具很棒,一旦我知道要查找什么和忽略什么:

  • 删除所有 bin/obj 文件夹以减少困惑。
  • 打开终端,导航到项目文件夹,然后运行 ​​grep -r UIWebView .
  • 查看结果并查找引用它的第 3 方 NuGet 包。

  • 由于 MTOUCH 规则,我可以安全地忽略 Xamarin.Forms 引用,虽然我不知道 SQLLite 引用是什么,但这不是问题。就我而言,唯一重要的是 HockeyApp,这是我们使用的崩溃日志记录工具,但已被 Microsoft AppCenter 弃用并取代。该代码似乎没有得到维护(毫不奇怪)并且它仍然包含该引用。一旦我们删除了 HockeyApp 和相关代码,我们就能够在没有问题/警告的情况下提交。

    附带说明一下……我的开发环境仍然显示 Xamarin.Forms 中的引用……您只需要注意,如果您根据原始文章有适当的 MTOUCH 参数,则可以忽略它们。

    这是我的 grep 结果,唯一重要的是 HockeyApp 引用。
    Binary file ./.vs/NorthernLights/xs/sqlite3/storage.ide matches
    ./iOS/NorthernLights.iOS.csproj: <MtouchExtraArgs>--optimize=experimental-xforms-product-type --warn-on-type-ref=UIKit.UIWebView</MtouchExtraArgs>
    Binary file ./packages/Xamarin.Forms.4.6.0.726/buildTransitive/XCODE10/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/Xamarin.Forms.4.6.0.726/buildTransitive/XCODE11/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/Xamarin.Forms.4.6.0.726/build/XCODE10/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/Xamarin.Forms.4.6.0.726/build/XCODE11/Xamarin.Forms.Platform.iOS.dll matches
    Binary file ./packages/HockeySDK.Xamarin.5.2.0/lib/Xamarin.iOS10/HockeySDK.iOSBindings.dll matches```

    关于c# - 遵循指南后,Xamarin iOS 应用程序被 UIWebView 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61783860/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com