应用打开时更新徽章而不发出警报
Posted
技术标签:
【中文标题】应用打开时更新徽章而不发出警报【英文标题】:Update badge without alert when app is open 【发布时间】:2017-01-23 19:47:14 【问题描述】:我正在尝试通过推送通知远程更新徽章值。 一切正常,但是当应用程序打开时,我收到一个空警报(包含我的应用程序名称和关闭按钮)。
我在苹果的文档中读到了silent notifications,但似乎即使在通知有效负载中指定了 content-available : 1 ,有效负载也不能包含徽章以使通知静音。
是否可以在不收到警报的情况下更新徽章?
【问题讨论】:
【参考方案1】:如果您使用的是静默推送通知,则您不能在 aps
字典中包含 badge
键,因此您无法使用静默推送直接更新徽章。
您可以在aps
字典中包含自己的键和值,并且此字典可在didReceiveRemoteNotification:fetchCompletionHandler
UIApplicationDelegate
函数中使用。
在此函数中,您可以从 aps
字典中提取您自己的“徽章”键,并使用它直接使用 UIApplication
属性 [applicationIconBadgeNumber
][1] 更新徽章编号
UIApplication.shared.applicationIconBadgeNumber = someValue
类似:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
if let badgeNumberStr = userInfo["myBadge"] as? String
if let badgeNumber = Int(badgeNumberStr)
application.applicationIconBadgeNumber = badgeNumber
【讨论】:
是的,但我还希望徽章在执行服务器端操作时更新其值。 谢谢,我理解这个解决方案,并且最终会使用它。只是为了澄清默认的 ios 行为,如果在 aps 字典中设置了徽章值,则无论何时打开应用程序都会显示警报? 我认为当你的应用在前台时不应该显示任何东西;检查您的应用委托中是否有代码来显示本地通知 谢谢,您为我指明了正确的方向。我没有提到我使用 OneSignal 作为推送通知提供程序,而他们的 sdk 导致了不受欢迎的行为。感谢您的宝贵时间。以上是关于应用打开时更新徽章而不发出警报的主要内容,如果未能解决你的问题,请参考以下文章
VBA:打开,编辑,保存...在 VBA 编辑器打开时工作,而不是在关闭时工作?