13

我已经看到我的 iPhone(4S,iOS 5.1)中的邮件应用程序会在新邮件到达时自动更新徽章计数,即使应用程序没有运行也是如此。所以也有可能在我的应用程序中实现这种行为,对吧?

我的应用程序成功注册了所有 3 种类型的推送通知 - 徽章、警报和声音。此应用程序的所有 3 种远程通知类型都设置为“电话设置”。

我的应用程序接收远程通知并显示警报、播放声音,但它不会更新徽章编号。如果我通过警报上的查看按钮启动应用程序,那么我的应用程序可以完美地读取徽章值,并且我可以从代码中更改/删除/设置图标徽章。

通知到达时iOS无法自动更改我的应用程序图标徽章的任何具体原因?我看过所有类似的帖子,他们都在讨论电话设置,或者它注册的通知类型,或者关于检查负载 JSON 是否包含徽章。

是否有任何其他原因可能导致此问题?

这是我的代码块:

每次启动应用程序时注册 APNs -

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];

设备令牌几乎立即收到。令牌已发送给提供商,我正在接收通知。警报和声音有效。但是在我启动应用程序并手动更改之前,徽章不会自动生效。请帮忙。

4

3 回答 3

27

我也有这个完全相同的问题。未引用徽章图标。在尝试调整 JSON 数小时后(在验证手机上的应用程序显示徽章、声音、警报之后) - 问题是我添加了UIRemoteNotificationTypeNewsstandContentAvailability作为我的应用程序注册的警报类型之一。(我疯了,什么都选)

所以,当UIRemoteNotificationTypeNewsstandContentAvailability它也在混合中时,它似乎覆盖了允许 aps/badge 数字更新应用程序图标的功能。(一定要更新报摊信息)

于 2012-11-26T19:52:07.533 回答
21

该问题现已修复。提供者服务器发送带引号的徽章编号(作为 JSON 字符串,即“9”)。奇怪的是 APNs/iOS 不将其识别为整数。现在引号已删除并且可以正常工作:)

于 2012-07-06T14:15:26.443 回答
0

I had a similar problem, solved it by forcing integer in the badge number (using PHP with data coming from MySQL db):

$body['aps'] = array(
        'alert' => array(
        'action-loc-key'=> utf8_encode($r['button_action']),
        'body'          => utf8_encode($r['message']),
        'launch-image'  => ''
        ),
    'badge' => (int)$r['badge_number'],
    'sound' => 'default'
    );

Ps.: take a look at the utf8_encode command to avoid a json_encode error I faced earlier too.

于 2016-05-30T01:29:29.493 回答