【问题标题】:Firebase FCM server php-androidFirebase FCM 服务器 php-android
【发布时间】:2017-03-28 17:51:10
【问题描述】:

我创建了一个简单的 php 代码来向我的 android 设备发送通知,这些设备具有来自 firebase 实现的 google 登录方法。他们的令牌已经存储在我的数据库中。当我执行我的 php 时,它不会发送通知。不管是谁,如果我通过 firebase 通知控制台发送通知,它就可以工作。这是我的 php 代码。

function sendGCM($message, $registration_ids) {
    //FCM URL
    $url = "https://fcm.googleapis.com/fcm/send";
//prepare data
$fields = array (
    'registration_ids' => array ($registration_ids),
    'data' => array ("message" => $message)
);
$fields = json_encode ( $fields ); 

//header data
$headers = array ('Authorization: key=<YOUR_API_KEY>', 'Content-Type: application/json');

//initiate curl request
$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 );

// execute curl request
$result = curl_exec ( $ch );

//close curl request
curl_close ( $ch );

//return output
return $result;
}

错误: 当我执行这个 php 文件时,抛出这个错误:

{

    "multicast_id": 5359746182596118281,
    "success": 0,
    "failure": 1,
    "canonical_ids": 0,
    "results": [
    {
    "error": "InvalidRegistration"
    }
                ]
    }

【问题讨论】:

  • 您是否在 google 上查找过您的问题?有一整页关于 firebase 错误代码here 在 Stackoverflow 上发布之前,您应该尝试做一些研究。此外,可以不在这里显示您的 API 密钥,但请确保它已在您的代码中的标头中设置。
  • 可能是因为您在注册 ID 中传递了一个数组,因此它变成了不正确的数组数组。尝试发送单个字符串令牌 ID,它应该可以工作。我已经开始工作了。
  • 单个字符串?听起来很有趣,我会尝试并告诉你它是否有效
  • 我已经试过了,但不是这样。

标签: php firebase firebase-cloud-messaging


【解决方案1】:

试试这个:-

    <?php

// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'your_key' );
$registrationIds = array($id); //$id is string not array


// prep the bundle
$notification = array
(
    'title'     => 'title',
    'body'      => 'body',
    'icon'      => 'logo',
    'sound'     => 'default',
    'tag'       => 'tag',
    'color'     => '#ffffff'

);

$data = array
(
    'message' => 'message body',
    'click_action' => "PUSH_INTENT"
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'notification'      => $notification,
    'data'              => $data,
    'priority'          => 'normal'

);

$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 );
echo $result;

?>

【讨论】:

  • 谢谢,我会把它应用到我的 php 文件中并告诉它是否有效
  • 您好,我已经尝试过了,但它说同样的错误。无效注册,define('API_ACCESS_KEY', 'your_key');在这里我只需要更改单词 my key?
  • @xx_name :是的,您需要输入从 Firebase 控制台获得的密钥。您可以在 Cloud 消息传递下的 Firebase 控制台设置中找到它。我目前使用旧版服务器密钥,但 firebase 建议使用服务器密钥。两个都可以试试。
  • 大家好,我已经看到了我的错误,这是因为我使用的是 google 登录令牌而不是 firebase 令牌,我的错。我误解了文档,谢谢你帮助我
猜你喜欢
  • 2017-10-01
  • 2016-11-15
  • 2020-09-13
  • 1970-01-01
  • 2020-09-14
  • 2017-05-04
  • 2016-02-11
  • 2018-10-24
  • 1970-01-01
相关资源
最近更新 更多