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

#android #push-notification #huawei-mobile-services #huawei-developers #huawei-push-notification

#Android #push-уведомление #huawei-мобильные сервисы #huawei-разработчики #huawei -push-уведомление

Вопрос:

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

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

Я добавил приведенные ниже коды в манифест Android

     <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-уведомления.

Ответ №1:

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

Ответ №2:

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

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

Для получения более подробной информации, пожалуйста, обратитесь: https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/android-fgrd-show-0000001050040126-V5

Ответ №3:

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

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