【问题标题】:Badge count not updating from push on iOS7徽章计数未从 iOS7 上的推送更新
【发布时间】:2015-01-21 05:08:39
【问题描述】:

我在通过推送通知更新 iOS7 应用程序的徽章计数时遇到问题。它在 iOS8 中运行良好,但虽然收到了推送,但在 iOS7 中徽章计数并未更新。

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

有什么想法吗?

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

【问题讨论】:

  • 尝试将 1 更改为 @(1) 或 @"Increment"

标签: ios push badge


【解决方案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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多