kotlin 华为Push Kit,发送的有效负载在MessageReceive上触发

yyyllmsg  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(182)

根据文档,我在此遵循文档
我发送的有效载荷没有触发onMessageReceived方法进行解析,而是自动触发华为通知中心的通知。
这是我发送的一个示例负载,我已经包含了foreground_show并将其设置为false,如Web中所述:

{
    "validate_only":false,
    "message": {
        "notification": {
            "title": "message title",
            "body": "message body"
        },
        "android": {
            "notification": {
                "foreground_show": false,
                "click_action": {
                    "type": 3
                }
            }
        },
        "data":"{'param2':'value1','param3':'value2'}",
        "token": [
            "ABW18Q4Rw5CAB68f9yS_1f859k0s-t3G1aIZheq5l6TedFj_Iold4I6M2EK-pwPTzt6HXxL_"
        ]
    }
}

结果是,它不会触发onMessageReceive函数,但会自动在设备上创建通知。
但如果我从有效负载中删除通知和android,只发送数据,它将成功触发onMessageReceive:

{
    "validate_only": false,
    "message": { 
        "data": "{'param1':'value1','param2':'value2'}",
        "token": [
            "ABW18Q4Rw5CAB68f9yS_1f859k0s-t3G1aIZheq5l6TedFj_Iold4I6M2EK-pwPTzt6HXxL_"
        ]
    }
}

这是我已经覆盖onMessageReceived:

class CustomPushService : HmsMessageService() {
    private val TAG = "PushTokenLog"

    override fun onNewToken(token: String?, bundle: Bundle?) {
        super.onNewToken(token, bundle)
        Log.d(TAG, "receive token:$token")
    }

    override fun onMessageReceived(remoteMessage: RemoteMessage?) {
        Log.d(TAG, "onMessageReceived")
        Log.d(TAG, "onMessageReceived:title:${remoteMessage?.notification?.title}")
        super.onMessageReceived(remoteMessage)

    }
}

我已经包含了foreground_show:false,它不会触发onMessageReceived,除非我只发送负载中的数据,否则它将触发onMessageReceived。
那么,是否不可能发送第一个有效负载中显示的完整有效负载并触发onMessageReceived,以便我可以处理有效负载?如果我的方法错误,请告诉我

6ju8rftf

6ju8rftf1#

在您的请求负载中,您已将“message.android.notification.foreground_show”设置为“false”,这意味着您的应用处于前台,您将在函数onMessageReceived中获取消息数据。请仔细检查您的应用是否处于前台。
您的设备EMUI必须高于EMUI 9.1.0,Push SDK版本必须高于4.0。
类CustomPushService定义很好。
我用你的第一个样本负载测试我的项目。它工作得很好。请看下面的截图。过程进入函数onMessageReceived如下。

有关详细信息,请参阅https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/android-server-dev-0000001050040110https://developer.huawei.com/consumer/en/doc/development/HMSCore-References/https-send-api-0000001050986197
如果您仍有问题,请与我共享logcat日志。

相关问题