如何在不使用 Firebase 控制台的情况下发送 Firebase Cloud Messaging 通知?

我从通知的新Google服务开始。Firebase Cloud Messaging

多亏了这段代码 https://github.com/firebase/quickstart-android/tree/master/messaging 我才能够将通知从我的Firebase用户控制台发送到我的Android设备。

是否有任何 API 或方法可以在不使用 Firebase 控制台的情况下发送通知?我的意思是,例如,PHP API或类似的东西,直接从我自己的服务器创建通知。


答案 1

Firebase Cloud Messaging 具有一个服务器端 API,您可以调用该 API 来发送消息。请参见 https://firebase.google.com/docs/cloud-messaging/server

发送消息可以像调用 HTTP 端点一样简单。查看 https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocolcurl

curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" \
    --Header "Content-Type: application/json" \
    https://fcm.googleapis.com/fcm/send \
    -d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"title\":\"Hello\",\"body\":\"Yellow\"}}"

答案 2

这适用于使用 CURL

function sendGCM($message, $id) {


    $url = 'https://fcm.googleapis.com/fcm/send';

    $fields = array (
            'registration_ids' => array (
                    $id
            ),
            'data' => array (
                    "message" => $message
            )
    );
    $fields = json_encode ( $fields );

    $headers = array (
            'Authorization: key=' . "YOUR_KEY_HERE",
            'Content-Type: application/json'
    );

    $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_POSTFIELDS, $fields );

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

?>

$message是您要发送到设备的消息

$id设备注册令牌

YOUR_KEY_HERE是您的服务器 API 密钥(或旧版服务器 API 密钥)


推荐