【问题标题】:Huawei Push Kit, payload sent does trigger onMessageReceive华为Push Kit,payload发送确实触发onMessageReceive
【发布时间】:2022-11-09 06:03:39
【问题描述】:

根据我在这里遵循的文档documentation

我发送的有效载荷不会触发 onMessageReceived 方法让我解析它,而是自动触发华为通知中心的通知。

这是我发送的示例有效负载,我已经包含了foreground_show 并将其设置为 false,如网络中所述:

{
    "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)

    }
}

我已经包含了前台显示:false,它不会触发 onMessageReceived,除非我只在有效负载中发送数据,那么它将触发 onMessageReceived。

那么是否无法发送第一个有效负载中所示的完整有效负载并触发 onMessageReceived 以便我可以处理有效负载?如果我的方法错误,请告诉我

【问题讨论】:

    标签: android kotlin huawei-push-notification


    【解决方案1】:

    在您的请求负载中,您已将“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 日志。

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多