我正在从服务器端向apns服务器发送通知,我在处理徽章时遇到一个小问题,如果用户在通知中心看到通知,我的徽章号码应该减少,如果应用已经运行,则不需要徽章我这么认为,但我的徽章编号总是“1”
从我的服务器端我发送徽章=“1”。如何通知服务器我的应用程序有特定的徽章编号,如何知道我的徽章编号。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"%@",userInfo);
UIApplicationState state = [application applicationState];
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:1];
if (state == UIApplicationStateActive) {
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];
NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@""
message:message
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles: nil];
[alertView show];
[alertView release];
}
}
答案 0 :(得分:1)
通常在所有应用中,未读通知计数都在服务器中维护。当服务器向特定设备发送推送通知时,令牌服务器会将徽章计数与有效负载一起发送。
您的服务器逻辑需要跟踪正确的徽章计数并正确发送。
{
"aps" :
{
"alert" : "Your notification message",
"badge" : badgecount ,
"sound" : "bingbong.aiff"
}
}
代替您的代码[[UIApplication sharedApplication]setApplicationIconBadgeNumber:1];
使用
badge_value+=[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"]intValue];
[UIApplication sharedApplication].applicationIconBadgeNumber = badge_value;
其中,badge_value是一个存储徽章值的整数。