выберите идентификатор устройства из таблицы базы данных и отправьте push-уведомления с помощью PHP - PullRequest
0 голосов
/ 15 сентября 2018

Когда мое приложение открывается в первый раз, я сохраняю идентификатор устройства пользователя в таблице в моей базе данных. Когда я выбираю из таблицы нижеприведенный скрипт для отправки push-уведомлений,

PHP SCRIPT

$stmt = $conn->query("SELECT device_id from devices");
$gcmRegIds = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    array_push($gcmRegIds, $row['device_id']);
}
//echo json_encode($gcmRegIds);

$url = "https://fcm.googleapis.com/fcm/send";
$token =$gcmRegIds;
$serverKey = 'AIzxxyBbAxxxxxx-rJ0zoTExxx1Q';
$title = "New Alert from NCSC";
$body = 'test';
$notification = array('title' =>$title , 'message' => $body);
$data = array('timestamp'=>''.time(), 'id' => '90','display' => 'alert');
$arrayToSend = array('to' => $token, 'notification' => $notification, 'data' => $data);
$json = json_encode($arrayToSend);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: key='. $serverKey;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
//Send the request
$response = curl_exec($ch);
//Close request
if ($response === FALSE) {
die('FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);

Я получаю эту ошибку. Поле "to" должно быть строкой JSON:

["fAx8pL2Ms9w:APA91bxxxxxnBidJg-kSxhA0DbfzmN9P6vrdxxxxxxxx-P"]

когда я меняю эту строку кода

$token = json_encode($gcmRegIds);

в формате JSON Я получаю эту ошибку

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

, что означает идентификатор, который я выбираю из базы данных, но когда я жестко кодирую идентификатор устройства в сценарии, он может отправить push-уведомление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...