首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FCM提示成功,但android设备未收到通知

FCM提示成功,但android设备未收到通知
EN

Stack Overflow用户
提问于 2020-01-08 20:09:00
回答 3查看 3.9K关注 0票数 6

当我尝试通过cURL请求发送推送通知时,来自服务器的响应表明我成功了,但设备上没有收到该消息。我已经尝试过使用多播和单个接收者有效负载。

下面是我的PHP代码:

代码语言:javascript
复制
<?php
//API URL of FCM
$url = 'https://fcm.googleapis.com/fcm/send';

/*api_key available in:
Firebase Console -> Project Settings -> CLOUD MESSAGING -> Server key*/ $api_key = 'API_KEY';

$device_id = 'eE5U0IQEyTo:APA91bGplai6Bf5ko1hlW5y0oLb0WIa5JytpcuZ7B9lbIay8PNfPv2i1HMUqg1hDtPQqvhy4KLIZgyEh0BHHkfJtdX7E0Ftm-OaN23VahOoWAzjNP2QK8Se7PCibhooVG71jMPmzTHqd';

$fields = array (
    'registration_ids' => array (
            $device_id
    ),
    'data' => array (
        "title" => "test from server",
        "body" => "test lorem ipsum"
    )
);
//header includes Content type and api key
$headers = array(
'Content-Type:application/json',
'Authorization:key='.$api_key
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);

if ($result === FALSE) 
{
die('FCM Send Error: ' . curl_error($ch));
}
else
{
    curl_close($ch);
    print_r($result);
    return $result;
}
?>    

以下是我在运行此代码时得到的响应:

代码语言:javascript
复制
{
    "multicast_id": 1338828245860499776,
    "success": 1,
    "failure": 0,
    "canonical_ids": 0,
    "results": [{
        "message_id": "0:1578484075615332%52ec0605f9fd7ecd"
    }]
}
EN

回答 3

Stack Overflow用户

发布于 2020-12-14 20:07:42

完美答案@Chetan,不会显示'data‘通知,但会显示’通知‘。

所以你的数组应该是:

代码语言:javascript
复制
$fields = array (
    'registration_ids' => array (
            $device_id
    ),
    'notification' => array (
        "title" => "test from server",
        "body" => "test lorem ipsum"
    )
);
票数 5
EN

Stack Overflow用户

发布于 2020-06-18 16:10:09

将"data“重命名为”通知“

如果没有“通知”对象,设备将不会在抽屉中显示通知。

"data“由应用程序解释

“通知”是由设备解释的。

您可以单独使用这两个对象,但如果您想要显示通知,则需要使用“通知”对象。

Reference

票数 4
EN

Stack Overflow用户

发布于 2020-10-10 10:59:15

我已经解决了这个问题,删除应用程序并重新安装它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59645578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档