是否可以在收到通知时增加徽章值。或者我应该将计数作为有效载荷发送吗?
如果我每次都将徽章值发送为“1”,如果应用程序未打开,我怎样才能增加应用图标中的徽章值。
我使用过此代码但无效。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1;
}
答案 0 :(得分:51)
通常在所有应用中,未读通知计数都在服务器中维护。当服务器向特定设备令牌发送推送通知时,他们会发送徽章计数以及有效负载。一旦设备被通知并且您的应用程序处于后台(或被杀死),操作系统会自动将徽章计数更新为您的应用程序图标。如果您的应用程序是否正在运行,您将收到
的通知application:didReceiveRemoteNotification:
委托,因此您可以从(NSDictionary *)userInfo接收徽章计数。因此,您可以使用功能
更新应用程序图标徽章计数[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
认为这应该对你有帮助。
答案 1 :(得分:12)
如果应用程序未打开,除了有效负载之外,您将无法增加徽章。
答案 2 :(得分:5)
当您的应用程序处于后台模式时出现推送通知&如果要增加徽章编号,您应该向服务器发送badgeCount
,以便服务器知道当前的计数。
如果您从服务器端管理徽章计数,则此代码就足够了: -
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSLog(@"remote notification: %@",[userInfo description]);
if (userInfo) {
NSLog(@"%@",userInfo);
if ([userInfo objectForKey:@"aps"]) {
if([[userInfo objectForKey:@"aps"] objectForKey:@"badgecount"]) {
[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
}
}
}
}
答案 3 :(得分:3)
Urban Airship使用“autobadge”功能支持this。
答案 4 :(得分:0)
打开App时收到远程通知
获取当前徽章编号" didBecomeActive"使用以下代码的Appdelegate文件的方法:
int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber;
badgeCount = badgeCount + 1;