增加推送通知徽章iPhone
是否可以在收到通知时递增徽章值? 或者我应该发送计数作为有效载荷?
如果我每次发送徽章值为“1”,如果应用程序未打开,如何增加应用程序图标中的徽章值。
我已经使用这个代码,但不工作。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; }
通常在所有的应用程序中,未读的通知计数都保存在服务器中。 当服务器发送一个推送通知给特定的设备令牌时,他们发送证书计数和有效载荷。 一旦设备被通知,你的应用程序在后台(或杀死),操作系统自动更新徽章计数到你的应用程序图标。 如果您的应用程序正在运行,您将会收到通知
application:didReceiveRemoteNotification:
委托,因此您可以从(NSDictionary *)userInfo接收徽章计数。 因此,您可以使用该function更新应用图标徽章数量
[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
认为这应该可以帮助你。
如果应用程序没有打开,您将无法增加除有效载荷外的徽章。
当您的应用程序处于后台模式时,如果推送通知到来,并且您希望增加徽章号码,则应该向服务器发送一个badgeCount
,以便服务器知道当前计数。
如果你从服务器端pipe理徽章数量,那么这个代码就足够了: –
- (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]; } } } }
城市飞艇使用他们的“自动驾驶”function支持这一点 。
当你打开App时收到远程通知后,
使用下面的代码在Appdelegate文件的“didBecomeActive”方法中获取当前的徽章号码:
int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber; badgeCount = badgeCount + 1;