使用 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 配置使用

Telerik SpellChecker:RadEditor需要在web.config中注册HttpHandler

Telerik RadEditor拼写检查器无法正常工作

Flask_appbuilder的学习:安装

Flask AppBuilder安装

Progress 11.6 程序和appBuilder,编译结果窗口字体太小