Узнайте, было ли отклонено уведомление iOS

Есть ли способ узнать, было ли отклонено локальное уведомление из Центра уведомлений (например, нажатием кнопки x)?

Можно ли получить список всех уведомлений, видимых в данный момент в Центре уведомлений?


person Andrei Ardelean    schedule 10.08.2015    source источник


Ответы (1)


Нет, невозможно получить список уведомлений от любого из API от Apple. И никакой обратной связи от проигнорированных/закрытых уведомлений нет.

Если вы хотите реализовать подобную логику, я бы предложил построить такую ​​логику на основе ваших собственных серверов.

  1. Когда вы отправляете уведомление, вы сохраняете информацию об этом на стороне сервера.
  2. Когда вы открываете приложение из уведомления (о том, что это выполнимо), вы отправляете информацию на сервер.
  3. Когда вы открываете приложение не из уведомления, вы можете иметь логику на стороне сервера, проверяющую, были ли какие-либо уведомления, которые не были подтверждены с момента последнего открытия приложения.

Имейте в виду, что уведомления не всегда доставляются — нет гарантии, что пользователь их получит, и если для вашего приложения отключены уведомления — все уведомления будут рассматриваться как проигнорированные. Чтобы улучшить эту логику, вы можете захотеть отправить информацию о правах пользователя на уведомления на ваши серверы - что еще не гарантирует, что он не отключил их в настройках :(

Короче говоря, никогда не создавайте какие-либо основные функции вашего приложения на основе уведомлений.

person Grzegorz Krukowski    schedule 10.08.2015
comment
Однако это не точно - потому что не все уведомления, отправленные с сервера, будут получены телефоном (например, если телефон выключен, он не будет доставлен), и сервер в этой ситуации не получит ответ, что push так и не был доставлен. - person Gruntcakes; 11.08.2015
comment
Это правда @MartinH, но нет лучшего способа реализовать что-то близкое к этому. Если он хочет отслеживать, что люди не видели или проигнорировали уведомление - должно быть достаточно хорошо. Я отредактирую ответ, чтобы уточнить это - person Grzegorz Krukowski; 11.08.2015