programing

Firebase Cloud Messaging last collapse_key가 수신되지 않았습니다(요금이 제한됩니까?).

magicmemo 2023. 6. 10. 08:42
반응형

Firebase Cloud Messaging last collapse_key가 수신되지 않았습니다(요금이 제한됩니까?).

저는 Firebase Cloud Messaging을 사용하여 매개 변수가 설정된 FCM Data 메시지를 사용하여 Android 클라이언트와 통신하는 서비스를 가지고 있습니다.접이식 키에 대한 설명서에서 다음을 참조하십시오.

오래된 스레드를 렌더링하는 새 메시지가 있는 경우 관련 메시지는 클라이언트 앱과 무관해지고 FCM이 오래된 메시지를 대체합니다.예를 들어 동기화로 보내기 또는 오래된 알림 메시지입니다.

이것이 제가 찾고 있는 것입니다.모든 업데이트가 필요한 것은 아니고 마지막 업데이트만 필요합니다.하지만 사용자가 온라인 상태라면 최대한 빨리 필요합니다.


그러나 HTTP 오류 코드가 발생하지 않는 이상한 속도 제한이 발생합니다.20개의 연속적인 데이터 메시지를 수행하고 안드로이드를 모니터링하기만 하면 꽤 쉽게 재생할 수 있습니다.FirebaseMessagingService.onMessageReceived:

for i in {1..20}; do 
  curl -v -X POST --header "Authorization: key=$SERVER_KEY" \
       --Header "Content-Type: application/json" \
       https://fcm.googleapis.com/fcm/send \
       -d "{\"to\":\"$CLIENT_TOKEN\", \
            \"data\":{\"counter\":\"$i\"}, \
            \"priority\":\"high\", \
            \"collapse_key\": \"test\" \
           }"
done

위의 bash 스크립트는 읽기가 조금 어렵지만, 저는 관심 있는 변수가 있습니다.

몇 번의 메시지를 받은 후에 (counter=~10) 중지되고 네트워크 상태를 전환하여 마지막 메시지를 수신해야 합니다.counter=20또한 마지막 메시지는 화재 기반 체크인이 요청될 때(일반적으로 ~10분) 몇 분 후에 나타납니다.

제거 중collapse_key위의 curl 명령에서 20개의 모든 메시지가 수신됩니다(여기서).counter={1..20}).


자, 질문은 다음과 같습니다.이거 벌레야?또는 인터페이스를 "남용"하기 때문에 (모든 요청이 다음을 다시 전송하므로) 종료(/환율 제한)하는 것입니까?200제가 괜찮다고 생각한 응답).

<?php
#API access key from Google API's Console
    define( 'API_ACCESS_KEY', 'YOUR-SERVER-API-ACCESS-KEY-GOES-HERE' );
    $registrationIds = $_GET['id'];
#prep the bundle
     $msg = array
          (
        'body'  => 'Body  Of Notification',
        'title' => 'Title Of Notification',
                'icon'  => 'myicon',/*Default Icon*/
                'sound' => 'mySound'/*Default sound*/
          );
    $fields = array
            (
                'to'        => $registrationIds,
                'notification'  => $msg
            );


    $headers = array
            (
                'Authorization: key=' . API_ACCESS_KEY,
                'Content-Type: application/json'
            );
#Send Reponse To FireBase Server    
        $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 Of FireBase Server
echo $result;

본문 섹션에 데이터를 입력합니다.

언급URL : https://stackoverflow.com/questions/41528270/firebase-cloud-messaging-last-collapse-key-not-received-rate-limited

반응형