Я хочу отправлять push-уведомления на устройства с помощью expo.
Я успешно получаю expo_push_token для каждого устройства, которому разрешен доступ, и я также могу сделать запрос с помощью Почтальона.
Вот моя просьба почтальона:
Почтовый запрос: https://exp.host/--/api/v2/push/send
{
"to": "ExponentPushToken [xxx]",
"title": "yesahhhh",
"тело": "lkajdsljaslda"
}
Заголовки включают в себя:
Принять: приложение / JSON
Тип контента: приложение / JSON
Принять кодировку: gzip, deflate
Хост: exp.host
Итак, вышесказанное работает как следует через почтальона.
Однако я не могу заставить его работать, когда я запускаю команду Heroku:
heroku run rake run_job
Метод run_job упоминается в моем приложении rails в 2 местах:
Библиотека / задача / scheduler.rake:
task :run_job => :environment do
puts "Running Job..."
User.run_job
puts "done!"
end
user.rb:
def self.run_job
User.all.each do |u|
if u.expo_push_token.present?
require 'net/http'
require 'json'
begin
uri = URI('https://exp.host/--/api/v2/push/send')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
request.body = {to: u.expo_push_token, title: "Prana", body: "Time to affirm and visualize"}.to_json
response = http.request(request)
puts "The Response: #{response.body}"
rescue => e
puts "failed #{e}"
end
end
end
end
Пользователь успешно получает expo_push_token, однако push-уведомление не получено.
Когда я запускаю команду heroku run rake run_job
, это ответ, который я получаю на терминале:
Running rake run_job on ⬢ prana-app... up, run.7732 (Free)
Running Job...
D, [2019-07-01T19:17:31.215548 #4] DEBUG -- : User Load (2.1ms) SELECT "users".* FROM "users"
done!
Что отсутствует в моем коде ruby, что препятствует получению push-уведомлений?