Android 使用Ruby向Firebase发送通知

Android 使用Ruby向Firebase发送通知,android,ruby-on-rails,ruby,firebase,firebase-cloud-messaging,Android,Ruby On Rails,Ruby,Firebase,Firebase Cloud Messaging,我使用的是Ruby版本1.8.7 我使用这个FCM gem,希望向Android客户端应用程序发送通知消息,但它不起作用 在控制器中: fcm = FCM.new(FIREBASE_API_KEY, :timeout => 30) options = {:data => {:message => "This is a FCM Topic Message!"}} response = fcm.send_to_topic('global', options) FCM类: re

我使用的是Ruby版本1.8.7

我使用这个FCM gem,希望向Android客户端应用程序发送通知消息,但它不起作用

在控制器中:

fcm = FCM.new(FIREBASE_API_KEY, :timeout => 30)
 options = {:data => {:message => "This is a FCM Topic Message!"}}
 response = fcm.send_to_topic('global', options)
FCM类:

require 'httparty'
require 'cgi'
require 'json'

class FCM
  include HTTParty
  base_uri 'https://fcm.googleapis.com/fcm'
  default_timeout 30
  format :json

  attr_accessor :timeout, :api_key

  def initialize(api_key, client_options = {})
    @api_key = api_key
    @client_options = client_options
  end

  def send_with_notification_key(notification_key, options = {})
    body = { :to => notification_key }.merge(options)

    params = {
        :body => body.to_json,
        :headers => {
        'Authorization' => "key=#{@api_key}",
        'Content-Type' => 'application/json'
    }
  }

  response = self.class.post('/send', params.merge(@client_options))
  response.parsed_response
  end

  def send_to_topic(topic, options = {})
    if topic =~ /[a-zA-Z0-9\-_.~%]+/
        send_with_notification_key('/topics/' + topic, options)
    end
  end
end
  • 服务器密钥是正确的,因为我可以通过PHP代码成功发送通知
  • 响应输出如下所示: {“message_id”=>88858038884270587181}
  • 谁能指出代码有什么问题吗。 任何帮助都将不胜感激。

    根据您收到的响应是成功排队消息的预期响应

    您收到的
    消息\u id
    具有以下含义:

    FCM成功接收到请求并将尝试传递到所有订阅设备时的主题消息ID

    看起来您的代码正在工作,即问题一定在其他地方

    编辑: 您正在发送一条数据消息。(因为没有
    通知
    键,只有
    数据
    键)也许您的客户希望收到通知消息

    有关这两种消息类型之间的区别,请参见

    您可以尝试将通知密钥添加到请求中:

    fcm=fcm.new(FIREBASE\u API\u键:超时=>30)
    选项={:notification=>“测试通知”,
    :data=>{:message=>“这是FCM主题消息!”}
    响应=fcm.发送到主题(“全局”,选项)
    
    我以前遇到过这个问题

    尝试添加
    优先级:“高”
    通知:“您的邮件”

    在您的FCM类安装选项中,尝试以下操作

     request = HTTParty.post('http://fcm.googleapis.com/fcm/send', :body => { "to" => "#{token}", "priority" => "high", "data" => { "title" =>title,"body"=>message,'massage_type'=>'text'}}.to_json, :headers => { 'Content-Type' => 'application/json', 'Authorization' => "key=#{server_token}" } )
    

    我不确定这是否是由于FCM本身的变化,但使用gem文档中的语法或使用Daniel回答中的格式对我不起作用(Daniel的版本给出了FCM的错误响应,表示通知必须是JSON对象)

    这就是我的工作原理:

    fcm.send_to_topic(topic, notification: { body: "topic notification" })
    

    不幸的是,fcm库不支持rubies<2.0。根据存储库的git历史记录,在项目开始时就已经出现了这种情况。

    do
    params.to_json
    response=self.class.post('/send',params.merge(@client_options)。to_json)生成错误TypeError(无法将字符串转换为哈希)。您的代码可以正常工作。没有错误消息。我不知道你们在问什么。
    FCM
    类是FCM gem的一部分。不太可能有问题。我的android客户端应用程序没有收到任何通知。我的android客户端应用程序在通过PHP代码发送时可以收到通知。但是不能使用上面的Ruby代码。