답변 2개 / 댓글 3개
채택된 답변
+20 포인트
저 같은 경우는...알람 허용 할때 미리 allmember라는 topic을 구독하는 형태로 처리
해놓은담에 전체 발송되는 fcm은 일반FCM말고 topic fcm발송으로 보내면
fcm에서 알아서 분산해서 처리해주는걸 이용했습니다....
답변에 대한 댓글 1개
sukja
4년 전
아래 방법으로 진행 했습니다. 검토 부탁드립니다.
Copy
// 회원에서 토큰 가져오기
$query1 = " 회원 토큰 쿼리 ";
$result1 = mysqli_query($db_conn, $query1);
if(mysqli_num_rows($result1) > 0 ){
while ($row1 = mysqli_fetch_assoc($result1)) {
$tokens[] = $row1['token'];
}
}
$messge = "푸시메세지"
$regIdChunk=array_chunk($tokens,1000); // 1000를 나눠서 전송
foreach($regIdChunk as $RegId){
$message_status = send_notification($RegId, $messge);
}
echo $message_status;
// push send
function send_notification ($tokens, $messge)
{
$url = 'fcm send url';
$apikey = ' api key ';
$headers = array('Authorization:key='.$apikey,'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);
$fields = array('registration_ids' => $tokens, 'notification' => $messge );
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
// 푸시 결과 체크
$result = curl_exec($ch);
if ($result === FALSE)
{
$this->output->set_status_header(500); // FCM 푸시메시지 전송에 실패했습니다.
}
curl_close($ch);
echo $result;
}
답변에 대한 댓글 2개
ifelse
4년 전
이거는 1:1이나 여러기기보내기(최대20개) 보낼때 쓰는 방법이라서
이걸 sleep형태로 시간차를 두고 보내본적이 없어 뭐라 도움을 못드릴거
같습니다.
https://firebase.google.com/docs/cloud-messaging/android/topic-messaging?hl=ko
이걸 참고하시거나 그때 당시 카카오푸시API라는것도 괜찮을것 같긴했는데 적용해보진
못했습니다. 서버 -> 구글FCM으로 보내는걸 서버-> 카카오푸시API -> 구글FCM으로
가는형태로 만드는데 카카오푸시에서 분산해주는 방식인것 같은데..그것도
한번 참고해보시는것도 다른대안이지 않을까 싶습니다.
이걸 sleep형태로 시간차를 두고 보내본적이 없어 뭐라 도움을 못드릴거
같습니다.
https://firebase.google.com/docs/cloud-messaging/android/topic-messaging?hl=ko
이걸 참고하시거나 그때 당시 카카오푸시API라는것도 괜찮을것 같긴했는데 적용해보진
못했습니다. 서버 -> 구글FCM으로 보내는걸 서버-> 카카오푸시API -> 구글FCM으로
가는형태로 만드는데 카카오푸시에서 분산해주는 방식인것 같은데..그것도
한번 참고해보시는것도 다른대안이지 않을까 싶습니다.
답변을 작성하려면 로그인이 필요합니다.