IOS Push Notification Banner, показанный дважды для одного нажатия
Я заметил, что отправка уведомления Push приводит к следующему поведению:
![Push Banner отображается дважды?]()
Посмотрите, как баннер отображается во второй раз после небольшой задержки?
Сначала я думал, что наш бэкэнд ошибочно посылает 2 push-уведомления один за другим.
Однако, по-видимому, это поведение по умолчанию для iOS для одного уведомления Push. Баннер отображается, а затем сразу же "отображается снова". Это приводит к этому неустойчивому пользовательскому интерфейсу, показанному в gif. Кажется, что баннер принят дважды.
Протестировано с использованием iOS 9.0.2.
Я не помню, как это поведение наблюдается в других приложениях, которые отправляют мне Push Notifications. Я делаю что-то неправильно, что может привести к тому, что баннер будет показывать дважды?
Radar:
Engineering определила, что ваш отчет об ошибке (23133694) является дубликатом другой проблемы (23130766) и будет закрыт.
Ответы
Ответ 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 и случайно создал две подписки, которые отслеживали один и тот же тип записи!