2017-01-23 63 views
0

我试图通过推送通知远程更新徽章值。 一切工作正常,但当应用程序打开时,我得到一个空的警报(包含我的应用程序名称和关闭按钮)。当应用程序打开时更新徽章而不提示

我在苹果的文档中看到silent notifications,但似乎即使在通知有效载荷中指定content-available:1,有效载荷也不能包含通知静音的标志。

正在更新徽章而未收到提醒吗?

回答

0

如果您正在使用静默推送通知,则不能在aps字典中包含badge密钥,因此无法使用静默推送直接更新徽章。

可以包括在aps字典自己的钥匙和价值观,这本词典可以在didReceiveRemoteNotification:fetchCompletionHandlerUIApplicationDelegate功能。

在此功能,您可以从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 
     } 
    } 
} 
+0

是的,但我也希望徽标在执行服务器端操作时更新其值。 – pepollet

+0

对不起。我误解了。看到我的更新 – Paulw11

+0

谢谢我理解这个解决方案,并将最终使用它。为了澄清默认的ios行为,如果aps字典中设置了徽章值,无论应用何时打开,都会显示一条警告消息。 – pepollet