Rails - Heroku - 推送通知通过 Postman 工作,但不能通过我的 Rails API 工作

Rails - Heroku - Push notifications work via Postman but not via my Rails API

提问人:Ozge Cokyasar 提问时间:7/2/2019 最后编辑:AlexanderOzge Cokyasar 更新时间:2/3/2020 访问量:330

问:

我想使用 expo 向设备发送推送通知。 我成功地为每个启用了访问权限的设备获取了expo_push_token,并且我还能够使用 Postman 成功发出请求。 这是我的邮递员请求: POST 请求:https://exp.host/--/api/v2/push/send

{
 "to": "ExponentPushToken[xxx]",
 "title": "yesahhhh",
 "body": "lkajdsljaslda"
}

标头包括:

Accept: application/json
Content-type: application/json
Accept encoding: gzip, deflate
Host: 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

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,但未收到推送通知。 当我运行命令时,这是我在终端上得到的响应: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 代码中缺少什么导致无法接收推送通知?

Ruby-on-Rails Heroku Expo 调度程序

评论

0赞 colinux 7/4/2019
您确定至少有 1 个用户拥有令牌吗?
0赞 Ozge Cokyasar 7/5/2019
@colinux我的错!我的 react 应用程序的补丁请求不起作用。所以expo_push_token实际上并没有被发送到后端!对不起,谢谢!

答: 暂无答案