接入华为推送的过程中,按照华为官方的文档,一共由两种形式打开app特定页面,intent和action的方式,其中支持action参数需要EMUI 10.0.0及以上,推送服务App版本为10.1.0及以上。为了向下兼容,所以我采用了intent的形式,但是发现安卓开发反映无法获取到消息体中data的参数(data参数需要推送服务APP10.0以上)。
在我最开始的开发中服务器下发消息的结构参照

Array
(
    [validate_only] => 
    [message] => Array
        (
            [token] => Array
                (
                    [0] => 123456789
                )

            [data] => {"time_to_live":30,"push_title":"\u89c6\u9891\u901a\u8baf\u8bf7\u6c42","push_content":"\u95e8\u7981\u53d1\u6765\u89c6\u9891\u6d4b\u8bd5\u8bf7\u6c42","push_type":"4","jump_id":"1703","current_time":1604648664,"dev_id":"1703","card_id":"1282542","dev_code":"440499043001"}
            [android] => Array
                (
                    [notification] => Array
                        (
                            [title] => 视频通讯请求
                            [body] => 视频测试请求
                            [click_action] => Array
                                (
                                    [type] => 1
                                    [intent] => intent://com.zh.community/deeplink?#Intent;scheme=pushscheme;launchFlags=0x10000000;S.content=msg;end
                                )

                        )

                    [data] => {"time_to_live":30,"push_title":"\u89c6\u9891\u901a\u8baf\u8bf7\u6c42","push_content":"\u95e8\u7981\u53d1\u6765\u89c6\u9891\u6d4b\u8bd5\u8bf7\u6c42","push_type":"4","jump_id":"1703","current_time":1604648664}
                )

        )

)

后来发现由于系统版本的问题,安卓无法读取到data里面的参数,经过反复研究文档,发现可以采用str-replace函数替换intenturl中的msg的形式实现安卓读取参数。

 $intentUrl = str_replace('msg',$this->push_value,$intent);

原有的intenturl

intent://com.zh.community/deeplink?#Intent;scheme=pushscheme;launchFlags=0x10000000;S.content=msg;end

最后intenturl变成了

[intent] => intent://com.zh.community/deeplink?#Intent;scheme=pushscheme;launchFlags=0x10000000;S.content={"time_to_live":30,"push_title":"\u89c6\u9891\u901a\u8baf\u8bf7\u6c42","push_content":"\u95e8\u7981\u53d1\u6765\u89c6\u9891\u6d4b\u8bd5\u8bf7\u6c42","push_type":"4","jump_id":"1703","current_time":1604648981};end

这样就解决了安卓获取后台动态的参数的问题

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐