GOOGLE FCM(云消息传递)通知未显示在移动设备上

时间:2018-07-11 11:16:17

标签: android firebase google-cloud-messaging firebase-cloud-messaging

我已经用Push Notification创建了一个移动应用程序。该应用从Google FCM抓取令牌,并将其存储到数据库中。然后,我们使用仪表板向所有注册的设备发送通知。

我们的通知存在问题。尽管它在FCM响应中显示成功,但该消息不会发送到设备。

FCM响应:{"multicast_id":8418406699445470273,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1531307530435857%b446114df9fd7ecd"}]}

PHP代码:

    $url = 'https://fcm.googleapis.com/fcm/send';
    // Set GCM post variables (device IDs and push payload)     
    $post = array(
                    'registration_ids'  => $ids,
                    'data'              => $data, 
                    'priority'              => 'high',    
                    'notification' => $data,               
                    );

    // Set CURL request headers (authentication and type)       
    $headers = array( 
                        'Authorization: key=' . $apiKey,
                        'Content-Type: application/json'
                    );

    // Initialize curl handle       
    $ch = curl_init();

    // Set URL to GCM endpoint      
    curl_setopt( $ch, CURLOPT_URL, $url );

    // Set request method to POST       
    curl_setopt( $ch, CURLOPT_POST, true );

    // Set our custom headers       
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );

    // Get the response back as string instead of printing it       
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

    // Set JSON post data
    curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $post ) );

    // Actually send the push   
    $result = curl_exec( $ch );

    // Error handling
    if ( curl_errno( $ch ) )
    {
        echo 'GCM error: ' . curl_error( $ch );
    }

    // Close curl handle
    curl_close( $ch );

    // Debug GCM response       
    echo $result;

我已经通过Google Cloud Message Console发送了相同的消息,并且确实将通知发送到了我的设备。

以前有人遇到过这个问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

此代码非常适合我收到通知,我已经在使用此代码

 <?php
    $t = $_POST["tokan"];
    $msg = $_POST["msg"];
    function sendMessage($data, $t)
    {
        //FCM api URL
        $url = 'https://fcm.googleapis.com/fcm/send';

        if (!defined('KEY_VALUE'))
            define('KEY_VALUE', 'webapikey');

        $fields         = array();
        $fields['data'] = $data;
        $fields['to']   = $t;

        //header with content_type api key
        $headers = array(
            'Content-Type:application/json',
            'Authorization:key=' . KEY_VALUE
        );

        $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));
        }
        curl_close($ch);
        return $result;
    }
    $data = array(

        'post_msg' => $msg,
        'post_title' => "help",
    );

    sendMessage($data, $t);
    echo "success";

    ?>