不使用firebase控制台的通知

时间:2017-07-25 11:30:23

标签: android firebase notifications firebase-cloud-messaging

我是Android的新手,我创建了一个程序,它将使用firebase发送通知,而不使用firebase控制台。我使用php作为后端发生的事情是我只有在通过firebase控制台发送时才收到通知,但是我通过wamp服务器发送它我不能。虽然我取得了成功:1

3 个答案:

答案 0 :(得分:0)

您可以使用服务器中的以下php代码发送通知

function sendNotification($fields = array())
{
$API_ACCESS_KEY = 'YOUR KEY';
$headers = array
(
    'Authorization: key=' . $API_ACCESS_KEY,
    'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
return $result;
}
$title = 'Whatever';
$message = 'Lorem ipsum';
$fields = array
(
'registration_ids'  => ['deviceID'],
'data'          => '',
'priority' => 'high',
'notification' => array(
    'body' => $message,
    'title' => $title,
    'sound' => 'default',
    'icon' => 'icon'
    )
    );
   sendNotification($fields);

答案 1 :(得分:0)

在您的控制器中调用此函数:

function sendPushNotification($title, $message, $id = null)
{
    $condition = "!('anytopicyoudontwanttouse' in topics)";

    $url = "https://fcm.googleapis.com/fcm/send";
    $header = [
        'authorization: key= AAAAoF8nm7A:APA91bG1*********', //server key
        'content-type: application/json'
    ];

    $postdata = '{
        "notification" : {
                "title":"' . $title . '",
                "text" : "' . $message . '"
            },
        "data" : {
            "id" : "' . $id . '",
            "title":"' . $title . '",
            "description" : "' . $message . '",
            "text" : "' . $message . '",
            "is_read": 0
          },
          "condition": "' . $condition . '"
    }';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

您会发现此代码中没有to:。相反,我使用了一种条件,该条件允许在不提供令牌的情况下将通知发送到所有设备(不适用于特定主题)。如果您需要发送到特定设备,只需添加"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",

答案 2 :(得分:-1)

您可以按照以下教程使用推送通知,您可以使用Nodejs进行设置:

https://youtu.be/8TGIMLdcl9E

这是最好的方式,但它结合了firebase功能和云消息传递。

希望它有所帮助。