应用程序在通知操作完全执行之前启动

时间:2019-06-14 19:03:44

标签: ios swift unusernotificationcenter

摘要:在.foreground通知操作代码仍在执行的情况下,应用程序启动时没有获取新数据。

为清楚起见进行编辑:此处我仅指本地通知。

到目前为止,我已经按时显示通知,在通知下方显示了操作按钮,并且userInfo字典数据已从通知正文正确传递到AppDelegate中的didRecieve函数。

但是,该应用程序似乎与通知动作didRecieve switch语句中正在执行的代码同时启动,这是由于UserDefaults(didReceive函数要保存到其中)完成了用new的保存应用已使用旧值启动后的值。

在保存这些UserDefaults之前,是否有任何方法可以延迟应用启动,或者是否有更好的方法来完全实现此目的。

有一个scheduleNotification()函数可以设置一个content.userInfo

userNotificationCenter(_ center:didReceive:withCompletionHandler @escaping () -> Void)函数通过response.notification.request.content.userInfo接收此消息,一切正常。

当用户单击具有.foreground选项的通知操作按钮之一时,它将获取上面的userInfo数据,并使用UserDefaults.standard.set(:forKey)将其保存为用户默认值。

此时的预期行为:启动的应用应读取新设置的UserDefaults数据并相应地更新其UI。

正在发生的事情:应用程序启动时不会考虑新设置的User Defaults数据。但是,当运行两个通知时,运行第二个通知后,应用程序将显示与第一个通知相对应的UI,这告诉我通知didReceive函数正在执行其工作,而不是在应用程序启动之前。

0 个答案:

没有答案