Цель содержимого, доступного в push-уведомлении Json?

Цель состоит в том, чтобы отправить push-уведомление только со значением значка и ничем другим (без баннера).

Я интегрировал parse sdk для тестирования push-уведомлений и отправки этого push-уведомления.

{
"alert" :"",
"badge" :"787",
"Content-available" : "1",
"sound" : ""
}

Таким образом, push-уведомление отправляется, когда приложение находится в фоновом режиме, на переднем плане и когда приложение убито. Цель стереть некоторые данные о приходе push-уведомления с значком клапана 78 удалась. Я отправляю то же уведомление с удаленным «Доступным контентом»: «1», но все работает нормально, как и раньше.

Насколько я понимаю, «Доступный контент» заключается в том, что установка значения 1 позволит отправлять push-уведомления без значения предупреждения.

Итак, я запутался или мне чего-то не хватает, чтобы узнать значение «Контент доступен» в этом push-уведомлении JSon.

Спасибо


person Nandkishor Chaudhari    schedule 05.01.2015    source источник
comment
См. также здесь. Для беззвучных уведомлений ДОЛЖЕН всегда устанавливаться значение 1. Для удаленных уведомлений он вам не нужен... если только вы не хотите, чтобы ваше удаленное уведомление также загружало что-то в фоновом режиме.   -  person Honey    schedule 06.06.2017


Ответы (3)


Если вы предоставите этому ключу значение 1 (если пользователь открывает ваше приложение, оно находится в фоновом режиме или возобновлено), application:didReceiveRemoteNotification:fetchCompletionHandler:.

Согласно Программирование RemoteNotifications content-available определение

Укажите для этого ключа значение 1, чтобы указать, что новый контент доступен. Включение этого ключа и значения означает, что когда ваше приложение запускается в фоновом режиме или возобновляется, вызывается application:didReceiveRemoteNotification:fetchCompletionHandler:.

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

person Midhun MP    schedule 05.01.2015
comment
Мое приложение не является приложением для газетного киоска, и могу ли я реализовать эту функцию для своего приложения? Спасибо @Midhun (извините, мне нравится ваш ответ, но я не могу проголосовать из-за низких баллов) - person Nandkishor Chaudhari; 05.01.2015
comment
@NandkishorChaudhari: Это для всех приложений, а не для приложения Newsstand, у приложения Newsstand есть особый случай. - person Midhun MP; 05.01.2015
comment
@NandkishorChaudhari: я добавил больше информации в свой ответ, надеюсь, это поможет вам - person Midhun MP; 05.01.2015
comment
Поэтому всегда полезно включать @Content- available в push-уведомление JSON. Есть ли у него недостатки? @Спасибо еще раз - person Nandkishor Chaudhari; 05.01.2015
comment
@NandkishorChaudhari: Если вам нужно выполнить какую-либо загрузку или какой-либо процесс при получении уведомления, лучше включить этот ключ, иначе не включайте его. - person Midhun MP; 05.01.2015
comment
Спасибо @Midhun, я хочу, чтобы push-уведомления прослушивались, даже когда приложение закрыто или находится в фоновом режиме, поэтому в этом случае доступный контент играет хорошую роль. Также команда iTunes отклонит приложение для push-уведомления только со значением значка и без предупреждения или звука или из-за цели использования conten0available? Пожалуйста, предложите по этому поводу. - person Nandkishor Chaudhari; 05.01.2015
comment
Поля Alert и Sound необязательны. Для использования контента вам необходимо проверить документацию. Я не думаю, что они отклонят ваше приложение из-за этого. - person Midhun MP; 05.01.2015
comment
Что произойдет, если приложение находится в прекращенном состоянии? Мне нужно вызвать application:didReceiveRemoteNotification:fetchCompletionHandler:, когда приложение находится в прекращенном состоянии. - person Vinoth Vino; 18.12.2018
comment
@VinothVino Да, этот метод будет вызываться, даже если ваше приложение будет закрыто. - person Midhun MP; 19.12.2018

TL;DR:

  • "content-available" : 0: значение по умолчанию; ваше приложение не будет уведомлено о доставке уведомления, если приложение не находится на переднем плане.
  • "content-available" : 1: ваше приложение будет уведомлено о доставке уведомления, если оно находится на переднем плане или в фоновом режиме (приложение будет разбужено).

Единственный раз, когда вам нужно использовать "content-available" : 1, это для фоновые уведомления об обновлениях:

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

Однако это НЕ всегда означает, что это уведомление будет невидимым для пользователя:

Если вместе с фоновым обновлением имеются видимые пользователю обновления, вы можете установить клавиши оповещения, звука или значка в словаре aps, если это необходимо.

По умолчанию для "content-available" установлено значение 0. Эти регулярные уведомления не сразу уведомляют приложение, ЕСЛИ приложение не находится на переднем плане. Вместо этого эти регулярные уведомления уведомляют приложение когда пользователь нажимает на них или выбирает вариант с помощью Haptic Touch в уведомлении.

Уведомления об обновлениях в фоновом режиме доставляются по адресу application(_:didReceiveRemoteNotification:fetchCompletionHandler:):

В отличие от метода application(_:didReceiveRemoteNotification:), который вызывается только тогда, когда ваше приложение работает на переднем плане, система вызывает этот метод, когда ваше приложение работает на переднем плане или в фоновом режиме.

Примечание. Существует ключевое различие между вашим приложением и устройством: устройство покажет уведомление, если полезная нагрузка запрашивает его отображение, но это не всегда означает, что ваше приложение будет уведомлено о доставке этого уведомления. (иначе код вашего приложения будет работать). Вот тут-то и появляется "content-available": "1": ваше приложение всегда будет получать уведомления, если только оно не было остановлено.

person kgaidis    schedule 18.01.2021

Краткий ответ: я просто использовал content_available : 1 или content_available : true для возобновления фонового режима/режима выхода в iOS. Обратите внимание, что в моем случае это подчеркивание, а не дефис.

В моем конкретном сценарии мое приложение было создано в среде реагирования, и я использовал https://rnfirebase.io для push-уведомлений.

Вот полное объяснение этого: https://rnfirebase.io/messaging/usage#data-only-messages

в IOS content_available : 1

эквивалент в Android приоритет: "высокий"

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

Вот пример отправки push-уведомления с помощью CURL:

#curl -H Content-type: application/json -H Authorization:key=#MyAuthHashCode# -X POST -d '{ to: /topics/#thetopicnumber#,notification: { title: msg для темы, body: bodytext, content_available : true }}' https://fcm.googleapis.com/fcm/send

person Cassio Seffrin    schedule 11.08.2020