Apple推送通知徽章编号

时间:2011-06-21 12:05:33

标签: objective-c xcode badge

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

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

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

2 个答案:

答案 0 :(得分:13)

它将显示,直到您将其设置为零,您可以使用以下代码执行此操作:

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]


编辑:
在您application:didReceiveRemoteNotification:课程的application:didFinishLaunchingWithOptions:UIApplicationDelegate方法中,通常会在收到通知时设置徽章编号。

您可以在Local and Push Notification Programming Guide

中详细了解相关信息

答案 1 :(得分: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
    );