2016-06-01 3 views
1

cron 작업을 사용하여 알림을 보내려고합니다. GCM에서 FCM으로 이전했습니다. 내 서버 측에서는 https://android.googleapis.com/gcm/send to https://fcm.googleapis.com/fcm/send을 변경했으며 registration_idsto으로 변경하는 데이터를 요청하는 방법을 업데이트했습니다. 전달 된 json을 확인하는 것이 유효한 json이지만 오류가 발생했습니다. Field "to" must be a JSON string. 이 문제를 해결할 여지가 있습니까?필드 "to"는 JSON 문자열이어야합니다. [Firebase]

여기 내 코드입니다

function sendNotificationFCM($apiKey, $registrationIDs, $messageText,$id) { 


    $headers = array(
      'Content-Type:application/json', 
      'Authorization:key=' . $apiKey 
    ); 

    $message = array(
      'to' => $registrationIDs, 
      'data' => array(
        "message" => $messageText, 
        "id" => $id, 
      ), 
    ); 


    $ch = curl_init(); 

    curl_setopt_array($ch, array(
      CURLOPT_URL => 'https://fcm.googleapis.com/fcm/send', 
      CURLOPT_HTTPHEADER => $headers, 
      CURLOPT_POST => true, 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_POSTFIELDS => json_encode($message) 
    )); 

    $response = curl_exec($ch); 
    curl_close($ch); 

    return $response; 
} 

답변

5

명시 적으로 string$registrationIDs 변환하십시오.

$message = array(
     'to' => (string)$registrationIDs, 
     'data' => array(
       "message" => $messageText, 
       "id" => $id, 
     ), 
); 

편집 답변

'to' 매개 변수는 string 필요 - 메시지의받는 사람이다.

$registrationIDs은 이런 식으로 'registration_ids'

편집에 코드를 (문자열 배열 등) 별도의 매개 변수를 전달할 수 :

$recipient = "YOUR_MESSAGE_RECIPIENT"; 

$message = array(
     'to' => $recipient, 
     'registration_ids' => $registrationIDs, 
     'data' => array(
       "message" => $messageText, 
       "id" => $id, 
     ), 
); 

$recipient

등록 토큰 인 경우 , 통보 키 또는 토픽.

이를 참조하십시오

+0

것'(문자열)'은'$ 같은 registrationIDs' 변환 "bk3RNwTe3H0 : CI2k_HHwgIpoDKCIZvvD, 1234asd : CI2k_HHwgIpoDKCIZvvD, bk3RNwTe3H0을 : asds_HwgIpoDKCIZvvD을"이? – natsumiyu

+0

아니요. 귀하의'$ registrationIDs' 문자열 배열입니다 같아요. ''to'' 키는 문자열을 필요로하고'$ registrationIDs'는 int 여야 만한다고 가정 했으므로 문자열로 변환하도록 제안했습니다. – jayeshsolanki93

+0

@mori 내 대답을 편집했습니다. 그것을 확인하십시오. – jayeshsolanki93

1

문자열로 만들어보십시오 :

Content-Type:application/json 
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA 

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "data" : { 
    ... 
}, 
} 
0

Firebase Cloud Messaging HTTP Protocol 나는 비슷한 문제가 있었다. Firebase 데이터베이스 (Firebase PHP Client 사용)에서 등록 토큰을 검색하면 토큰의 처음과 끝에 큰 따옴표가 붙습니다. 그래서 그것을 사용하기 전에 토큰에서 첫 번째와 마지막 문자를 제거해야했습니다. 아래 코드는 내 문제 해결

substr($registrationToken, 1, -1)