【发布时间】:2015-12-04 23:30:38
【问题描述】:
在某些情况下,我的 iOS 应用程序必须同时触发多个UILocalNotification。我想决定用户点击了哪个UILocalNotification。当用户单击UILocalNotification 时,应用程序处于非活动状态或在后台。问题是方法
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
为每个触发的UILocalNotification 调用。因此,当应用程序处于活动状态时,此方法会被多次调用,因为我收到了多个 UILocalNotification。有没有办法确定哪个UILocalNotification 是应用程序打开的原因?由于在应用程序处于非活动状态或在后台时已收到所有 UILocalNotification,因此无法检查 applicationState。
非常感谢!
编辑: 举个远的例子:当您收到来自两个不同组 A 和 B 的 WhatsApp 消息并选择来自组 A 的推送通知时,该消息将在应用程序自行打开后立即显示。 WhatsApp 和我的用例之间的区别在于我有本地通知。
【问题讨论】:
-
根据我的经验(我刚刚编写了一个小测试应用程序,它在应用程序关闭时安排三个具有相同 fireDate 的 UILocalNotifications 来测试这一点),当用户在通知屏幕中点击给定警报时,从而启动应用程序,传递给 UIApplication 的 didReceiveNotifications 方法的唯一 UILocalNotification 是用户点击的那个。所以我不太明白你的问题。
-
它没有回答您的问题,但是只有一个本地通知(即取消以前的通知)怎么样。如果这样做,您可以跟踪通知的 userInfo 字典以供以后在应用程序激活时使用。如果您仍然需要多个本地通知,是否可以选择以某种方式将其组合成一个通知?如果是,您可以准备一种 userInfo 字典数组,以便在应用激活时使用。
-
你不能使用 userinfo 字典来确定打开了哪个通知并在 didRecieveLocalNotif 中检查,
标签: ios swift notifications uilocalnotification