2011-06-21 163 views
7

我开发了服务器端应用程序,以便在收到新通知后将徽章号码保持为递增或递减,并在看到通知正常工作后删除。Apple推送通知徽章号码

但是在显示徽章时存在一些问题,实际情况是 - 在设备上获得新通知后,我点击取消按钮,然后徽章号码显示正确,但此后我将打开应用程序并关闭应用程序徽章将被删除。这意味着我不会向服务器发送通知被我看到的请求,现在您可以将徽章减1。然后还从应用图标中移除徽章。

我的问题是,当我们打开应用程序,然后徽章号码自动从(应用程序)设备中删除?或者它会显示,直到我们设置为零?

回答

12

它会显示,直到你把它设置成零,你可以用下面的代码做到这一点:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0] 


编辑:
这是比较常见的,你收到通知设置的徽章数量,application:didReceiveRemoteNotification:application:didFinishLaunchingWithOptions:您的UIApplicationDelegate类的方法。

如果要更改图标徽章自动使用下面的代码,你可以阅读在Local and Push Notification Programming Guide

0

更多地了解它。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 

    application.applicationIconBadgeNumber = 0; 
    NSLog(@"userInfo %@",userInfo); 

    for (id key in userInfo) { 
     NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); 
    } 

    [application setApplicationIconBadgeNumber:[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] intValue]]; 

    NSLog(@"Badge %d",[[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] intValue]); 

} 

我们还需要更改php文件。所以我们可以自动更换图标徽章

// Create the payload body 
$body['aps'] = array(
    'alert' => $message, 
    'sound' => 'default', 
    'id' => '135', 
    'badge' => 8 
    );