5

Приложение Gmail для iOS может получать push-уведомления, пока приложение не работает (как это делает большинство приложений для электронной почты).Отключение уведомлений iOS push удаленно

Тем не менее, он также может очищать все уведомления Gmail от устройства, когда непрочитанное количество входящих сообщений пользователя становится 0, , даже если приложение не работает.

Ниже приведен пример последовательности: 1. Получите новое электронное письмо в своей учетной записи Gmail. 2. Устройство iOS отображает уведомление для нового сообщения. 3. Перейдите на веб-сайт Gmail и откройте сообщение (обозначив сообщение как «прочитанное»). 4. Уведомление на устройстве iOS отклоняется.

Примечание: [[UIApplication sharedApplication] scheduledLocalNotifications] предоставляет только локальные уведомления, то есть те, которые были созданы в самом приложении iOS.

Что касается описания Apple documentation for APNS, то нет никакого способа для remotely launch an app into the background, и нет способа отклонить удаленное уведомление.

Итак, как приложение iOS Gmail делает эту работу?

ответ

5

Я смог очистить все свои push-уведомления, нажав эту полезную нагрузку, используя Parse. Я предполагаю, что до тех пор, пока вы поставляете content-available и badge, вы должны быть в состоянии сделать то же самое. Мне не нужно было писать какой-либо другой код в AppDelegate, но мне нужно было включить push-уведомления в целевом объекте capabilities.

curl -X POST \ 
-H "X-Parse-Application-Id: xxxxxxxxxxx" \ 
-H "X-Parse-REST-API-Key: xxxxxxxxxx" \ 
-H "Content-Type: application/json" \ 
-d '{ 
     "data": { 
     "content-available": "1", 
     "badge":"0", 
     "sound":"" 
     }, 
     "where": {"something":"something_else"} 
    }' \ 
https://api.parse.com/1/push 
+0

Вы правы - важная часть состоит в том, чтобы установить значок на 0, который очищает все удаленные уведомления. – ebi

0

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

Session 713 at WWDC 2014 описал это подробно:

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

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

+0

Функция бесшумного нажатия, т. Е.флаг «content-available», только доставляет уведомление в приложение, если оно уже запущено, либо на переднем плане, либо на заднем плане. Однако он не будет запускать приложение в ответ на уведомление. – ebi

0

Попробуйте это, если номер жетона уже установлен,

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

или попробовать это, если не установлен

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]; 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 

Это очистит ваши уведомления толчка и местного уведомления.

+0

Примечание - это очистит все уведомления, как удаленные, так и локальные. – ebi