Подтвердить что ты не робот

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

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

Приложение предназначено для Android и iOS.

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

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

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

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

До сих пор так хорошо

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

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

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

  • Push arrives → User presses the notification → App is started from a coldstart (the app wasn't running) → The payload is processed with the `onNotification` method available in the index file and the user is redirected to location specified in the push notification payload
  • Push arrives → User presses the notification → App is started while in background (i.e. running), but the user has not yet left the index file → The payload is processed with the `onNotification` method available in the index file and the user is redirected to location specified in the push notification payload
  • Push arrives → User presses the notification → App is started while in background (i.e. running), but the user has already left the index file, by being already redirected in the past to the website, and has no longer access the `onNotification` method because it doesn't exist in the new website → User stays exactly where he was and has not been redirected to a new location

Моя проблема

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

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

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

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

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

Спасибо.

Edit

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

4b9b3361

Ответ 1

Используя метод InAppBrowser .open(url, '_blank', args), я решил проблему.

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