Не отправлять push-уведомления

Я пытаюсь отправить сообщение через GCM, но ничего не отправляется, и хотя я не ошибаюсь за переменную:

$result

при печати это дает «to», я понятия не имею, почему.

Мой код для отправки сообщения:

private function sendMessageGcm($registration_id,$message){             
  $this->key = "xxxxxxxxxxxxxxxxxxxxxx";
  $data = array(
    "registration_id" => $registration_id,
    "data" => $message
  );
  $headers = array(
    "Content-Type:application/json",
    "Authorization:key=" . $this->key
  );
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send");
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
  $result = curl_exec($ch);
  if($result == false) {
    echo('Curl failed: ' . curl_error($ch));
  }
  curl_close($ch);
  $rtn["code"] = "000";//means result OK
  $rtn["msg"] = "OK";
  $rtn["result"] = $result;
  return($rtn);
}
0
задан 08.04.2016, 21:46
1 ответ

Хорошие, месяцы назад объедините той же формы Веб worker, чтобы использовать push notifications, в общем, кажется, бы не был плохой твой рукописный шрифт, но я высказываю тебе 2 мнения. С одной стороны я не вижу, что ты декодировал ответ (он приходит в формате JSON), и из-за другого я вижу, что ты помещаешь установленной формы (harcodeando) унифицированный указатель ресурса endpoint.

Проверять ответ

Пробует добавлять этот код в конце твоего рукописного шрифта, чтобы отлаживать ответ того же самого.

if (!empty($result)){
    $json_response = json_decode($result, true);
    if (json_last_error() == JSON_ERROR_NONE){
        if ($json_response["failure"] == 1){
            echo "Error";
        }else{
            echo "Success";
        }
    }
    print_r($result);
}

Endpoint унифицированный указатель ресурса

Apesar, которого в доказательствах весь унифицированные указатели ресурса различных endpoints кажутся равными (как будто только изменялся token) я подтверждаю тебе, что это не является консистентным. У меня есть база данных с около 20.000 endpoints и унифицированные указатели ресурса меняются. Поэтому, ты был бы должен делать этот названным curl используя endpoint клиента и не устанавливая это в установленном.

оставил Тебе очень полезную функцию, которую я был должен создавать в моем проекте, чтобы отделять любой endpoint в унифицированном указателе ресурса и TOKEN идентификация. В эту функцию главным образом ты перемещаешь его endpoint клиента и он возвращает тебе array с 2 данными, в котором ты нуждаешься, чтобы делать push.

function fn_get_endpoint($endpoint_url){
    if (empty($endpoint_url)){
        return false;
    }
    $tmp = explode("/", $endpoint_url);
    if(count($tmp) == 1){
        return false;
    }
    $response = array();
    $response["id"] = $tmp[count($tmp)-1];
    $response["endpoint"] = preg_replace("/\/$/", "", preg_replace("/".$response["id"]."/", "", $endpoint_url));
    return $response;
}
0
ответ дан 24.11.2019, 14:37

Теги

Похожие вопросы