У меня есть приложение Rails, и через sidekiq я хочу отправить запрос на отправку в Expo, чтобы обработать уведомление в приложении.API приложения создается с использованием Node.JS, и push-токен успешно выполняется с этим кодом:
axios({
method: "post",
url: "https://exp.host/--/api/v2/push/send",
data: {
to: result.expo_push_token,
title: `${data.user.first_name}`,
sound: "default",
body: shortMessage,
data: {
status: "ok",
body: shortMessage,
title: `${data.user.first_name}`,
msgUser: data.user,
convoId: data.room,
}
}
})
В приложении Rails все работало нормально, пока я не хотел передать объект данных в приложение.Вот что сработало:
push_tokens = PushToken.where(user_id: other_user)
push_tokens.each do |token|
params = ({
to: token.expo_push_token,
title: user.first_name,
sound: "default",
body: msg.body
})
puts params
puts params.class
x = Net::HTTP.post_form(URI.parse('https://exp.host/--/api/v2/push/send'), params)
puts x.body
И затем, когда я добавляю объект данных, он выдает ошибку: {'errors':[{"code":'API_ERROR','message':'child \'data\' fails because [\'data\' must be an object], \'value\' must be an array.'}]}
push_tokens.each do |token|
params = ({
to: token.expo_push_token,
title: user.first_name,
sound: "default",
body: msg.body,
data: {
status: "ok",
msgUser: {
id: user.id,
avatar_file_name: user.avatar_file_name,
first_name: user.first_name,
},
convoId: msg.convo_id,
body: msg.body,
title: user.first_name,
},
})
puts params
puts params.class
x = Net::HTTP.post_form(URI.parse('https://exp.host/--/api/v2/push/send'), params)
puts x.body
Первоначально я передавал ActiveRecord в данные msgUser: user
и подумал, что, может быть, в этом проблема, но это не имело значения, когда я сам создал массив, выполнив: msgUser: {id: user.id, avatar_file_name: user.avatar_file_name, first_name: user.first_name,},
.Простой data: {status: 'ok'}
тоже не работает.
Я также пробовал data: [status: 'ok']
с [ ]
, params.to_json
и params.as_json
, но я получаю ту же ошибку.
Как я могу успешно отправить этот data
объект через этот почтовый запрос Rails на push-токен выставки?