为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
SMILET 2022-01-23 10:45:41
我正在尝试使用 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 的设备。任何帮助将不胜感激。谢谢!
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以在服务器端 PHP 中设置您的频道 ID


PHP服务器端


<?php

  function Notify($title,$body,$target,$chid)

   {


    define( 'API_ACCESS_KEY', 'enter here your API Key' );


  $fcmMsg = array(

    'title' => $title,

    'body' => $body,

    'channelId' => $chid,


  );

  $fcmFields = array(

    'to' => $target, //tokens sending for notification

    'notification' => $fcmMsg,


  );


  $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, 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 及更高版本中收到通知


查看完整回答
反对 回复 2022-01-23
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信