HmsMessageService onMessageReceived не вызывается

Я реализовал Huawei Push Kit. onNewToken вызывается после запуска приложения. Я хочу использовать onMessageReceived.

Когда я отправляю push-уведомление клиенту, push-уведомление появляется на android, но onMessageReceived не запускается.

Я добавил ниже коды в Android Manifest

    <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" />

Мой простой класс:

public class HmsMessageSrv extends HmsMessageService {

    @Override
    public void onNewToken(String s) {
        super.onNewToken(s);
        Log.i("HmsMessageService", s);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Log.i("HmsMessageService", "onMessageReceived");
    }
}

Как это может быть вызвано функцией onMessageReceived при получении push-уведомления.

3 ответа

Функция onMessageReceived используется только для получения сообщения с данными. Таким образом, push-уведомления не запускают onMessageRecevied. Вы можете использовать сообщение с данными и создать уведомление самостоятельно. Вы можете получить доступ к образцу кода по этой ссылке.

Вы можете получить уведомление из push-уведомления, когда ваше приложение работает в фоновом режиме или когда оно убито. Для этого вам нужно установить foreground_show как false в теле уведомления.

Если это значение истинно или не установлено, ваше сообщение отображается NC. Если это значение равно false, ваше сообщение передается в ваше приложение вместо отображения NC.

Дополнительные сведения см. На https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/android-fgrd-show-0000001050040126-V5.

Сообщение с уведомлением отображается напрямую, поэтому метод onMessageReceived не вызывается.

Метод вызывается только при получении сообщения с данными. Для получения подробной информации см. Получение сообщений с данными. Однако сообщение с данными не может достичь вашего приложения после того, как процесс вашего приложения будет остановлен. Чтобы отобразить сообщение с уведомлением после завершения процесса вашего приложения или получить сообщение с данными через onMessageReceived, когда ваше приложение работает, обратитесь к разделу Отображение сообщения уведомления в пользовательском интерфейсе.