当 didReceiveLocalNotification 被调用时,我想知道是因为用户从我的应用程序外部单击了通知,还是因为我的应用程序在警报发生时是前台应用程序而被调用。了解区别很重要,因为在一种情况下,用户已经收到带有某些信息的警报并且不再需要它,在另一种情况下,他们还没有收到该信息。
我目前在 applicationWillEnterForeground 中设置一个标志并在 applicationDidBecomeActive 中清除。如果在调用 didReceiveLocalNotification 时设置了标志,我知道它来自我的应用程序之外,并且用户已经以某种形式看到了系统通知。但是,我只是注意到如果用户收到通知,则不会设置此标志,但尚未单击它(因此它只是在下拉通知区域中),然后在我的应用程序位于时从该区域单击它前景。在这种情况下,我的应用程序已经在前台,因此设置了标志。
理想情况下,我可以在 UILocationNotification 上设置一个属性以获取此信息。
我想我可以使用 fireDate 并说如果它不到 1 或 2 秒,并且未设置标志,那么我会实时收到通知,而不是稍后......但我更喜欢更强大的东西,如果可能的。
编辑:当我点击保存时,我注意到“相关”部分有这个链接:
iOS - 需要区分应用程序中的 UILocalNotification:didReceiveLocalNotification:
很抱歉在没有先搜索更多内容的情况下发布了重复的问题(我确实搜索过!)。希望也许这会得到一个更好的答案,因为那个答案并没有真正的可靠答案——但也许没有。