Приложение iOS отсутствует в центре уведомлений
Проблема:
Приложение не появляется в центре уведомлений и не может получать push-уведомления сразу после завершения установки, а приложение регистрирует push-уведомления через registerForRemoteNotificationTypes:
.
Подробнее:
- Приложение обычно появляется в центре уведомлений после перезапуска устройства, после чего все работает нормально.
- Иногда приложение появляется в центре уведомлений сразу после инсталляции и регистрации для APN (я все еще не могу подтвердить это, но я думаю, что наткнулся на такие ситуации).
- Приложение вызывает метод
registerForRemoteNotificationTypes
каждый раз, когда пользователь входит в систему и каждый раз, когда пользователь выходит из строя соответственно с помощью бит-масок (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound
) и UIRemoteNotificationTypeNone
.
-
enabledRemoteNotificationTypes
возвращает правильные значения.
- Первоначально я использовал метод
unregisterForRemoteNotifications
при выходе из системы, но я изменил его на registerForRemoteNotificationTypes:UIRemoteNotificationTypeNone
из-за подозрений, что это может вызвать проблему.
- Эта проблема возникает как в разработке, так и в adhoc-сборках и независимо от того, установлено ли приложение через xcode или itunes.
Любые мысли и советы будут высоко оценены. Спасибо!
Ответы
Ответ 1
Это происходило с некоторыми из моих устройств. (Не отображается в центре уведомлений и не получает нажатия).
Удалось выполнить это:
- Удалить приложение
- Удалите все необходимые профили с устройства. "Настройки" > "Основные" > "Профили", затем коснитесь каждого из профилей Provisioning Profiles, связанных с вашим приложением, затем нажмите "Удалить". На iOS 8/9, где настройка больше не существует, используйте XCode > Windows > Устройствa > выберите устройство > Показать профили подготовки... > затем удалите профиль (ы)
- Выключите телефон, затем снова включите.
- Дайте 5 минут
- Переустановите приложение, профиль Provisioning Profile должен быть установлен автоматически.
- Запустите приложение и зарегистрируйтесь и напишите.
- Повторное тестирование push-уведомлений
Для нас это не сработало сразу, поэтому дайте ему несколько минут.
Ответ 2
Возможно, существует проблема с регистрацией и отмена регистрации приложения при регистрации/выходе из системы, из документации Apple:
Приложение должно регистрироваться при каждом запуске и предоставлять своему провайдеру текущий токен.
И не уверены в том, что они не регистрируются, они не упоминают об отмене регистрации в своем руководстве по программированию, возможно, приложение никогда не должно отменить регистрацию, и сервер должен обработать это, отправив или не отправив push-уведомления в зависимости от того, зарегистрирован пользователь или нет. Вот как я это делал в прошлом и никогда не испытывал этой проблемы, поэтому, возможно, этот подход тоже работает для вас.
Ответ 3
Ну, у меня также есть эта проблема, я обнаружил, что, поскольку приложение использовало unregisterForRemoteNotifications перед деинсталляцией при предыдущей установке.
И, кроме того, если приложение будет установлено снова и войдите в систему для регистрации для удаленных уведомлений, эта проблема произойдет.
Это произошло и при первой установке (установленной после reset вашего устройства iOS). если вы используете функцию unregisterForRemoteNotifications перед входом в систему, а затем зарегистрируйтесь при операции входа в систему, эта проблема произойдет.
Как только эта проблема возникла, вам необходимо перезапустить устройство iOS.
Для unregisterForRemoteNotifications мы не смогли остановить эту проблему, но мы можем уменьшить вероятность возникновения проблемы, метод:
Если токен устройства не удалялся из поставщика при предыдущей установке, используйте unregisterForRemoteNotifications при текущей установке перед входом в систему;
В противном случае вы никогда не должны использовать unregisterForRemoteNotifications.