Ответ 1
Теперь проблема исправлена. Сервер провайдера отправил номер значка в кавычки (как JSON String, т.е. "9" ). Странно, что APNs/iOS не распознает его как целое. Теперь кавычки удаляются, и он работает:)
Я видел, как приложение электронной почты в моем iPhone (4S, iOS 5.1) автоматически обновляет счетчик значков, если приходит новая почта, даже когда приложение не запущено. Таким образом, можно также достичь такого поведения в моем приложении, верно?
Мое приложение успешно регистрируется для push-уведомлений для всех трех типов - Значка, Сигнал и Звук. Настройки телефона установлены для всех трех типов удаленных уведомлений для этого приложения.
Мое приложение получает удаленные уведомления и показывает предупреждение, воспроизводит звук, но не обновляет номер значка. Если я запустил приложение с помощью кнопки "Вид" в уведомлении, мое приложение может отлично прочитать значение значка, и я могу изменить/удалить/установить значок значка из кода.
Любая конкретная причина, по которой iOS не может автоматически изменить значок значка моего приложения при получении уведомления? Я видел все похожие сообщения, все они обсуждают какие-либо настройки телефона, или о типах уведомлений, которые он зарегистрировал, или о проверке полезной нагрузки JSON включает значок или нет.
Есть ли другая причина, которая может вызвать эту проблему?
Вот мои кодовые блоки:
Зарегистрируйтесь для APN при каждом запуске приложения -
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
Значок устройства получил почти мгновенно. Токен был отправлен провайдеру, и я получаю уведомления. Оповещения и звуки. Но значок не имеет автоматического эффекта, пока я не запустил приложение и не изменил его вручную. Пожалуйста, помогите.
Теперь проблема исправлена. Сервер провайдера отправил номер значка в кавычки (как JSON String, т.е. "9" ). Странно, что APNs/iOS не распознает его как целое. Теперь кавычки удаляются, и он работает:)
У меня также была такая же проблема. Значок значка не был указан. После многих часов попытки настроить JSON (после проверки приложения на телефоне появились значки, звуки, предупреждения), проблема заключалась в том, что я добавил UIRemoteNotificationTypeNewsstandContentAvailability в качестве одного из типов предупреждений, на которые регистрировалось мое приложение. (Я сошел с ума, просто все понял)
Итак, когда UIRemoteNotificationTypeNewsstandContentAvailability
также находится в миксе, он, похоже, переопределяет функцию, позволяющую номерам aps/badge обновлять значок приложения. (Должно быть, нужно обновлять информацию в киосках)
У меня была аналогичная проблема, она была решена путем форсирования целого числа в номере значка (используя 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
, с которой я столкнулся ранее.