제목 | google fcm을 이용한 그룹 메세지를 구현하는데... | ||
---|---|---|---|
카테고리 | 기타 | ||
글쓴이 | 터푸 | 작성시각 | 2017/08/03 17:16:41 |
|
|||
많은 분들께서 요즘 fcm 을 이용하여 android 푸시를 구현하고 계신것으로 알고 있습니다. 단인 대상에게 메세지 보내는 것이야 성공/실패를 알 수 있으므로 넘어가구요 문제는 그룹 메세지인데요 하나의 메세지를 천명에게 보내야 할 경우 루프를 만번 돌아서 보내는 것 보단 아래의 배열에 천개를 넣어서 한꺼번에 보냅니다. 여기서 token3 가 불량이라고 가정하고 배열이 3개라고 가정하면
$array_module_srl = array( 'token1', 'token2', 'token3' ); $fields = array( 'registration_ids' => $array_module_srl, // array type 'priority' => 'high', 'content_available' => true, 'notification'=> array( 'title' => '푸시테스트', 'body' => '푸시테스트내용', 'sound' => 'default', 'badge' => 0, 'click_action' => 'OPEN_ACTIVITY_1' ), 'data'=> array( 'link'=> 'http://test.com', 'badge'=> 0 ) ); $API_ACCESS_KEY = 'MY_APP_KEY'; $headers = array ( 'Authorization: key=' . $API_ACCESS_KEY, 'Content-Type: application/json', ); $ch = curl_init(); curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' ); curl_setopt( $ch,CURLOPT_POST, true ); curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) ); $result = curl_exec($ch ); curl_close( $ch ); echo $result; 구글에서 보내는 주는 결과는 다음과 같습니다. { "multicast_id":8579305692869767642, "success":2, "failure":1, "canonical_ids":0, "results":[ {"message_id":"0:1501749725874444%95759cfb95759cfb"} ,{"message_id":"0:1501749725875804%95759cfb95759cfb"} ,{"error":"InvalidRegistration"} ] } 문제는 token3 를 알아야 다시 보낼텐데 위의 내용으로 실패한 카운트만 알고 실제 어떤 토큰이 실패 했는지 알수가 없다는 것입니다. 라라벨 fcm 보내까 실패한 토큰 까지 다 결과로 파싱 하든데 혹시 구글에 요청 하는 방식이 틀린것인지 경험 있으신분 알려 주시면 감사하겠습니다. |
|||
다음글 | 업로드된 text pdf 를 이미지 pdf 로 변환하는... (2) | ||
이전글 | 똑같은 back버튼인데 하나는 되고 하나는 안되네요.ㅡ... (1) | ||
마PD
/
2017/08/03 17:42:41 /
추천
0
|
변종원(웅파)
/
2017/08/03 22:23:25 /
추천
0
라라벨 라이브러리 열어보시면 답 나올텐데요. ^^;
|
taegon
/
2017/08/08 14:48:26 /
추천
0
FCM이나 GCM 문서를 다시 확인해보시는 것이 좋을 합니다. 올려주신 오류 내용을 보면 success 2건, failure 1건으로 나와있고 해당 결과가 results로 주어 집니다. 순서대로요. 순서대로 파싱한다면 3번째 토큰이 오류난 걸 바로 확인이 가능합니다. https://firebase.google.com/docs/cloud-messaging/server?hl=ko 위의 링크에서 응답형식을 찾아보세요. |
음... 제가 알기론 fcm 발송 방식이 3가지가 있습니다.
전체발송, 토픽발송, 개별발송
토픽발송하면 성공/실패 카운트가 아예 안되더라구요. 전체발송을 해야 전체 건수 중 성공/실패가 나오게 되구요.
이때 메시지id를 가지고 fcm 점검하기 기능을 이용해서 상세 내역을 확인할 수 있었던거 같습니다.
아마 이게 api 로 구현되어 있을거고 그걸 가져오는게 아닐까요?