全世界最坑的就是华为推送的SDK,不管你信不信,反正,我是信了!(我花了大半天的时间集成华为推送,用了不到20分钟,集成了Vivo推送.)
请注意,在确认照官方文档配置无误后,仍然收不到onEvent回调的,请看这里:
这里有两个Receiver(官方文档只有一个,另一个没有给名字,说什么不建议,但不建议,onPushMsg又不会调用,真是狗血!)。
第一个用于接收透传、Token。
第二个用于接收通知栏的点击事件。
为什么这样设计,我看不懂!
(xxx 是包名)
<receiver android:name="xxx.push.HWPushReceiver"
android:permission="xxx.permission.PROCESS_PUSH_MSG">
<intent-filter>
<!-- 必须,用于接收token -->
<action android:name="com.huawei.android.push.intent.REGISTRATION"/>
<!-- 必须, 用于接收透传消息 -->
<action android:name="com.huawei.android.push.intent.RECEIVE"/>
<!-- 必须, 用于接收通知栏消息点击事件 此事件不需要开发者处理,只需注册就可以-->
<action android:name="com.huawei.intent.action.PUSH_DELAY_NOTIFY"/>
</intent-filter>
</receiver>
<receiver android:name="xxx.push.HWNotifyReceiver">
<intent-filter>
<!-- 用于点击通知栏或通知栏上的按钮后触发onEvent回调 -->
<action android:name="com.huawei.android.push.intent.CLICK"/>
<!-- 查看push通道是否连接, 不查看则不需要 -->
<action android:name="com.huawei.intent.action.PUSH_STATE"/>
</intent-filter>
</receiver>
HWNotifyReceiver 类的代码
/**
* @Author Lyf
* @CreateTime 2019/04/09 11:38
* @Description 华为的通知栏点击事情
**/
class HWNotifyReceiver : PushReceiver() {
override fun onEvent(context: Context?, event: PushReceiver.Event?, extras: Bundle?) {
super.onEvent(context, event, extras)
LogUtils.log(PUSH_TAG, "收到华为推送消息=" + GsonUtil.parse(extras))
}
}
如果还不行,继续看下面的图片,这里的自定义内容,是必须添加的!至少一对键值对!
服务端的推送,则是对应customize参数。
如果觉得有用,请给个赞! 并**一下华为推送的架构设计者,麻烦让他去吃**!