HmsMessageService onMessageReceived未调用

问题描述

我实施了华为Push Kit。在应用启动后会调用onNewToken。我想使用onMessageReceived。

当我向客户端发送推送通知时,推送通知显示在android上,但不会触发onMessageReceived。

我在Android清单中添加了以下代码

let foo: Vec<Vec<u8>> = Vec::new();

// Allocate Vec of references to slices
let tmp: Vec<&[u8]> = foo.iter().map(|x| &x[..]).collect();

// Take slice of temporary Vec
bar(&tmp[..]);

我的简单课堂是;

    <service
        android:name=".HmsMessageSrv"
        android:enabled="true" android:exported="false">
        <intent-filter>
            <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
        </intent-filter>
    </service>

    <Meta-data
        android:name="push_kit_auto_init_enabled"
        android:value="true" />

收到推送通知后如何在MessageReceived函数上触发它。

解决方法

onMessageReceived功能仅用于接收数据消息。因此,推送通知不会触发onMessageRecevied。您可以使用数据消息并自己创建通知。您可以通过this链接访问示例代码。

,

直接显示通知消息,因此不会调用onMessageReceived方法。

仅当接收到数据消息时才调用该方法。有关详细信息,请参阅Receiving Data Messages。但是,杀死应用程序进程后,数据消息将无法到达您的应用程序。要在应用进程终止后显示通知消息,或在应用运行时通过onMessageReceived接收数据消息,请参阅Notification Message Display on UI

,

当应用在后台运行或被杀死时,您可以从推送通知中获取通知消息。为此,您需要在通知正文中将front_show设置为false。

如果该值为true或未设置,则NC将显示您的消息。如果该值为false,则您的消息将传输到您的应用程序,而不是由NC显示。

有关更多详细信息,请参阅:https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/android-fgrd-show-0000001050040126-V5