z***@gmail.com
z***@gmail.com
  • 发布:2016-08-23 23:58
  • 更新:2017-01-19 10:22
  • 阅读:1774

求教,在安卓中使用透传推送调试基座上可以触发click事件,打包后不行

分类:HTML5+

在安卓的基座上调试,使用透传推送,点击消息后会报“ Uncaught TypeError: Cannot read property 'runtime' of undefined” 错误,但是可以触发click事件,打包后则无法触发click事件,怀疑和报错有关,
透传数据如果不符合{title:'标题',content:'内容',payload:'数据'}格式,可以触发receive事件,click中没有写逻辑,直接alert()也会报错,就是点击通知的瞬间报错,不知如何排错了,请教大家,谁能帮忙分析下。

补充:重新新建了一个应用,在基座调试推送不报错,可推送,可触发click,打包后就无法触发click了(所以应该不是上面描述的报错导致的),具体情况是:在运行中点击消息中心的消息无法触发click,在后台时点击消息无法触发click,在应用退出时(连击back退出app)时点击消息中心则可以触发click,求帮助啊,真的万分感激;

再次补充:由于项目紧急,没法一一排查了,现在只能是对iOS使用apns推送,效果挺好的,送达率很高,对于安卓这个后儿子就只能曲线救国了,同时发两次透传消息,一次是符合{title:'标题',content:'内容',payload:'数据'}格式的,这样可以在消息中心显示,同时发一个不符合的,这样就触发了receive事件,总体看来效果是可以接受的,在运行中、完全退出、后台中这三种情况都可以触发消息提示并通过receive事件进行逻辑处理,勉强能接受吧,但是还是希望能有一些为什么打包后无法触发click事件的线索,还是十分希望开发组的成员们给予我一些帮助,万分感谢。

2016-08-23 23:58 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

发一个不符合格式的透传消息,客户端再进行处理,需要提醒就创建一条本地消息进行提醒,该条信息点击可触发click事件
以上是我现在的处理办法,可以一试,有更好办法可以分享一下
顺便说一下,还是会出现那个runtime of undefine错误,但不影响实现效果

var _monitorPushMessageCallBack = null;  

    /**  
     * @description 监视推送消息  
     */  
    ns.monitorPushMessage = function(callback) {  
        _monitorPushMessageCallBack = callback || $.noop;  
        if($.os.plus) {  
            plus.push.addEventListener("receive", function(msg) {  
                handleMsgReceiveEvent(msg);  
            }, false);  
            plus.push.addEventListener("click", function(msg) {  
                handleMsgClickEvent(msg);  
            }, false);  
        }  
    }  

    /**  
     * @description 处理推送消息接收事件  
     * @param {Object} msg  
     */  
    function handleMsgReceiveEvent(msg) {  
        console.log("receive push message : " + JSON.stringify(msg));  

        if(msg.aps) { // Apple APNS message  
            console.log("接收到在线APNS消息:");  
        } else {  
            console.log("接收到在线透传消息:");  
            //接收到透传消息后,开始创建本地消息,进行提醒  
            plus.push.createMessage(msg.content, msg.payload, {  
                cover: false  
            });  
        }  

        //其他业务处理  
        if(msg && msg.payload) {  
            if(typeof(msg.payload) == "object") {  

            } else if(typeof(msg.payload) == "string") {  
                var payload = JSON.parse(msg.payload);  
            }  
        }  
    }  

    /**  
     * @description 处理推送消息点击事件  
     * @param {Object} msg  
     */  
    function handleMsgClickEvent(msg) {  
        console.log("click push message : " + JSON.stringify(msg));  
        switch(msg.payload) {  
            case "LocalMSG":  
                console.log("点击本地创建消息启动:");  
                break;  
            default:  
                console.log("点击离线推送消息启动:");  
                var payload = null;  
                //其他业务处理  
                if(msg && msg.payload) {  
                    if(typeof(msg.payload) == "object") {  
                        payload = msg.payload;  
                    } else if(typeof(msg.payload) == "string") {  
                        payload = JSON.parse(msg.payload);  
                    }  
                }  
                if(payload){  
                    _monitorPushMessageCallBack(payload);  
                }  

                break;  
        }  
    }
1***@qq.com

1***@qq.com

我也遇到这样的问题,在线打包后无法获取click和receive事件。请问楼主解决了吗

该问题目前已经被锁定, 无法添加新回复