猿问

在 PHP 中为通知设置 FCM 通道 ID

我正在尝试使用 PHP 向 Android 设备发送 FCM 通知。我的代码适用于 Android O 之前的设备。

在 Android O 中,我们还需要在请求中设置通道 ID 以接收通知,我不知道该怎么做。

我已经在应用程序中完成了必要的设置并使用 Firebase 控制台我可以收到通知,但是当我尝试通过 PHP 脚本发送它时它失败了。

我还查看了下面的链接,但它对我不起作用。

我的PHP代码:


    $notification = new Notification();

    $notification->setTitle("startSession");

    $notification->setBody($_POST['child_id']);

    $notification->setNotificationChannel('my_channel_id');

    $requestData = $notification->getNotification();


    $firebase_token = $_POST['token'];

    $firebase_api = 'my_value';

    $fields = array(

                     'to' => $firebase_token,

                     'data' => $requestData,

                   );

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


    $headers = array(

        'Authorization: key=' . $firebase_api,

        'Content-Type: application/json'

    );

    $ch = curl_init();

    // Set the url, number of POST vars, POST data

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

    // Execute post

    $result = curl_exec($ch);


    if($result === FALSE){


        die('Curl failed: ' . curl_error($ch));

        $return_obj = array('responseCode'=>'0' , 'responseMsg'=> 'Error inserting, please try 

         again.', 'errorCode'=>'1');

    }else{

        $return_obj = array('responseCode'=>'1' , 'responseMsg'=> 'Successfully inserted.', 

        'errorCode'=>'0');

    }


    // Close connection

    echo json_encode($return_obj);

    curl_close($ch);

我确信语法是正确的,因为通知仍然适用于 Android < 26 的设备。

任何帮助将不胜感激。谢谢!


SMILET
浏览 138回答 1
1回答

梵蒂冈之花

您可以在服务器端 PHP 中设置您的频道 IDPHP服务器端<?php&nbsp; function Notify($title,$body,$target,$chid)&nbsp; &nbsp;{&nbsp; &nbsp; define( 'API_ACCESS_KEY', 'enter here your API Key' );&nbsp; $fcmMsg = array(&nbsp; &nbsp; 'title' => $title,&nbsp; &nbsp; 'body' => $body,&nbsp; &nbsp; 'channelId' => $chid,&nbsp; );&nbsp; $fcmFields = array(&nbsp; &nbsp; 'to' => $target, //tokens sending for notification&nbsp; &nbsp; 'notification' => $fcmMsg,&nbsp; );&nbsp; $headers = array(&nbsp; &nbsp; 'Authorization: key=' . API_ACCESS_KEY,&nbsp; &nbsp; 'Content-Type: application/json'&nbsp; );$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, true );curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fcmFields ) );$result = curl_exec($ch );curl_close( $ch );echo $result . "\n\n";}?>我Notify用4个参数定义函数title,body,target,chid来使用它只是调用函数并定义它的参数,您必须在客户端(Android 部分)中添加您的 channelId,如果没有 channelId,您将无法在 Android 8.0 及更高版本中收到通知
随时随地看视频慕课网APP
我要回答