首页 > 解决方案 > 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​​ 代码中缺少什么会阻止接收推送通知?

标签: iosruby-on-railsherokuscheduler

解决方案


推荐阅读