在PHP中创建JSON对象并通过Firebase推送通知发送

时间:2016-07-13 04:46:26

标签: php json firebase firebase-cloud-messaging

我是php新手。我正在用PHP实现Firebase推送通知服务。

所需的json对象就像

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

现在在firebase中我必须以这种格式发送我的数据,但我不知道如何制作这些数据的JSON对象并在firebase中使用这个对象。

如果我想使用ID数组,那么它将如何运作?

根据官方的firebase文档,他们没有定义使用ID数组的方法。

https://firebase.google.com/docs/cloud-messaging/downstream

2 个答案:

答案 0 :(得分:0)

创建一个与您希望发送到Firebase的格式相同的数组,如下所示

$arr = ['data'=> [
        'score'=> "5x1",
        'time'=> "15:10"
        ],
        "to" => "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
      ];

然后使用php函数json_encode(var);它将返回json对象。

json_encode($arr)
  

如果我想使用id的数组,那么这将如何工作。   我不确定这一点。

答案 1 :(得分:0)

如果您尝试使用PHP发送POST,可以使用cURL:

<?php
    $firebase_url = 'https://fcm.googleapis.com/fcm/send';
    $message = [
        "data" => [
            "score" => "5x1",
            "time" => "15:10"
        ],
        "to": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
    ];

    $json_message = json_encode($message);

    //open connection
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $firebase_url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_message);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Content-Length: ' . strlen($json_message)
    ]);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

    //execute post
    $result = curl_exec($ch);

    print $result;

我会建议使用Guzzle,它是第三方库,更清洁,更实用/可理解。安装它:

php composer.phar require guzzlehttp/guzzle

这里有一些例子:http://docs.guzzlephp.org/en/latest/