当前位置: 首页 > 知识库问答 >
问题:

使用FCM从Rails api向Android推送通知是否未发送通知?

宰父淳
2023-03-14

我正在rails 5中编写一个Api Rest,使用gem'fcm'发送通知。我已经在android应用程序中配置了firebase,我可以从firebase控制台成功发送通知,但从rails api我无法在设备中接收通知,这是我的代码:

这是我的rails控制器:

class AccionesController < ApplicationController
 def enviar

    require 'fcm'

      fcm = FCM.new("AAAAlBfTsV4:AheregoesmySERVEKEYsXXm-vQGfMjVuo8TpYrApHsnGU4ZasdfajsdfñalUtf26LeND4U4lXFZZplpzJjTWoiisWP-Esl5afCSTmiDI9y5gP6OObqY76NVcOn9ceaIUGMZ")

      #  fcm = FCM.new("my_server_key", timeout: 3)

      registration_ids= [params[:devicetoken]] # an array of one or more client registration tokens
      options = {data: {score: "mynewscore"}, 
                 notification: {
                                    title: "Message Title", 
                                    body: "Hi, Worked perfectly",
                                    icon: "myicon"}
      ,collapse_key: "testeando desde rails", priority: "high"}
      response = fcm.send(registration_ids, options)
      render json: response
  end

  def noti_params
      params.permit(:devicetoken)
  end
end

我从邮递员执行这是执行控制器的路线:

http://localhost:3000/acciones/enviar?here 将设备令牌作为参数

以下是回应:

{“正文”:“{”多播id\”:5276983113254623155,“成功”:1,“失败”:0,“规范id\”:0,“结果”:[{”消息id\:“0:1502991819420287“93308c2293308c\”],“标题”:“{”内容类型“:[“应用程序/json最大值;字符集=UTF-8”],“日期[“格林威治标准时间2017年8月17日星期四17:43:39],“到期时间[”2017年8月17日星期三17:43],“私人控制缓存[”0]“],“x-content-type-options”:[“nosniff”],“x-frame-options”:[“SAMEORIGIN”],“x-xss-protection”:[“1;模式=块],“服务器”:[“GSE”],“alt-svc”:[“quic=\”:443\;ma=2592000;v=“39,38,37,35\”,“接受范围”:[“无”;“变化”;“接受编码”;“连接”;“关闭”;“状态代码”:200,“响应”;“成功”;“规范ID”;“未注册ID”]:

响应显示成功:1,状态代码:200,但通知从未到达设备,Firebase控制台也不显示消息。

我是不是漏了什么?

请帮忙好吗?

或者有没有其他方法或ruby gem通过一个清晰的示例发送通知?

欢迎任何建议。。。提前谢谢

共有3个答案

沈自珍
2023-03-14

请尝试此消息选项,因为错误应该是您的通知语法。

options = {
    priority: 'high',
    data: {
        message: "Hai",
        location: location
    },
    notification: {
        body: "Hai",
        location: "location",
        sound: 'default'
    }
}
苏振国
2023-03-14
    fcm_client = FCM.new(your_firebase_key)
    registration_ids= [user_device_token]
    options = {
        priority: 'high',
        data: {
            message: "Hai",
            location: location
        },
        notification: {
            body: "Hai",
            location: "location",
            sound: 'default'
        }
    }
    fcm_client.send(registration_ids, options)
  end
end
谢雅珺
2023-03-14

您也可以使用RestClient gem,而不是使用fcm gem。fcm通知的用法如下。需要注意的一点是,如果有效负载是使用“.to_json”传递的,则头内容类型也必须指定为json。希望这有帮助。

def self.send_noti(device_token)
    options = data().merge ({"to": "#{device_token}"})
    RestClient.post("https://fcm.googleapis.com/fcm/send", options.to_json, headers={'Content-Type' => 'application/json','Authorization' => "key=#{ENV['fcm_token']}"})        
end 

def self.data()
    options = {
                                 "notification": {
                                       "body": "Your noti body",
                                       "title": "Your noti title"
                                    },
                                    "data": {
                                       "d1": "Your data" #can be any, d1, status or whatever
                                    }                                        
            }

end

Rest-客户宝石

 类似资料:
  • 以下是我的通知案例:当通知到达时,应用程序可能是前台,后台,或关闭 2.后台:当用户点击通知时,应用程序应显示在前面,并显示主要活动 3.App关闭时:当用户点击通知时,App应打开,并显示主要活动。 当我用设置intent和用设置PendingIntent时。它按预期工作,但当用户点击notification时,它不会调用Main Activity的onCreate方法。 如果您考虑了上面的代码

  • 我正在尝试用C#中的FCM在android设备上发送推送通知。Net,但我收到了“InvalidRegistration”错误消息。 我也用过邮递员和R-Client的方法,但仍然得到同样的错误。 {"multicast_id":8671409506357877791,"成功": 0,"失败": 1,"canonical_ids": 0,"结果":[{"错误":"无效注册"}]}

  • 我尝试使用firebase通知控制台发送通知,它工作正常,但在代码中会抛出错误{“multicast_id”:469219618584251399,“success”:0,“failure”:1,“canonical_id”:0,“results”:[{“error”:“InvalidRegistration”}]}我的代码:-

  • 我是新来的< code>Android Studio,所以我不明白。我是使用< code>FCM的< code >推送通知的新手,但我没有得到解决方案。我在运行时遇到了这种错误。 我的应用程序/Gradle 这是我的项目等级 我已经更新了android studio<code>SDK</code>我这边什么都没有了,但我不知道我哪里出错了。所以请在这方面帮助我。

  • 我们正在使用firebase云消息将推送通知发送到android应用程序中。 目前,为了测试推送通知,我们需要将消息发送到FCM服务器,并等待消息到达设备。大部分时间设备需要很长时间才能从FCM服务器获得通知。 我可以看到下面的一些链接,这些链接解释了使用adb广播命令向设备发送推送通知(本示例解释了使用GCM框架发送消息,但我们使用的是FCM)是否可以从adb shell/am命令行模拟GCM接

  • 我为沙盒iOS设置了推送通知,它们曾经工作过,但由于某种原因目前不工作。这是来自云观察日志的错误AWS SNS: 这是我的发送代码(AWS Lambda调用此代码): Lambda方法的返回数据: 我已经将问题缩小到不与我的lambda方法关联,因为我试图发布到直接从SNS控制台创建的endpoint。我还想知道为什么这个旧的实现在过去,一个月或两个月前,仍然有效,而现在不再有效。我认为这可能与过