2015-01-21 91 views
0

我在推送通知中更新iOS7應用程序上的徽章計數時遇到問題。它在iOS8中工作正常,但是,儘管正在收到推送,但iOS7中的徽章數並未更新。徽章計數未從推送iOS7上更新

我使用的測試負載如下:{"aps":{"alert":"Test","badge":1,"sound":"default"}}

任何想法可能是怎麼回事?

在應用程序中手動設置徽章計數工作正常,它只是被忽略的推數。

+0

嘗試改變1〜@(1)或至@「增量」 – 2015-01-21 05:23:07

回答

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]; 
}