使用 Telerik Appbuilder 注册推送 IOS 通知
Posted
技术标签:
【中文标题】使用 Telerik Appbuilder 注册推送 IOS 通知【英文标题】:Registering Push IOS Notification with Telerik Appbuilder 【发布时间】:2016-03-14 04:36:58 【问题描述】:我已为推送通知注册了 Telerik Appbuilder (cordova) 应用程序。 一切正常,除了当用户在应用程序内时,他没有收到推送通知。
只要他在注册他的推送的 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
然后navigationCallbackIOS 不再工作。我需要在这里实现什么逻辑才能在每个页面上都有一个全局回调?
【问题讨论】:
【参考方案1】:如果你像 location.href= nextpage.html
这样更改页面,那么它是一个不同的页面,webview 被重新加载,你在 index.html 上执行的所有代码都将不再存在。
你有两个选择。
-
切换到 SPA,您只有 index.html,只加载 nextpage.html 的内容,但不要使用
location.href
导航到它
对每个 .html 文件执行所有代码。如果您有一个 pushHandler.js(示例),您可以在其中初始化推送并注册侦听器,请将其链接到任何 .html,以便在您更改页面时再次执行。
【讨论】:
2# 的问题是注册推送需要一段时间,所以如果推送是在注册所需的几秒钟内发送的,那么他们就会错过它。我希望有一种方法可以在每个页面上注册事件,而无需使用服务器更新整个推送设置 也许你可以要求插件作者提供一种创建PushNotification对象的方法,不需要再次调用init,因为注册在第一页已经完成,你只需要设置监听器在其他页面上 没错,这就是我需要的:) 只是一个听众。我会尝试找到开发者【参考方案2】:AJAX 请求而不是 location.href 更改会更好,因为三个动机: 1.速度 2.无需重新加载(不需要每次都重新加载每个资源) 3. 全局范围——在你的情况下是推送通知注册,不需要每次页面更改都重新运行。
为此,您可以创建一个 DOM 元素,然后将其他页面的内容加载到其中。查看here 以获得一些概念证明。它基本上是围绕管理一个 XMLHttpRequest 并将结果放入一个 DOM 元素。
【讨论】:
以上是关于使用 Telerik Appbuilder 注册推送 IOS 通知的主要内容,如果未能解决你的问题,请参考以下文章
ArcGISWeb AppBuilder For ArcGIS 配置使用