我最近更新了代码,以使用UNUserNotificationCenter,因为旧的通知API已弃用。
除以下内容外,它均能正常工作。
我的应用程序中有一个具有表格视图的屏幕,每当用户访问该页面时,表格视图就会重新加载。当我们将应用程序推到该屏幕上的后台时,以及当我们将应用程序前台显示时,它会重新加载表格视图。我需要这样才能满足一些要求。
问题是,如果我将应用程序置于后台,等待通知,通知到达,则在此屏幕上;当我单击通知时,应用程序在启动屏幕上冻结。发生冻结时,我会在控制台上看到以下消息。
+ [CATransaction同步]在事务内调用
当我在该屏幕上显示应用程序背景,然后单击通知横幅时,如果我从其他屏幕上显示背景,然后单击该通知到达相应页面的通知,并且应用程序未冻结,则会发生冻结。
我了解到,如果我停止重新加载表视图,它可以解决冻结问题,但是我需要重新加载表视图。
我认为表视图正在尝试重新加载,同时由于用户点击了通知,因此我试图导航到其他页面,这导致冻结。我在加载表格视图之前添加了一个延迟,此问题已解决,但我认为应该有一个更好的解决方案。
有什么方法可以确定该应用是通过通知启动的吗?我想在应用程序进入前台时在具有表视图的屏幕中确定此内容,以便仅在那种情况下才不会重新加载,因为点击通知会将用户导航到另一个屏幕。