如今在iOS应用中AppDelegate#willContinueUserActivityWithType
和AppDelegate#continue#restorationHandlers
似乎从来没有/从来没有?单击通用链接时调用。
相反SceneDelegate#continue
和SceneDelegate#willContinueUserActivityWithType
被称为。
那很好但是
- 实际上是否有一种方法可以调用AppDelegate(“像以前一样”)而不是SceneDelegate?是什么导致了二元性?这两个人都有被召唤的危险吗?
- 在某些情况下,SceneDelegate没有被调用,但它确实会恢复为正在调用的AppDelegate?
现在,你能可靠地依赖于使用通用链接调用SceneDelegate,而忘记AppDelegate吗?
1条答案
按热度按时间jv4diomz1#
iPadOS 13引入了多窗口和场景代理的概念。每个窗口都有自己独立的场景和场景代理。iPad上的应用程序可以选择支持多个窗口/场景。当在iPhone上运行时,总是只有一个场景(真正的直到并包括iOS 17,但也许有一天...)
一旦应用程序被转换为使用新的场景架构作为添加对iOS 13的支持的一部分,或者如果它是在默认支持它的Xcode版本中创建的,许多旧的应用程序委托方法实际上被类似的场景委托方法所取代。某些应用委托方法仍会被调用,因为它们引用的是整个应用,而不是特定的窗口/场景。
支持场景架构的应用将应用委托用于已被场景委托版本取代的方法的唯一方式是在运行iOS/iPadOS 12或更早版本的设备上执行该应用委托。在iOS 13之后的几年里,仍然支持较旧iOS版本的应用程序需要实现应用程序和场景委托方法,以处理在iOS 13之前或之后的设备上运行。
对于新创建的应用程序,可以删除对场景架构的支持,但我建议不要这样做。我们应该向前看,而不是向后看。
现在,你能可靠地依赖于使用通用链接调用SceneDelegate,而忘记AppDelegate吗?
是的。任何同时具有场景和应用委托版本的方法将只使用场景版本。