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

IOS Push Notification Banner, показанный дважды для одного нажатия

Я заметил, что отправка уведомления Push приводит к следующему поведению:

Push Banner отображается дважды?

Посмотрите, как баннер отображается во второй раз после небольшой задержки?

Сначала я думал, что наш бэкэнд ошибочно посылает 2 push-уведомления один за другим.

Однако, по-видимому, это поведение по умолчанию для iOS для одного уведомления Push. Баннер отображается, а затем сразу же "отображается снова". Это приводит к этому неустойчивому пользовательскому интерфейсу, показанному в gif. Кажется, что баннер принят дважды.

Протестировано с использованием iOS 9.0.2.

Я не помню, как это поведение наблюдается в других приложениях, которые отправляют мне Push Notifications. Я делаю что-то неправильно, что может привести к тому, что баннер будет показывать дважды?

Radar:

Engineering определила, что ваш отчет об ошибке (23133694) является дубликатом другой проблемы (23130766) и будет закрыт.

4b9b3361

Ответ 1

В соответствии с этим ответом по аналогичному вопросу этот вопрос был указан как rdar://23569779 и должен быть исправлен в общедоступной версии iOS 9.3.

Оставьте комментарий, если вы воспроизведете эту проблему в iOS 9.3 +

Предположительно зафиксировано в:

iOS 9.2.1 beta (Build: 13D11)

Ответ 2

У меня возникла одна и та же проблема, но после бесчисленных часов, которые пытались отладить, я понял, что дважды звонил registerUserNotificationSettings(settings) в didFinishLaunchingWithOptions:. Убедитесь, что вы не выполняете те же

Ответ 3

Вы уверены, что выполняете все свои настройки правильно?
если вы предоставите больше кода, будет легче найти ошибку. Это определенно не ошибка iOS.


Основные функции для проверки, когда у вас возникли проблемы с уведомлениями сервера:

1. Проверьте профиль подготовки и очистите все неиспользуемые сертификаты.
2. Убедитесь, что ваша конфигурация сервера в порядке. Опять же, для получения полного ответа требуется более подробная информация.

Если вы делаете это в автономном режиме, то обычно вы пропустили что-то в своем коде, или ваш обработчик для уединенных сообщений называется два раза.

Ответ 4

Используете ли вы базу данных для хранения идентификатора устройства?

Если да, то может быть идентификатор устройства хранения два раза. Если возможно, очистить db и попытаться отправить его снова

Ответ 5

Я думаю, что здесь принят неправильный ответ (если речь идет о переносе с Parse на OneSignal). Потому что для OneSignal не существует подходящего решения для этого. Я также ищу решение, если оно есть. Единственным обходным решением для этого было перезагрузить телефон.

Но это странно. Мы не можем просить всех пользователей перезагрузить их устройство.

Ответ 6

Получил эту проблему для двух устройств, которые мы использовали с версиями ios 9.3.3 и ios 9.2. Но эта проблема не для устройства, работающего на ios 8.2, а другое для iOS 10 (проверено на 10.3)

Проблема возникла на устройствах с 9.3.3 и 9.2 при каждой новой установке. Но перезапуск устройства, похоже, устранил проблему. Хотя это НЕ является решением, которое мы можем предложить клиентам.

В журналах консоли для системы мы получили "Неуравновешенные вызовы для перехода на начало/конец перехода для сообщения SBBannerButtonViewController", когда это произошло.

Это похоже на проблему с некоторыми устройствами, имеющими версии 9.x, и должно работать нормально для устройств под управлением iOS 10.0 и выше.

Ответ 7

Мы столкнулись с той же проблемой в IOS 9.3.1

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

let config = UAConfig.default()

UAirship.setLogging(false)
UAirship.takeOff(config)
UAirship.push().userPushNotificationsEnabled = true
UAirship.push().notificationOptions = [.alert, .badge, .sound]
UAirship.push().backgroundPushNotificationsEnabled = false
UAirship.push().pushNotificationDelegate = self

После многих попыток мы просто удалили следующую строку, и она сработала!

UAirship.push().notificationOptions = [.alert, .badge, .sound]

Надеюсь, это поможет кому-то.

Ответ 8

Я знаю, что этот ответ через пару лет после оригинального сообщения, но в случае, если это поможет кому-то...

В моем случае я использовал уведомления CloudKit и случайно создал две подписки, которые отслеживали один и тот же тип записи!