Почему мое уведомление не запускается в Кордове? - PullRequest
1 голос
/ 12 октября 2019

Я публикую уведомление от Amazon SNS и правильно его получаю на моем устройстве.

Вот пример сообщения, которое я отправляю:

{
  "APNS_SANDBOX": "{\"aps\":{\"alert\":{\"title\":\"A short string describing the purpose of the notification\",\"body\":\"The text of the alert message\",\"launch-image\":\"The filename of an image file in the app bundle, with or without the filename extension. The image is used as the launch image when users tap the action button or move the action slider\"},\"badge\":5,\"content-available\":\"1\",\"category\":\"identifier\",\"thread-id\":\"id\",\"sound\":\"default\"},\"notId\":1,\"custom_key1\":\"value1\",\"custom_key2\":\"value2\"}"
}

Однако, когда я открывал уведомление на своем телефоне, я ожидал, что событие notification сработает, и моя цель здесьотправить пользователя a на URL, когда уведомление открывается с чем-то вроде: window.location='data.some_link_to_notification'; Я удалил все это и просто добавил предупреждение, чтобы увидеть, вызывается ли оно, но, похоже, оно не было. Вот мой index.js файл.

var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },

    onDeviceReady: function() {
      StatusBar.backgroundColorByHexString('#FFFFFF');

      var push = PushNotification.init({
        android: {},
        browser: {},
        ios: {
          alert: "true",
          badge: "true",
          sound: "true"
        },
        windows: {}
      });

      push.on('notification', function (data) {
        alert("notification event");
      });

      push.on('error', function (err) {
        console.log(err)
        alert('Event=error, message=' + err.message)
      });

      push.on('registration', function (data) {
        console.dir(data)
        console.log('registrationId:' + data.registrationId)

       window.localStorage.setItem("regId", data.registrationId);
      });

     cordova.InAppBrowser.open('app_url', '_self');
    }
};

app.initialize();

1 Ответ

2 голосов
/ 18 октября 2019

Как вы сказали в своем комментарии, ваша проблема заключается в загрузке удаленного URL с cordova.InAppBrowser.open('app_url', '_self');

при переходе на другую страницу (не имеет значения, удаленная это или локальная страница), весь код javascript теряется, поэтому, когда приходит уведомление, событие уведомления запускается, но прослушивания ничего не остается.

И поскольку это удаленная страница, у вас есть другая проблема, ни cordova.js, ни какой-либо из плагинов javascript онлайн, если вы хотите, чтобы плагины Cordova работали с удаленного URL, вам нужно загрузить iOS cordova. js, папка плагинов и еще несколько файлов (если вы откроете проект Xcode на платформах / ios /, вы увидите желтую папку «Stagin» с синей папкой «www» внутри, вы должны загрузить весь этот код в свойСервер. Имейте в виду, что код только для iOS, поэтому, если вы хотите сделать то же самое для Android, вы должны использовать разные URL-адреса на вашем сервере для каждого из них. И удалить cordova.InAppBrowser.open('app_url', '_self'); из удаленной версии, иначевызвать бесконечный цикл.

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

...