FCM - 推送通知仅适用于控制台而不适用于邮递员

Posted

技术标签:

【中文标题】FCM - 推送通知仅适用于控制台而不适用于邮递员【英文标题】:FCM - Push notification works only in console not in postman 【发布时间】:2018-03-21 09:29:33 【问题描述】:

我的应用程序是用 NativeScript 开发的。对于 FCM,我使用 nativescript-plugin-firebase

每当我从 FCM 控制台尝试时,我都会收到推送通知。但是,当我尝试以下邮递员时,我从未收到推送通知。

URL : POST : https://fcm.googleapis.com/fcm/send
Headers : Authorization = key="******", Content-Type=application/json

数据:


    "data": 
        "title": "RAJA RAJA",
        "message": "another test",
        "name": "Muthukumar ME"
    ,
    "to" : "**************************************"

回应:


    "multicast_id": 5806593945960213086,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [
        
            "message_id": "0:1521623661699559%161a06bff9fd7ecd"
        
    ]

任何人都知道我错过了什么,即使我得到了成功的响应,当我在邮递员中尝试时推送通知也不会出现。

【问题讨论】:

你关注this教程了吗? 是的,我按照教程进行操作。尽管如此,即使我得到了成功响应,我也没有收到任何推送通知。 您是否尝试过添加notification 有效负载?如前所述(此处)[***.com/questions/40809784/…. 尝试发送notification 有效载荷而不是data。使用控制台发送消息时,它使用notification 消息有效负载(提到它here)。可能有用的帖子here。 这里我详细解释了使用这个插件和邮递员github.com/NickIliev/…发送需要什么有效负载@ 【参考方案1】:
 
    "to" : "********",
    "priority": "high",
    "notification": 
        "title": "Title",
        "body" : "First Notification",
        "text": "Text"
    

【讨论】:

这是一个“通知”通知,他正在尝试发送一个“数据”通知——这不是一个正确的答案——它们的工作方式不同,收到一个并不意味着你会收到另一个,可以说,数据通知是您想要的【参考方案2】:

我正在通过“主题”发送通知,例如:-


 "to" : "/topics/XXXX",

 "notification" : 
     "body" : "First Notification",
     "title": "Collapsing A",
     "click_action":"DisplayTestActivity"
 ,
 "data" : 
     "body" : "First Notification",
     "title": "Collapsing A",
     "key_1" : "Data for key one",
   "click_action":"DisplayTestActivity"
 

如果您发送这样的通知并且您无法通过邮递员收到通知,那么

“确保以下行应该是他们在你的启动活动或第一页中的意思是在你收到通知之前执行”

FirebaseMessaging.Instance.SubscribeToTopic("XXXX");
if(!GetString(Resource.String.google_app_id).Equals("XXXXXXXXXXXXXXXXXXXXX"))  throw new System.Exception("Invalid Json file");
Task.Run(() =>


    var instanceId = FirebaseInstanceId.Instance;
    instanceId.DeleteInstanceId();
    android.Util.Log.Debug("TAG", "0 1", instanceId.Token, instanceId.GetToken(GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));

);

*上面的代码是c#所以使用你的编程语言.. 谢谢

【讨论】:

【参考方案3】:

使用带有 POSTMAN 的 HTTP 协议发送数据消息

您必须从 Firebase 控制台 > 项目设置 > 云消息传递复制旧版服务器密钥

注意:Firebase 已将我们的服务器密钥升级到新版本。您可以继续使用旧版服务器密钥,但建议您升级到最新版本。

选择 POST。输入请求 URL 为https://fcm.googleapis.com/fcm/send 添加标头授权:key= 或授权:key=and Content-Type:application/json。

使用 POSTMAN 进行设置 现在选择 Body > raw > JSON (application/json) 并添加以下代码:


 "to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
 "collapse_key" : "type_a",
 "notification" : 
     "body" : "First Notification",
     "title": "Collapsing A"
 ,
 "data" : 
     "body" : "First Notification",
     "title": "Collapsing A",
     "key_1" : "Data for key one",
     "key_2" : "Hellowww"
 

您可以推送通用通知(带有通知负载)或自定义通知(带有通知和数据负载)并点击发送。


 "to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
 "collapse_key" : "type_a",
 "data" : 
     "body" : "First Notification",
     "title": "Collapsing A",
     "key_1" : "Data for key one",
     "key_2" : "Hellowww"
 

请注意,仅当负载中只有数据(无通知)节点时才会触发自定义通知。因此,您需要将正文和标题移动到数据节点。

记住:如果您想向具有相应 firebase_instance_id 的多个设备发送通知,请使用 registration_ids 而不是节点。

【讨论】:

【参考方案4】:
    在手机中打开您的应用程序并将其连接到 PC 然后在打开 chrome 后将这个 chrome://inspect/#devices 粘贴到 Remote Target Hit Inspect 中:Demo1 然后你会看到注册设备下的registrationId 复制此 ID 并将其粘贴到 POSTMAN 中的“to”:“registrationId”之后:Demo2

希望对你有帮助!

【讨论】:

以上是关于FCM - 推送通知仅适用于控制台而不适用于邮递员的主要内容,如果未能解决你的问题,请参考以下文章

Pushsharp 推送通知仅适用于沙盒,不适用于生产

Apple 推送通知仅适用于开发,不适用于生产

Firebase Api Key 仅适用于 iOS

FirebaseMessaging.onMessage.listen() 仅适用于通知消息

推送通知不适用于 FCM

丰富的推送通知不适用于 IOS 中的 FCM