마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FCM 푸시알림 질문입니다.

0 추천

<?php
 
 function send_notification ($tokens, $message)
 {
  $url = 'https://fcm.googleapis.com/fcm/send';
  $fields = array(
    'registration_ids' => $tokens,
    'data' => $message
   );

  $headers = array(
   'Authorization:key =
    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;
 }
 
 $conn = mysqli_connect("127.0.0.1","root","ybm123","fcm");
 $sql = "Select Token From users";
 
 $result = mysqli_query($conn,$sql);
 $tokens = array();
 
 if(mysqli_num_rows($result) > 0 ){
 
  while ($row = mysqli_fetch_assoc($result)) {
   $tokens[] = $row["Token"];
  }
 }
 mysqli_close($conn);

 $message = array("message" => "메시지 입력 구간");
 $message_status = send_notification($tokens, $message);
 echo $message_status;

 ?>

PHP에서 FCM을 통해서 안드로이드로 메시지 전송할 때 영어랑 숫자는 전송이 잘 되는데 한글 전송시

JSON_PARSING_ERROR: Unexpected token END OF FILE at position 0.

에러가 나옵니다. 받는 쪽하고 보내는 쪽에서 UTF-8을 사용해야 되는거 같은데 어떻게 설정을 바꾸는지 모르겠습니다. 다른 방법으로 한글 전송 방법이 있으면 알려주시면 감사하겠습니다.

Android연어 (160 포인트) 님이 2016년 8월 18일 질문

1개의 답변

+2 추천
 
채택된 답변
iconv("euc-kr","utf-8",$message) 로 euc-kr 에서 utf-8로 변경해주세요.
sadeva (21,550 포인트) 님이 2016년 8월 18일 답변
Android연어님이 2016년 8월 18일 채택됨
Warning: iconv() expects parameter 3 to be string, array given in
message가 array라서 경고 뜨는거 같은데 iconv사용하면 메시지가 아에 전달이 안됩니다.

        $message = array("message" => "입력 메시지");
    $message = iconv("euc-kr","utf-8",$message) ;
    $message_status = send_notification($tokens, $message);

이렇게 중간에 넣는게 맞나요?
$message = iconv("euc-kr","utf-8",$message) ;  
$message = array("message" => "입력 메시지");
$message_status = send_notification($tokens, $message);
이 순서 였네요... 답변 감사합니다.
...