iOS 将通知对象发送到 UserNotificationCenter 和 didFinishLaunchingWithOptions

Posted

技术标签:

【中文标题】iOS 将通知对象发送到 UserNotificationCenter 和 didFinishLaunchingWithOptions【英文标题】:iOS sends the notification object to UserNotificationCenter and to 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,则处理通知,如果不是,则不处理。 只是为了确定,您是否确认他们都是在点击通知时被调用的,还是只是您认为会发生这种情况? 【参考方案1】:

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

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

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

【讨论】:

以上是关于iOS 将通知对象发送到 UserNotificationCenter 和 didFinishLaunchingWithOptions的主要内容,如果未能解决你的问题,请参考以下文章

JSON对象压缩同时使用php发送推送通知ios/android

如何将原始推送通知从 Azure 通知中心发送到 iOS 设备?

iOS通知中心

使用 Urban Air Ship 显示所有发送到 IOS 设备的通知

如何使用 HomeKit 框架从附件发送通知到 iOS 设备

IOS 9中的Apple推送通知[重复]