Регистрация push-уведомлений IOS в Telerik Appbuilder

Я зарегистрировал свое приложение Telerik Appbuilder (cordova) для Push-уведомлений. Все работает нормально, за исключением того, что когда пользователь находится внутри приложения, он не получает push-уведомления.

Он работает нормально, пока он находится на 1 странице, которая регистрирует его толчок, т.е.

var registerPush = function (user, callback) {
    $(".modal-loader").show();
    document.addEventListener("deviceready", function () {
        var el = new Everlive('m4yh8cw6ei7xxwio');

        var pushSettings = {
            iOS: {
                badge: true,
                sound: true,
                alert: true,
                clearBadge: true
            },
            notificationCallbackIOS: function (e) {             
                navigator.notification.alert(e.alert, function () { }, "Alert", "Ok");
            },
            customParameters: {
                login: user
            }

        };

        el.push.register(
            pushSettings,
            function () {
                $(".modal-loader").hide();
                callback();
            }
            ,
            function errorCallback(error) {
                // This callback will be called any errors occurred during the device
                // registration process
                console.log("error registering push");
                console.log(data);
            }
        );
    }, false);
}

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

 location.href= nextpage.html 

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

2 ответа

Решение

Если вы измените страницу, как это location.href= nextpage.html, тогда это другая страница, веб-представление перезагружается, и весь код, который вы выполнили в index.html, больше не будет существовать.

У вас есть два варианта.

  1. Переключитесь на SPA, где у вас есть только index.html, и вы загружаете только содержимое nextpage.html, но не переходите к нему с помощью location.href
  2. Выполните весь код в каждом файле.html. Если у вас есть файл pushHandler.js (пример), в котором вы инициируете push-запрос и регистрируете прослушиватели, свяжите его с любым.html, чтобы он выполнялся снова при изменении страницы.

Запрос AJAX вместо изменения location.href был бы действительно лучше по трем причинам: 1. Скорость 2. Нет перезагрузки (не нужно каждый раз перезагружать каждый ресурс) 3. Глобальная область действия - в вашем случае регистрация push-уведомлений, не нужно перезапускать каждое изменение страницы.

Для этого вы можете создать элемент DOM, а затем загрузить в него содержимое других страниц. Здесь вы найдете некоторые доказательства концепции. Это в основном все вокруг управления XMLHttpRequest и помещения результата в элемент DOM.

Другие вопросы по тегам