Автоинкрементный значок Push-уведомления

Принятый ответ не работал для меня внутри скрипта содержимого Firefox 6.0 Extension (Addon-SDK 1.0): Firefox выполняет сценарий содержимого в каждом: окно верхнего уровня и во всех iframe.

Внутри скрипта содержимого я получаю следующие результаты:

 (window !== window.top) : false 
 (window.self !== window.top) : true

Странная вещь в этом выходе заключается в том, что она всегда одинакова независимо от того, выполняется ли код внутри iframe или Окно верхнего уровня.

С другой стороны, Google Chrome, похоже, выполнил мой сценарий контента только один раз в окне верхнего уровня, поэтому вышеупомянутое не будет работать вообще.

Что, наконец, сработало для меня в сценарии содержимого в обоих браузерах, это:

 console.log(window.frames.length + ':' + parent.frames.length);

Без iframe это печатает 0:0, в окне верхнего уровня, содержащем один кадр, он печатает 1:1, а в единственный iframe документа, который он печатает 0:1.

Это позволяет моему расширению определять в обоих браузерах, если есть какие-либо фреймы, присутствующие, а также в Firefox, если он запускается внутри одного из фреймов.

24
задан Jim Puls 21 December 2009 в 21:10
поделиться

2 ответа

Нет, вам придется отслеживать это на стороне сервера. Если вы не укажете какое-либо значение для значка, он будет полностью удален.

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

ОБНОВЛЕНИЕ, март 2014 г .: См. Комментарии для возможного обновления. Я не делал толчков несколько лет, поэтому не смог проверить это сам.

29
ответ дан 28 November 2019 в 21:53
поделиться

Это вроде возможно, но есть компромисс.

Вы всегда можете отправить непрочитанное общее значение в качестве дополнительного значения JSON как части полезной нагрузки push (push игнорирует ключи it не понимает явно). Как только пользователь откроет приложение, прочтите значение и настройте значок самостоятельно программно с помощью свойства UIApplication applicationIconBadgeNumber .

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

1
ответ дан 28 November 2019 в 21:53
поделиться