Подтвердить что ты не робот

Apple push-уведомление не меняет значок значка автоматически

Я видел, как приложение электронной почты в моем iPhone (4S, iOS 5.1) автоматически обновляет счетчик значков, если приходит новая почта, даже когда приложение не запущено. Таким образом, можно также достичь такого поведения в моем приложении, верно?

Мое приложение успешно регистрируется для push-уведомлений для всех трех типов - Значка, Сигнал и Звук. Настройки телефона установлены для всех трех типов удаленных уведомлений для этого приложения.

Мое приложение получает удаленные уведомления и показывает предупреждение, воспроизводит звук, но не обновляет номер значка. Если я запустил приложение с помощью кнопки "Вид" в уведомлении, мое приложение может отлично прочитать значение значка, и я могу изменить/удалить/установить значок значка из кода.

Любая конкретная причина, по которой iOS не может автоматически изменить значок значка моего приложения при получении уведомления? Я видел все похожие сообщения, все они обсуждают какие-либо настройки телефона, или о типах уведомлений, которые он зарегистрировал, или о проверке полезной нагрузки JSON включает значок или нет.

Есть ли другая причина, которая может вызвать эту проблему?

Вот мои кодовые блоки:

Зарегистрируйтесь для APN при каждом запуске приложения -

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

Значок устройства получил почти мгновенно. Токен был отправлен провайдеру, и я получаю уведомления. Оповещения и звуки. Но значок не имеет автоматического эффекта, пока я не запустил приложение и не изменил его вручную. Пожалуйста, помогите.

4b9b3361

Ответ 1

Теперь проблема исправлена. Сервер провайдера отправил номер значка в кавычки (как JSON String, т.е. "9" ). Странно, что APNs/iOS не распознает его как целое. Теперь кавычки удаляются, и он работает:)

Ответ 2

У меня также была такая же проблема. Значок значка не был указан. После многих часов попытки настроить JSON (после проверки приложения на телефоне появились значки, звуки, предупреждения), проблема заключалась в том, что я добавил UIRemoteNotificationTypeNewsstandContentAvailability в качестве одного из типов предупреждений, на которые регистрировалось мое приложение. (Я сошел с ума, просто все понял)

Итак, когда UIRemoteNotificationTypeNewsstandContentAvailability также находится в миксе, он, похоже, переопределяет функцию, позволяющую номерам aps/badge обновлять значок приложения. (Должно быть, нужно обновлять информацию в киосках)

Ответ 3

У меня была аналогичная проблема, она была решена путем форсирования целого числа в номере значка (используя PHP с данными из 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: посмотрите на команду utf8_encode, чтобы избежать ошибки json_encode, с которой я столкнулся ранее.