首页 > 解决方案 > 在 AppDelegate 中使用 NSUserAcitivty 的应用程序剪辑的相同 URL 的 ios 应用程序启动不一致

问题描述

在 App Clips 之前,我们的应用程序(如果已安装)可以通过扫描二维码来启动。在这种情况下,AppDelegate 将使用有效负载调用 NSUserActivity,我们将提取 QR 码数据以进行解析和操作。

App Clip 启动后,相同的行为一直持续到最近(假设在 14.4 之前)。现在,如果用户安装了应用程序并扫描二维码,他们将获得 App Clip 卡以打开应用程序。如果用户点击“打开”,则启动完整的应用程序。但是,现在初始视图控制器在 AppDelegate 能够接收和解析 NSUserActivity 数据之前启动。我假设,这会产生某种竞争条件,其中大多数时候初始根控制器格式错误或没有数据。

我的理解是 NSUserActivity 是处理应用程序启动的最佳方式,所以我不确定如何正确解决这个问题而不是编写一些 hacky 变通办法。

在我们的测试中,我们注意到一些有趣的情况,即 iOS 有时会启动完整的应用程序而不显示应用程序剪辑卡(不太频繁),而完整的应用程序可以正常运行。但大多数时候,它会显示应用程序剪辑卡,如果安装它会破坏我们的完整应用程序。

我们的完整应用程序和应用程序剪辑使用相同的域(通用应用程序链接),我们根据应用程序内的 URL 参数进行决策。基本上,我们的 applink 配置为example.com在两个应用程序中(即完整和应用程序剪辑),我们提取business_name=FOOitem_id=BAR在 AppDelegate 中(其中完整的 URL 可能是:example.com/buiness_name=FOO&item_id=BAR.

我希望有人可以就如何解决/解决此问题提供建议。

标签: iosswiftxcodeapple-appclips

解决方案


推荐阅读