Как определить, когда пользователь очищает уведомление вашего приложения

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

Насколько я знаю, когда мое приложение находится в фоновом режиме, поскольку пользователь не нажимает на уведомление в центре уведомлений, мое приложение не знает, что у него есть уведомление. Таким образом, он не может изменить номер значка.

Также из этой темы: Определять, когда пользователь очищает уведомление от центр уведомлений

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

Итак, проблема здесь:
 – Мое приложение находится в фоновом режиме
 – Пользователь получает уведомление, связанное с приложением
 – Приложение добавляет значок с номером 1 к значку приложения
 – Пользователь удаляет уведомление из центра уведомлений
- Приложение никогда не понимает, что уведомление было удалено, поэтому оно может удалить значок !!!

Итак, как другие приложения решают эту проблему? Есть ли какое-нибудь решение для этого?


person Husein Behboudi Rad    schedule 19.05.2015    source источник
comment
Невозможно проверить, удалил ли пользователь уведомления или нет.   -  person Ritu    schedule 19.05.2015
comment
Итак, как я могу удалить значок, когда пользователь удаляет уведомление из центра уведомлений, как это делают другие приложения? может у меня механизм плохой   -  person Husein Behboudi Rad    schedule 19.05.2015
comment
Можете ли вы указать имя приложения, которое очищает номер значка, даже если приложение находится в фоновом режиме?   -  person Ritu    schedule 19.05.2015
comment
когда пользователь удаляет уведомление из Центра уведомлений, это не означает, что ваше приложение вообще обработало уведомление — это означает, что пользователь не хочет видеть ваше уведомление в Центре уведомлений, но ваше приложение все еще имеет новое уведомление; не нужно смешивать эти две вещи вместе.   -  person holex    schedule 19.05.2015
comment
@holex, насколько я знаю, пока пользователь не нажмет на уведомление в центре уведомлений, я не смогу прочитать содержимое уведомления. Итак, когда пользователь удаляет его из центра уведомлений, как я могу получить его содержимое?   -  person Husein Behboudi Rad    schedule 19.05.2015
comment
@HuseinBehbudiRad вы не должны полагаться на то, что пользователь нажимает на ваши уведомления, чтобы получить их содержимое. Подробнее см. в моем ответе.   -  person Greg    schedule 19.05.2015
comment
когда пользователь удаляет уведомление из Центра уведомлений, выходит за рамки фактического приложения; в то же время пользователь видит уведомление (если текст длинный, он видит только частично) и, не взаимодействуя с уведомлением, может удалить его — этот сценарий не равен тому, когда вы обрабатываете уведомление внутри своего приложения как удаление уведомление не означает его активацию.   -  person holex    schedule 19.05.2015


Ответы (2)


Невозможно проверить, когда пользователь очищает уведомления для вашего приложения.

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

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

Вместо этого, когда ваше приложение открывается, оно должно подключаться к вашему серверу для загрузки обновленного контента, после чего вы можете использовать эту полную и точную информацию для обновления значка вашего приложения по мере необходимости. Не пытайтесь получить содержимое из ваших уведомлений.

person Greg    schedule 19.05.2015
comment
Насколько я знаю, когда приложение находится в фоновом режиме, пока пользователь не нажмет на уведомление, я не могу получить их содержимое. Поэтому, когда мой пользователь переходит на мою страницу обмена сообщениями, я не верю, что в приложении есть непрочитанные уведомления или нет; поэтому, если я устанавливаю счетчик значков на ноль, а у пользователя есть некоторые уведомления в панели уведомлений, это не имеет смысла - person Husein Behboudi Rad; 19.05.2015
comment
@HuseinBehbudiRad, вы можете временно установить для него значение 0, пока вы не сможете загрузить контент и определить, каким на самом деле должен быть значок, а затем обновить его. - person Greg; 19.05.2015
comment
Это хорошая идея, не могли бы вы указать, как я могу убедиться, что номер значка должен быть? так что я могу обновить его? Благодарю. - person Husein Behboudi Rad; 19.05.2015
comment
@HuseinBehbudiRad, это зависит от того, как работает ваше приложение. Если у вас есть способ определить, какой новый контент пользователь еще не видел после открытия приложения, используйте его. В противном случае просто установите значок на ноль. - person Greg; 19.05.2015
comment
Можно ли установить значок на ноль, но уведомление остается в центре уведомлений? - person Husein Behboudi Rad; 19.05.2015
comment
@HuseinBehbudiRad, установив значок на ноль, не удалит уведомления из центра уведомлений. Пользователь должен сделать это вручную. Вы не можете контролировать, когда они будут удалены. - person Greg; 19.05.2015
comment
Давайте продолжим обсуждение в чате. - person Husein Behboudi Rad; 19.05.2015
comment
@PartiallyFinite я работаю. я проголосовал за это. Спасибо - person Ashok Londhe; 19.05.2015

К уведомлению можно добавить произвольное действие: «Отметить как прочитанное» или «Удалить». Удалить значок в методе -application:handleActionWithIdentifier:....

Да, это не позволяет вам обнаружить, что пользователь очищает уведомление. Но нет никакого способа сделать это. Поэтому я предлагаю обходной путь для решения этой проблемы.

person kelin    schedule 19.05.2015
comment
Это не относится к случаю, когда пользователь очищает все уведомления приложения с помощью кнопки очистки системы, о чем и спрашивается вопрос. Большинство пользователей никогда не заметят, что вы добавили специальную кнопку удаления, и все равно очистят ее с помощью кнопки очистки системы, поэтому этот ответ не помогает. - person Greg; 19.05.2015
comment
Да, это не совсем то, что хочет автор, но тогда что? - person kelin; 19.05.2015