我已经得到推送通知工作,并设法更新图标徽章计数时,应用程序被带到前台。
但我对此有点困惑。。。iPhone收到通知,弹出消息显示激活我的应用程序,徽章仅在我启动应用程序后更新。
就用户体验而言,这听起来并不正确。我的理解是,徽章计数应该通过递增计数通知用户需要采取的行动,但这要等到应用程序运行的后期才会发生。
那么,当应用程序在后台收到推送通知时,有没有办法告诉它更新徽章计数?
请注意,我的应用程序不使用位置,并且我在通知注册请求中有UIRemoteNotificationTypeBadge
。
当我们处于后台状态时,我们可以通过在推送通知包中发送“badge”参数来更改徽章编号。正如@rckoenes指出的,徽章的JSON
参数必须是整数。
执行相同操作的示例PHP代码
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'badge' => 1,
'sound' => 'default'
);
徽章=
实际上,在iOS10中,远程通知将自动调用你的应用程序代表中的didReceive远程通知方法。
你有两种方法在后台更新徽章计数。
我也为我当前的应用程序做了这件事。您也不需要通知服务扩展。
将APS徽章密钥与您的有效载荷一起发送给APN。
这将根据您徽章有效载荷中的整数值更新徽章计数。
// Payload for remote Notification to APN
{
"aps": {
"content-available": 1,
"alert": "Hallo, this is a Test.",
"badge": 2, // This is your Int which will appear as badge number,
"sound": default
}
}
您可以切换您的application.application状态,并更新您的徽章计数时,应用状态在. background
。但是,当发送到APN e. x时,您必须注意不要在通知负载中设置徽章密钥参数。
// Payload to APN as silent push notification
{
"aps": {
"content-available": 1
}
}
这是我的工作代码,用于在APN有效负载中不使用徽章密钥的情况下更新徽章计数。
func application(_ application: UIApplication, didReceiveRemoteNotification
userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("APN recieved")
// print(userInfo)
let state = application.applicationState
switch state {
case .inactive:
print("Inactive")
case .background:
print("Background")
// update badge count here
application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1
case .active:
print("Active")
}
}
当你的应用回到活动状态时,不要忘记重置你的徽章计数。
func applicationDidBecomeActive(_ application: UIApplication) {
// reset badge count
application.applicationIconBadgeNumber = 0
}
由于推送通知由iOS而非应用程序处理,因此在收到推送通知时,您无法更改应用程序标记。
但是您可以在推送通知的有效负载中发送徽章号,但是您必须在服务器端进行计算。
您应该阅读本地和推送通知编程指南,尤其是通知负载。
有效载荷可以是这样的:
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 9
}
}
现在,应用程序徽章图标将显示9。
我想在没有推送通知的情况下更新应用程序图标徽章计数(例如静默推送)。我只是想在阅读应用程序内的任何通知后更新应用程序徽章计数,类似于linkedIn,在linkedIn中,当我阅读任何通知时,它会更新应用程序徽章上的计数。目前,我已经实现了一个解决方案,其中我使用带有徽章计数的FCM获得有效负载,并使用配置了静默推送通知通道的android notification builder对其进行更新。
当我的数据库记录在服务器上更新时,它会通过FCM向Android应用程序用户发送推送通知。通知已发送,但设备上的徽章计数未更新。如何设置更改徽章应用程序图标的通知?
我已经看过关于午夜更新应用程序徽章的问题,选项有:应用程序未启动或在后台,当通知到达时,徽章编号可以减少并更改应用程序图标徽章;当应用程序关闭时,推送通知徽章计数不更新并更新徽章图标;等等。但我遇到的问题与应用程序在后台且推送通知到达时相同,应用程序徽章图标不更新。 我已经检查了所有的可能性。我的代码是: 是的,当应用程序在前台时,它工作正常,然后它显示警报正常。但是当应用程序在后台时,既没有任何
当应用程序在后台时,如何更新包含数据负载的Firebase推送通知?有没有办法在通知中指定通知id给Firebase API? 完整的项目在github https://github.com/akshatashan/FireBaseCloudMessagingDemo中
我试图通过消息推送远程更新徽章值。一切正常,但当应用程序打开时,我得到一个空警报(包含我的应用程序名称和关闭按钮)。 我在苹果的留档中读到了静默通知,但似乎即使在通知有效载荷中指定内容可用: 1,有效载荷也不能包含通知静默的徽章。 在没有收到警报的情况下更新徽章可能吗?
我已经在我的应用程序(Android和IOS)中实现了Appcelerator钛推送通知,用于接收消息: 当应用程序在后台和前台时,我在android中收到通知。我在android中使用下面的属性来显示应用程序在前台时的通知(CloudPush.showTrayNotificationsWhenFocus=true;) 问题:当应用程序位于前台时,我在IOS(9.1版iPhone 5)中收到通知时