Регистрация 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, больше не будет существовать.
У вас есть два варианта.
- Переключитесь на SPA, где у вас есть только index.html, и вы загружаете только содержимое nextpage.html, но не переходите к нему с помощью
location.href
- Выполните весь код в каждом файле.html. Если у вас есть файл pushHandler.js (пример), в котором вы инициируете push-запрос и регистрируете прослушиватели, свяжите его с любым.html, чтобы он выполнялся снова при изменении страницы.
Запрос AJAX вместо изменения location.href был бы действительно лучше по трем причинам: 1. Скорость 2. Нет перезагрузки (не нужно каждый раз перезагружать каждый ресурс) 3. Глобальная область действия - в вашем случае регистрация push-уведомлений, не нужно перезапускать каждое изменение страницы.
Для этого вы можете создать элемент DOM, а затем загрузить в него содержимое других страниц. Здесь вы найдете некоторые доказательства концепции. Это в основном все вокруг управления XMLHttpRequest и помещения результата в элемент DOM.