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