接入华为推送的隐藏bug---挖坑给安卓
接入华为推送的过程中,按照华为官方的文档,一共由两种形式打开app特定页面,intent和action的方式,其中**支持action参数需要EMUI 10.0.0及以上,推送服务App版本为10.1.0及以上**。为了向下兼容,所以我采用了intent的形式,但是发现安卓开发反映无法获取到消息体中data的参数(data参数需要推送服务APP10.0以上)。在我最开始的开发中服务器下发消息的结构
·
接入华为推送的过程中,按照华为官方的文档,一共由两种形式打开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
这样就解决了安卓获取后台动态的参数的问题
更多推荐
已为社区贡献1条内容
所有评论(0)