fcm 웹발송 푸시 해보신분 계신가요?..
본문
웹앱 개발을 외주줬는데, 거기선 php를 몰라서 웹발송구현이 안된다고 합니다.
그래서 제가 구현하는데,, 찾아보니 소스가 나오더군요. (소스는 맨아래입니다.)
근데.. 이렇게 하면 값이
{"multicast_id":3864532470311129046,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1583115542162563%5fd5bd8af9fd7ecd"}]}
이렇게 성공했다고 나오는데.. 안옵니다.
서버키랑 토큰값을 몇번 확인하고 했는데.. 안되네요..
파이어베이스 사이트에서 메시지를 발송하면 오고, 웹에서 구현한 저방식은 안옵니다..
혹시 해보신분 계신가요??...
<?php
define("GOOGLE_API_KEY", "서버키");function send_notification ($tokens, $message)
{
$url = 'https://fcm.googleapis.com/fcm/send';$fields = array(
'registration_ids' => $tokens,
'data' => $message
);
$headers = array(
'Authorization:key =' .GOOGLE_API_KEY,
'Content-Type: application/json'
);$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_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}curl_close($ch);
return $result;
}
$tokens = array("사용자토큰값");$myMessage = "testssssssssssssssssssssssssssssss";
$message = array(
"title" => "testest",
"body" => $myMessage
);
$message_status = send_notification($tokens, $message);
echo $message_status;
?>
답변 1
결과는 정상으로 떨어졌는데요. 발송코드도 제가 가진것과 거의 차이가 없고...
이럴땐 앱에서 디버깅을 해야합니다.
$message으로 전달된 값을 앱이 받아서 어떻게 notification으로 띄우느냐는 앱이 결정하거든요.
1) 먼저 파싱되기 이전에 수신된 데이터를 찍어보고(여기서 안찍히면 안오는 것),
2) 데이터는 수신되었는데 파싱결과를 알림으로 띄우는 과정이 안맞으면, 여길 맞춰줌
이런식으로 하셔야할 것 같아요.
키와 토큰을 맞게 넣으셨다면, 딱히 php에서는 할게 없는데,
굳이 한번 간단하게 수정해볼만한 것은
$message = array(
"title" => "testest",
"body" => $myMessage
);
를 $message = $myMessage; 이정도로 그냥 쌩으로 한번 보내보는 것 정도일까요.