徽章计数没有从推送iOS7更新

时间:2015-01-21 05:08:39

标签: ios push badge

我无法通过推送通知更新iOS7应用程序上的徽章计数。它在iOS8中运行良好,但是,虽然正在接收推送,但在iOS7中不会更新徽章计数。

我正在使用的测试有效负载如下:{"aps":{"alert":"Test","badge":1,"sound":"default"}}

任何想法可能会发生什么?

在应用程序中手动设置徽章计数工作正常,只是忽略推送计数。

1 个答案:

答案 0 :(得分:1)

徽章计数的可能原因未更新,因为它无法将值识别为intNSInteger

当某人尝试传递非整数值时,徽章不会更新。在这种情况下,它怎么会不显示任何警告或崩溃,但是当它无法识别徽章价值所需的类型时它就会消失。

查看您的推送通知付费负载可能是值不是所需类型。我的意思是它可能是stringboolean,与徽章所需的类型不兼容。

所以你可以做的是,在更新徽章计数之前将其强制转换为int

假设您有解析有效负载数据到字典,结果字典将类似于下面的代码:

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

    // Assuming payload data is parse and result in a dictionary like below:

    NSDictionary *payloadData = @{ @"alert": @"Test", @"badge": @1, @"sound":@"default" };

    NSString *badgeString = [payloadData objectForKey:@"badge"];
    NSInteger badgeValue = [badgeString integerValue];

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeValue];
}