Phonegap - обработка push-уведомлений после того, как я покинул область индекса с помощью window.location.replace

я используюPhoneGap 4.2 (на основе Cordova 5.0) для создания кроссплатформенного приложения.

Приложение для Android и iOS.

Когда пользователь загружает приложение, он находится вindex.html, Оттуда у меня есть доступ к различным методам JavaScript, необработанным, на основе Cordova, и я случайно используюJQuery v1.11.1.

Когда приложение получает push-уведомление, оно должно иметь доступ кlocation свойство в полезной нагрузке и оттуда доступ к указанному месту назначения (например,https://stackoverflow.com/questions/ask«). Я делаю это. Затем пользователь должен быть перенаправлен на конкретное место, которое является веб-сайтом (без открытия браузера,т.е., оставляя приложение),или же включить сайт в индексный файл и заменить его содержимое.

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

Прочитав несколько статей (antonylees, Переполнение стекаи т. д.) Я пришел к решению простого использованияwindow.location.replace(externalUrl); для доступа к сайту. Работает отлично. (Обратите внимание, что создание сайта и включение его в мое приложение не вариант, так как он слишком тяжелый).

Все идет нормально

Я используюPushPlugin Плагин Cordova для обработки Push-уведомлений. Все настроено и работает; Я получаю push-уведомления.

Чтобы быть в состоянии справиться (то есть процесс) push-уведомления, которые я зарегистрировалonNotification слушатели событий, как для Android, так и для iOS.

Существует три сценария, которые я должен учитывать при обработке поступающего push-уведомления:

Прибытие Push → Пользователь нажимает уведомление → Приложение запускается с «холодного старта» (приложение не запущено) → Полезная нагрузка обрабатывается с помощью метода «onNotification», доступного в файле индекса, и пользователь перенаправляется в местоположение, указанное в push-уведомлении. полезная нагрузкаНажатие поступает → Пользователь нажимает уведомление → Приложение запускается в фоновом режиме (то есть работает), но пользователь еще не покинул индексный файл → Полезная нагрузка обрабатывается с помощью метода `onNotification`, доступного в индексном файле, и пользователь перенаправляется в местоположение, указанное в полезной нагрузке push-уведомленияНажатие прибывает → Пользователь нажимает уведомление → Приложение запускается в фоновом режиме (то есть работает), но пользователь уже покинул индексный файл, будучи уже перенаправленным в прошлом на веб-сайт, и больше не имеет доступа к методу `onNotification` потому что он не существует на новом сайте → Пользователь остается именно там, где он был, и не был перенаправлен на новое место

Моя проблема

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

В сценарии 3, однако, пользователь был перенаправлен из файла индекса (и на внешний веб-сайт) и технически в область действия индекса, поэтому у меня больше нет доступа к методам, которые были доступны в файле индекса, в том числеonNotification методы.

Из-за этого я не могу перенаправить пользователя в новое место, когда он получил push-уведомление.

Итак, мой вопрос:

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

Спасибо.

редактировать

Мне было указано, чтоInAppBrowser Плагин может предложить то, что я ищу, предоставляя функцию обратного вызова или внедрение кода в браузер. Я попробую это сегодня вечером и вернусь с отчетом, а пока я буду признателен за ответы SO, если у вас получится лучше понять ситуацию :)

Ответы на вопрос(1)

Ваш ответ на вопрос