【问题标题】:iOS sends the notification object to UserNotificationCenter and to didFinishLaunchingWithOptionsiOS 将通知对象发送到 UserNotificationCenter 和 didFinishLaunchingWithOptions
【发布时间】:2017-06-22 18:25:01
【问题描述】:

当应用关闭且用户点击通知时:

1) 使用 remoteNotification 对象调用 didFinishLaunchingWithOptions。我按预期在这里设置了rootViewController

2) userNotificationCenter(_, didReceive, withCompletionHandler) 也被调用。

问题是,我不想在第 2 步做任何事情,因为我已经在第 1 步处理了通知)。但是,如果应用程序位于前台或后台,我确实想在步骤 2) 中处理通知。我不知道如何区分这两种情况。

【问题讨论】:

  • 尝试在 userNotificationCenter 函数中设置 rootViewController 而不是 didFinishLaunchingWithOptions 怎么样?这样它只会被调用一次,因为 userNotificationCenter 是一个委托函数,当用户点击通知时会调用它。
  • 因为我确实需要在didFinishLaunchingWithOptions中设置一个rootViewController,否则应用会崩溃
  • 嗯,您可以添加一个变量来设置用户是否进入后台状态或应用程序是否刚刚打开。因此,当用户进入后台时,让我们设置 wasInBackground = true,因此如果 wasInBackground 为 true,则处理通知,如果不是,则不处理。
  • 只是为了确定,您是否确认他们都是在点击通知时被调用的,还是只是您认为会发生这种情况?

标签: ios swift push-notification usernotifications


【解决方案1】:

认为他们是出于不同的考虑。

userNotificationCenter(_, didReceive, withCompletionHandler) 用于处理响应。用户点击了什么动作,他们只是滑动来清除它吗?他们在那里回复了消息吗?

didFinishLaunchingWithOptions 仅用于接收回调,它只是告诉您应用程序在被杀死/暂停后通过通知启动...请注意...这是您的机会启动/执行您在应用启动期间通常会做的任何事情

【讨论】:

    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多