Как получить пользовательские данные

#android #huawei-mobile-services

Вопрос:

Пользовательские помеченные данные, определенные в полезной нагрузке сообщения, выглядят следующим образом.

 {
    "message": {
        "notification": {
            "title": "message title",
            "body": "message body"
        },
        "android": {
            ...
        },
        "token": [
            "pushtoken1"
        ]
    },
    "custom_data": ...
}
 

И я хочу получить эти пользовательские данные из объекта RemoteMessage.

 public class HmsService extends HmsMessageService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        // remoteMessage.getCustomData
    }
}
 

Как закодировать эту функцию?

Ответ №1:

Обновить

Обратитесь к документу ,вы можете попробовать следующий пример кода:

введите описание изображения здесь

введите описание изображения здесь


Huawei Push Kit поддерживает два типа сообщений: уведомления и сообщения данных.

В соответствии с данными, которые вы отправляете, вы используете уведомление. Настроенный массив уведомлений не может быть отправлен непосредственно в приложение. Данные должны быть переданы с помощью ClickAction метода.

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

Для получения более подробной информации вы можете обратиться к следующим документам:

Отправка Сообщений По Нисходящей Ссылке

Передача Параметров С Помощью ClickAction

Получение Сообщений

Комментарии:

1. Означает ли это, что единственный способ передать тег custom_data-указать его под тегом ClickAction, может предоставить пример кода для более подробного объяснения.

2. привет@ccd,я только что обновил свой ответ,пожалуйста, любезно обратитесь.

3. Из документа ничего не видно о теме сообщения данных, есть ли какие-либо конкретные справочные страницы?

4. В документе говорится, что при отключении фоновой службы hms она не может отправлять какие-либо сообщения данных в клиентское приложение. Если клиентское приложение закрыто, и я хочу синхронизировать данные своего сервера с данными клиентского приложения, я должен передать данные сервера в уведомлении через нажатие пользователя, а не напрямую передавать в приложение без действий пользователя?

5. не вижу ничего в теме сообщения данных, есть ли какие-либо конкретные справочные страницы? —вы можете обратиться к этим документам .

Ответ №2:

Попробуйте использовать следующий код.

 if (remoteMessage.getData().containsKey("custom_data")) {
           remoteMessage.getData().get("custom_data");
}
 

Комментарии:

1. У getData (), похоже, нет метода get, это ошибка версии?