当打开另一个通知时,如何防止通知从通知中心消失? iOS
How to prevent a notification disappear from notification center when another one is opened? iOS
我正在开发一个接收推送通知的应用程序。此推送通知,每个都包含有价值的信息,当用户从中打开应用程序时会显示这些信息。
我的问题是,如果用户收到多个通知,如果用户点击它并打开应用程序,所有其他通知都会从通知中心消失,我会丢失所有其他重要信息。
我希望能够 leave/prevent 通知从通知中心消失,以便让用户可以选择继续从通知中心打开它们。有点像 YouTube 通知。我什至在 Twitch 应用程序通知中看到了这种行为。
有什么想法吗?谢谢
我知道这是一个很老的问题,但由于没有答案,我会告诉你我是如何解决这个问题的。
简而言之,这个问题是由于UIApplication.shared.applicationIconBadgeNumber
设置为0引起的;它正在将所有通知从通知中心删除。
解决方法是将applicationIconBadgeNumber
设置为用户在通知中心的实际通知数量。我为此做了一个函数:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
现在您可以在 AppDelegate.swift
中的方法 application(_application:, didFinishLaunchingWithOptions:)
、applicationWillEnterForeground(_application:)
、applicationDidBecomeActive(_application:)
中调用此函数,以确保它会在应该更新的时候更新。
如果您的应用从 OneSignal 接收推送通知,因此您集成了 OneSignal SDK,您必须添加密钥 OneSignal_disable_badge_clearing
到 Xcode 中的 Info.plist file
,作为布尔类型设置为 YES
,以防止在打开通知后删除所有通知。
我正在开发一个接收推送通知的应用程序。此推送通知,每个都包含有价值的信息,当用户从中打开应用程序时会显示这些信息。
我的问题是,如果用户收到多个通知,如果用户点击它并打开应用程序,所有其他通知都会从通知中心消失,我会丢失所有其他重要信息。
我希望能够 leave/prevent 通知从通知中心消失,以便让用户可以选择继续从通知中心打开它们。有点像 YouTube 通知。我什至在 Twitch 应用程序通知中看到了这种行为。
有什么想法吗?谢谢
我知道这是一个很老的问题,但由于没有答案,我会告诉你我是如何解决这个问题的。
简而言之,这个问题是由于UIApplication.shared.applicationIconBadgeNumber
设置为0引起的;它正在将所有通知从通知中心删除。
解决方法是将applicationIconBadgeNumber
设置为用户在通知中心的实际通知数量。我为此做了一个函数:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
现在您可以在 AppDelegate.swift
中的方法 application(_application:, didFinishLaunchingWithOptions:)
、applicationWillEnterForeground(_application:)
、applicationDidBecomeActive(_application:)
中调用此函数,以确保它会在应该更新的时候更新。
如果您的应用从 OneSignal 接收推送通知,因此您集成了 OneSignal SDK,您必须添加密钥 OneSignal_disable_badge_clearing
到 Xcode 中的 Info.plist file
,作为布尔类型设置为 YES
,以防止在打开通知后删除所有通知。