Cordova Android 应用程序不接收来自服务器端的 FCM 通知

Posted

技术标签:

【中文标题】Cordova Android 应用程序不接收来自服务器端的 FCM 通知【英文标题】:Cordova Android app do not receive FCM notifications from server side 【发布时间】:2017-04-07 10:46:57 【问题描述】:

我遇到了 Cordova android 应用程序问题,我尝试通过适用于 Cordova 的 Firebase 插件接收 FCM 通知,每次我通过 Firebase 控制台发送通知时,设备都会收到消息,但是当我尝试使用 Firebase API 时我的服务器端,它说它已发送通知(状态 200),但设备没有收到任何通知。

即使我尝试通过 Postman 测试发送通知,也会发生同样的情况,出现发送状态 200,但设备上没有消息。

我的服务器端是基于 .NET 构建的。请,如果有人可以帮助我,我会很感激。

Public Function SendNotificationToFirebaseCloud() As [String]
    Dim result = "-1"
    Dim webAddr = "https://fcm.googleapis.com/fcm/send"

    Dim httpWebRequest = DirectCast(WebRequest.Create(webAddr), HttpWebRequest)
    httpWebRequest.ContentType = "application/json"
    httpWebRequest.Headers.Add("Authorization:key=MY_AUTHORIZATION_KEY")
    httpWebRequest.Method = "POST"

    Using streamWriter = New StreamWriter(httpWebRequest.GetRequestStream())
        Dim json As String = """to"" : ""MY_FIREBASE_TOKEN"", ""priority"": ""high"", ""data"" :  ""name"" : ""VIP"", ""othername"" : ""Leiloes"" "
        streamWriter.Write(json)
        streamWriter.Flush()
    End Using

    Dim httpResponse = DirectCast(httpWebRequest.GetResponse(), HttpWebResponse)
    Using streamReader = New StreamReader(httpResponse.GetResponseStream())
        result = streamReader.ReadToEnd()
    End Using

    Return result
End Function

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

您的 JSON 中应该有一个“通知”字段,因为结构需要:


    "to" : "xxxx", 
    "priority" : "high", 
    "notification" : 
        "title" : "Your title",
        "body" : "Your body",
        "click_action" : "FCM_PLUGIN_ACTIVITY", //(This one is important as it's used to trigger the event when you click on the notification)
        "icon" : "myicon",
        "sound" : "default"
    ,
    "data" : 
        "name" : "VIP", 
        "othername" : "Leiloes"
    

【讨论】:

我尝试了@NicolasAlric 的解决方案,但情况仍然相同。 尝试将"title" : "Your title", "body" : "Your body"添加到您的数据字段 仍然无法正常工作。我认为 json 格式是正确的,但是,将消息从 Firebase 发送到设备时会出现问题。 post请求的状态是200,在firebase之前一切正常,但是消息没有传递。 您可以尝试使用主题来完成这项工作,'to' => "/topics/yourtopic" 在您的 JSON 中 FCMPlugin.subscribeToTopic("yourtopic"'); 在您的应用代码中

以上是关于Cordova Android 应用程序不接收来自服务器端的 FCM 通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Meteor cordova 移动应用程序中接收共享数据

如何检查cordova/phonegap项目的cordova android版本?

PhoneGap GCM-|Cordova 插件

Ajax请求不适用于cordova android应用程序

外部图像未在 Android 应用程序中显示 - Meteor - Cordova

Ionic/Cordova 应用程序不会在后台收到推送通知