ios - Heroku调度程序不适用于Rails api
问题描述
我想使用 expo 向设备发送推送通知。我成功地为每个启用了访问的设备获取了 expo_push_token,并且我还能够成功地使用 Postman 发出请求。这是我的邮递员请求: POST 请求到:https ://exp.host/--/api/v2/push/send
{ "to": "ExponentPushToken[xxx]", "title": "yesahhhh", "body": "lkajdsljaslda" }
标头包括: 接受:application/json 内容类型:application/json 接受编码:gzip、deflate 主机:exp.host
因此,上述工作应该通过邮递员完成。
但是,当我运行 Heroku 命令时,我无法让它工作: heroku run rake run_job
run_job 方法在我的 rails 应用程序中的 2 个位置被引用:
lib/task/scheduler.rake:
task :run_job => :environment do
puts "Running Job..."
User.run_job
puts "done!"
end
用户.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,但是没有收到推送通知。当我运行命令 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 代码中缺少什么会阻止接收推送通知?
解决方案
推荐阅读
- linux-kernel - 保存文本文件时出现错误(无法打开要写入的文件)
- apache-spark - TypeError: can't pickle generator objects: Spark collect() fails due to unserializable generator return type (dict_key)
- android - Node js在Android应用程序中打开ssl(不安全)https服务问题
- spring - 如何在 Service 类中使用 org.quartz.Scheduler 对象
- php - 如何使用 mysqli 数据类型时间将计算的时间存储到数据库中?
- jboss - 我们可以使用 check_mk 监控工具来监控 Jboss 吗?
- python - Linux Mint 更改 Python 的当前版本
- sql - Why row is visible to several sessions when selected FOR UPDATE SKIP LOCKED?
- javascript - 在浏览器中调用时Vue导入Js文件谷歌地图覆盖错误
- python - 如何解析没有零填充的日期,格式为(1 位或 2 位数字年份)-(月份缩写)?