FCM푸시 발송 할때 나누어 발송 방법 문의 드립니다.
본문
안녕하세요
푸시를 FCM 으로 구성 했는되요!!!
어제 발송이 갑자기 안되더라구요!!!
확인해보니 2000개가 넘어가니 불락이 걸린듯합니다.
이걸 900개씩 인터발형태로 보낼 방법이 있나요?
조언 구합니다.
감사합니다.
답변 2
저 같은 경우는...알람 허용 할때 미리 allmember라는 topic을 구독하는 형태로 처리
해놓은담에 전체 발송되는 fcm은 일반FCM말고 topic fcm발송으로 보내면
fcm에서 알아서 분산해서 처리해주는걸 이용했습니다....
아래 방법으로 진행 했습니다. 검토 부탁드립니다.
// 회원에서 토큰 가져오기
$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;
}
답변을 작성하시기 전에 로그인 해주세요.