#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
метод для их получения.
Для получения более подробной информации вы можете обратиться к следующим документам:
Отправка Сообщений По Нисходящей Ссылке
Комментарии:
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, это ошибка версии?